歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux磁盤配額(Quota)與進階文件系統管理

Linux磁盤配額(Quota)與進階文件系統管理

日期:2017/2/28 16:13:11   编辑:Linux教程

Quota 的一般用途
1、針對WWW server,例如:每個人的網頁空間的容量限制
2、針對mail server,例如:每個人的郵件空間限制
3、針對file server,例如:每個人最大的可用網絡硬盤空間
針對 Linux 系統主機
1、限制某一群組所能使用的最大磁盤配額
2、限制某一用戶的最大磁盤配額
3、以Link的方式,來使郵件可以作為限制的配額

Quota 的使用限制
1、僅能針對整個filesystem
2、核心必須支持quota
3、Quota的記錄文件
4、只對一般身份使用者有效
你不能針對『某個目錄』來進行Quota的設計,但你可以針對『某個文件系統(filesystem)』來設定。

Quota 的規范設定項目
1、容量限制或檔案數量限制(block 或 inode)
限制inode用量:可以管理使用者可以建立的『檔案數量』
限制block用量:管理用戶磁盤容量的限制
2、柔性勸導與硬性規定(soft/hard):
hard:表示使用者的用量絕對不會超過這個限制值
soft:表示使用者在低於soft限值時,可以正常使用磁盤,但若超過soft切低於hard的限值,會有告警信息。
3、會倒數計時的寬限時間(grace time):
寬限時間只有在用戶的磁盤用量介於soft到hard之間時,才會出現且會倒數的一個東西。
當你的磁盤用量即將到達hard且超過soft時,系統會給予警告,但也會給一段時間讓用戶自行管理磁盤。一般預設的寬限時間為七天,如果七天內你都不進行任何磁盤管理,那麼soft限制值會即刻取代hard限值來作為quota的限制。

一個Quota實作范例
1、設一專題,5個人為一組,quota1,quota2,quota3,quota4,quota5 初始群組都為quotagroup
2、賬號的磁盤容量限制值:我想讓這五個用戶都能夠取得300M的磁盤使用量(hard),檔案數量則不予限制。此外,只要容量使用率超過250M,就予以警告(soft)
3、群組的限額:由於系統裡面還有其他用戶存在,因此我僅承認quotagroup這個群組最多僅能使用1G的容量,
4、寬限時間的限制:最後每個使用者在超過soft限制值之後,都還能夠有14天的寬限時間。

用腳本來創建賬號添加密碼等工作
[[email protected] ~]# vi addaccount.sh
#!/bin/bash
groupadd quotagroup
for username in quota1 quota2 quota3 quota4 quota5
do
useradd -g quotagroup $username
echo "$username" | passwd --stdin $username
done

實作Quota流程-1:文件系統支援
由於Quota僅針對整個文件系統來進行規劃,所以我們得先查一下,/home是否是個獨立的filesystem
[[email protected] ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 4.8G 740M 3.8G 17% /home <===/home 確實是獨立的
使用如下的方式來手動加入quota的支持
[[email protected] ~]# mount -o remount,usrquota,grpquota /home
[[email protected] ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
當你重新掛載時,系統會同步更新/etc/mtab這個檔案,所以你必須要確定/etc/mtab已經加入usrquota, grpquota的支持到你所想要設定的文件系統中。
[[email protected] ~]# vi /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
[[email protected] ~]# umount /home
[[email protected] ~]# mount -a
[[email protected] ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)

實作Quota流程-2:建立quota記錄文件
其實Quota是透過分析整個文件系統中,每個使用者(群組)擁有的檔案總數與總容量,再將這些數據記錄在該文件系統的最頂層目錄,然後在該記錄文件中再使用每個賬號(或群組)的限制值去規范磁盤使用量
quotacheck :掃瞄文件系統並建立Quota的記錄文件
[[email protected] ~]# quotacheck [-avugfM] [/mount_point]
選項與參數:
-a :掃瞄所有在/etc/mtab內,含有quota支持的filesystem
-u :針對用戶掃瞄檔案與目錄的使用情況,會建立aquota.user
-g :針對群組掃瞄檔案與目錄的使用情況,會建立aquota.group
-v :顯示掃瞄過程的信息
-f :強制掃瞄文件系統,並寫入新的quota配置文件
-M :強制以讀寫的方式掃瞄文件系統,只有在特殊情況下才會使用
quotacheck 的選頃你只要記得『 -avug 』一起下達即可

實作Quota流程-3:Quota啟劢、關閉與限制值設定
quotaon :啟動quota的服務
[[email protected] ~]# quotaon [-avug]
[[email protected] ~]# quotaon [-vug] [/mount_point]
選項與參數:
-u :針對使用者啟動quota(aquota.user)
-g :針對群組啟動quota(aquota.group)
-v :顯示啟動過程的相關訊息
-a :根據/etc/mtab內的filesystem設定啟動有關的quota,若不加-a的話,則後面需加上特定的那個filesystem
[[email protected] ~]# quotaon -auvg
/dev/hda3 [/home]: group quotas turned on
/dev/hda3 [/home]: group quotas turned on
quotaoff :關閉quota的朋務
[[email protected] ~]# quotaoff [-a]
[[email protected] ~]# quotaoff [-ug] [/mount_point]
選項與參數:
-a :全部的filesystem的quota都關閉
-u :僅針對後面接的那個/mount_point關閉user quota
-g :僅針對後面接的那個/mount_point關閉group quota
edquota :編輯賬號/群組的限值與寬限時間
[[email protected] ~]# edquota [-u username] [-g groupname]
[[email protected] ~]# edquota -t <==修改寬限時間
[[email protected] ~]# edquota -p 范本賬號-u新賬號
選項與參數:
-u :後面接賬號名稱。可以進入quota的編輯畫面(vi)去設定username的限制值
-g :後面接組名。可以進入quota的編輯畫面(vi)去設定groupname的限制值
-t :可以修改寬限時間
-p :復制范本。那個模板賬號為已經存在並且已設定好quota的使用者
[[email protected] ~]# edquota -u quota1
Disk quotas for user quota1 (uid 710):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 0 0 10 0 0

實作Quota流程-4:Quota限制值的報表
quota :單一用戶的quota報表
[[email protected] ~]# quota [-uvs] [username]
[[email protected] ~]# quota [-gvs] [groupname]
選項與參數:
-u :後面可以接 username ,表示顯示出該用戶的quota限制值,若不接username,表示顯示執行者的
-g :後面可接groupname,表示顯示出該群組的quota限制值
-v :顯示每個用戶在filesystem的quota值
-s :使用1024為倍數杢挃定單位,會顯示如M之類的單位
[[email protected] ~]# quota -uvs quota1 quota2
[[email protected] ~]# quota -gvs quotagroup
repquota :針對文件系統的限額做報表
[[email protected] ~]# repquota -a [-vugs]
選項與參數:
-a :直接到/etc/mtab搜尋具有quota標志的filesystem,並報告quota的結果
-v :輸出的數據將汗有filesystem相關的詳細信息
-u :顯示出用戶的quota限值
-g :顯示出個別群組的quota限值
-s :使用M, G為單位顯示結果
[[email protected] ~]# repquota -auvs

實作Quota流程-5:測試與管理
用戶測試:
[myquota1@www ~]# dd if=/dev/zero of=bigfile bs=1M count=270
看什麼時候達到報警,什麼達到閥值等
用報表方式查看
[[email protected] ~]# repquota -auv
warnquota :對超過限額者發出警告信
[[email protected] ~]# vi /etc/warnquota.conf
SUBJECT = NOTE: You are exceeding your allocated disk space limits <==第10行
CC_TO = "root@localhost" <==第11行
MESSAGE = Your disk usage has exceeded the agreed limits\ <==第21行
on this server|Please delete any unnecessary files on following filesystems:|
SIGNATURE = root@localhost <==第25行
# 可以將他改成如下的模樣啊!
SUBJECT = 注意:你在本系統上擁有的檔案容量已經超過最大容許限額
CC_TO = "root@localhost" <==除非你要寄給其他人,否則這個頃目可以不改
MESSAGE = 你的磁盤容量已經超過本機的容許限額,|\
請在如下的文件系統中,刪除不必要的檔案:|
SIGNATURE = 你的系統管理員 (root@localhost)
# 在MESSAGE內的 | 代表斷行的意思,反斜槓則代表連接下一行
Subject: 注意:你在本系統上擁有的檔案容量已經超過最大容許限額
To: [email protected]
Cc: [email protected]
setquota :直接於指令中設定quota限額
[[email protected] ~]# setquota [-u|-g] 名稱 block(soft) block(hard) inode(soft) inode(hard) 文件系統
觀察原始的quota5限值,並給予soft/hard分別為100000/200000
[[email protected] ~]# quota -uv quota5
等價於==
[[email protected] ~]# setquota -u quota5 100000 200000 0 0 /home


邏輯滾動條管理員(Logical Volume Manager)
Physical Volume == PV 實體滾動條
PV 階段
pvcreate :將實體partition建立成為PV
pvscan :搜尋目前系統裡面任何具有PV的磁盤
pvdisplay :顯示出目前系統上面的PV狀態
pvremove :將PV屬性移除,讓該partition且具有PV屬性
[[email protected] ~]# pvcreate /dev/hda{6,7,8,9}
[[email protected] ~]# pvscan
[[email protected] ~]# pvdisplay
Volume Group VG == 滾動條群組
VG 階段
vgcreate :就是主要建立VG的指令
vgscan :搜尋系統上面是否有VG存在
vgdisplay :顯示目前系統上面的VG狀態
vgextend :在VG內增加額外的PV
vgreduce :在VG內移除PV
vgchange :設定VG是否啟動(active)
vgremove :刪除一個VG
[[email protected] ~]# vgcreate [-s N[mgt]] VG名稱 PV名稱
選項與參數:
-s :後面接PE的大小(size),單位可以是m,g,t(大小寫均可)
[[email protected] ~]# vgcreate -s 16M jinqvg /dev/hda{6,7,8}
Volume group "jinqvg" successfully created
[[email protected] ~]# vgscan
[[email protected] ~]# vgdisplay
將剩余的PV(/dev/hda9)丟給jinqvg
[[email protected] ~]# vgextend jinqvg /dev/hda9
[[email protected] ~]# vgdisplay
Physical Extend PE == 實體延伸區塊
Logical Volume LV == 邏輯滾動條
LV 階段
lvcreate :建立LV啦
lvscan :查詢系統上面的LV
lvdisplay :顯示系統上面的LV狀態
lvextend :在LV裡面增加容量
lvreduce :在LV裡面減少容量
lvremove :刪除一個LV
lvresize :對LV進行容量大小的調整
[[email protected] ~]# lvcreate [-L N[mgt]] [-n LV名稱] VG名稱
[[email protected] ~]# lvcreate [-l N] [-n LV名稱] VG名稱
選項與參數:
-L :後面接容量,容量的單位可以是M,G,T等,要注意的是,最小單位為PE
-l :後面可以接PE的『個數』,而不是數量
-n :後面接的就是LV的名稱
將整個jinqvg通通分配給jinqlv
[[email protected] ~]# lvcreate -l 356 -n jinqlv jinqvg 或
[[email protected] ~]# lvcreate -L 5.56G -n jinqlv jinqvg
[[email protected] ~]# ll /dev/jinqvg/jinqlv
[[email protected] ~]# lvdisplay

三、文件系統階段
#1. 格式化、掛載與觀察我們的LV
[[email protected] ~]# mkfs -t ext3 /dev/jinqvg/jinqlv
[[email protected] ~]# mkdir /mnt/lvm
[[email protected] ~]# mount /dev/jinqvg/jinqlv /mnt/lvm
[[email protected] ~]# df
#2. 放大LV容量
1. 用fdisk設定新的具有8e system ID的partition
2. 利用pvcreate建置PV
3. 利用vgextend將PV加入我們的jinqvg
4. 利用lvresize將新加入的PV內的PE加入jinqlv中
5. 透過resize2fs將文件系統的容量確實增加
[[email protected] ~]# fdisk /dev/hda
[[email protected] ~]# pvcreate /dev/hda10
[[email protected] ~]# pvscan
[[email protected] ~]# vgextend jinqvg /dev/hda10
[[email protected] ~]# vgdisplay
[[email protected] ~]# lvresize -l +179 /dev/jinqvg/jinqlv
[[email protected] ~]# lvdisplay
[[email protected] ~]# dumpe2fs /dev/jinqvg/jinqlv
[[email protected] ~]# resize2fs [-f] [device] [size]
選項與參數:
-f :強制進行resize的動作
[device]:裝置的文件名
[size] :可以加也可以不加。如果加上size的話,那麼就必項要給予一個單位,譬如M,G等等
完整的將LV的容量擴充到整個filesystem
[[email protected] ~]# resize2fs /dev/jinqvg/jinqlv
結論:擴充LV時不需要umount lv,而且新擴充LV時,數據不會丟失。
卸載要從lv開始

Copyright © Linux教程網 All Rights Reserved