一、介紹
磁盤配額(quota)就字面意義來看,就是限額的意思。即對Linux的容量空間而言,就是有多少容量限制的意思。
磁盤配額在使用上也有一些限制:
l 僅針對整個分區:磁盤配額實際運行時,是針對“整個分區”進行限制的,例如,如果/dev/hda5載入在/home下,那麼,在/home下面的所有目錄都會受到限制。
l 只針對一般身份用戶有效,root用戶就不能設置磁盤配額,應爲他擁有整個系統所有的數據。
磁盤配額程序針對整個分區的限制主要分爲下面幾個部分:
l 最低限制(soft): 這是最低限制容量的意思,用戶在寬限期間之內,其容量可以超過soft,但需要寬限時間之內將磁盤容量降低到soft的容量限制之下
l 最高限制(hard):最高限制就是“絕對不能超過”的容量。通常最高限制會比最低限制高
l 寬限時間:當用戶使用的空間超過了soft,卻還沒有到達hard時,那麼在這個“寬限時間”之內,就必需要請用戶將使用的磁盤容量降低到soft之下。而當用戶將磁盤容量使用情況超過soft時,“寬限時間”就會自動被啓動,而在使用者將容量降低到soft之下,那麼寬限時間就會自動的取消。
例如網絡磁盤空間爲30MB ,那麼hard就設置爲30MB,但爲了讓用戶注意,所以當使用空間超過25MB時,如用戶使用了27MB的空間時,那麼系統就會警告用戶,讓用戶可在“寬限時間內”將他的文件容量降低至25MB(亦即是soft)之內。也就是說,soft到hard之間的容量其實就是寬限的容量
二、 實例講解
整個範例的說明如下:
我們假設主機裏頭有quser1與quser2這兩個用戶,且他們兩個都掛在qgroup這個用戶組下;
每個用戶總共有50MB的磁盤空間(不考慮inode)限制。並且soft爲45MB;
而寬限時間設定爲1天,也就是說,這兩人可以突破45MB的限制,但是在一天之內必須要將多餘的文件刪除,否則將無法使用剩下的空間;
gquota這個用戶組考慮最大限額,所以設定爲90MB
1. 準備好測試環境,建立用戶與用戶組 [root@redflag ~]# groupadd qgroup
[root@redflag ~]# useradd -g qgroup quser1
[root@redflag ~]# useradd -g qgroup quser2
[root@redflag ~]# passwd quser1
[root@redflag ~]# passwd quser2
2. 建立文件系統的磁盤配額支持
由於需要在ext2/ext3的Linux擴展格式文件系統,纔可以啓動磁盤配額完整的支持,所以,建議將準備啓用磁盤配額的磁盤啓動參數寫入磁盤配額的磁盤設置(/etc/fstab)。必須注意,最好不要以根目錄進行磁盤配額,另外,不要針對root做磁盤配額。
這裏需要補充一個知識點,一般來說我們是通過編輯/etc/fstab後,再重新載入文件系統的方法。通過編輯/etc/fstab來,改變/etc/mtab。 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/sda3 7516200 4181780 2946452 59% / /dev/sda1 101086 16915 78952 18% /boot tmpfs 127820 0 127820 0% /dev/shm /dev/sdb1 972404 17648 905360 2% /mnt/disk2
[root@redflag ~]df
我的/mnt/disk2是獨立的分區,並且它的設備名爲/dev/sdb1。那麼,我必須啓動/mnt/disk2這個/dev/sdb1的磁盤配額文件格式。通過vi編輯/etc/fstab文件來實現。
[root@redflag ~]# vi /etc/fstab LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0 /dev/sdb1 /mnt/disk2 ext3 defaults,usrquota,grpquota 1 2
這樣就加入了磁盤配額的磁盤格式了。不過,由於真正的磁盤配額在讀取時是讀取/etc/mtab文件,這個文件需要重新啓動之後才能使用/etc/fstab的新數據改寫,所以這個時候可以選擇:
l 重新啓動 (reboot)
l 重新載入文件系統來驅動設置值,操作如下:
3. 掃描磁盤的用戶使用狀況,併產生重要的aquota.group和aquota.user
[root@redflag ~]# umount /dev/sdb1
[root@redflag ~]# mount -a
[root@redflag ~]# grep '/mnt/disk2' /etc/mtab
/dev/sdb1 /mnt/disk2 ext3 rw,usrquota,grpquota 0 0
命令介紹:
[root@redflag ~]# quotacheck [-avug] [/mount_point]
參數:
-a:掃描所有在/etc/mtab內含有磁盤配額支持的文件系統,加上此參數後,/mount_point可不必寫,因爲掃描所有的文件系統了
-u:針對用戶掃描文件與目錄的使用情況,會建立aquota.user
-g:針對用戶組掃描文件與目錄的使用情況,會建立aquota.group
-v:顯示掃描過程的信息。
quotacheck: Scanning /dev/sdb1 [/mnt/disk2] done quotacheck: Checked 3 directories and 4 files [root@redflag ~]# ll /mnt/disk2/ 總計 32 -rw------- 1 root root 7168 04-04 20:28 aquota.group -rw------- 1 root root 7168 04-04 20:28 aquota.user drwx------ 2 root root 16384 03-25 11:48 lost+found
[root@redflag ~]# quotacheck –avug
4. 啓動磁盤配額的限額
下面就要啓動磁盤配額。
[root@redflag ~]# quotaon –avug
5. 編輯用戶與用戶組的可使用空間
命令介紹:
[root@redflag ~]# edquota [-u user] [-g group] [-t]
[root@redflag ~]# edquota -p user_demo -u user
參數說明:
-u:編輯 user 的 quota -g:編輯 group 的 quota
-t:編輯寬限時間(就是超過 quota 值後,還能使用硬盤的寬限期限)
-p:copy 模板(以建立好的用戶或用戶組)到另一個用戶(或用戶組)
6. 設置啓動時啓動磁盤配額
[root@redflag ~]# edquota -u quser1
[root@redflag ~]# vi /etc/rc.d/rc.local
/sbin/quotaon –avug