Linux磁盤配額


轉自:中國IT實驗室 

 

Quota使用的方面很廣,不過,一般的用途有以下這些:

 

限制某一群組所能使用的最大磁盤配額(使用群組限制):
你可以將你的系統上的用戶分門別類,有點像是目前很流行的付費與免付費會員制的情況,你比較喜好的那一群的使用配額就可以給高一些!呵呵!^_^ 
限制某一用戶的最大磁盤配額(使用用戶限制):
在限制了群組之后,您也可以再繼續針對個人來進行限制,使得同一群組之下還可以有更公平的分配!
以Link的方式,來使郵件可以作為限制的配額(更改/var/spool/mail這個路徑):
如果是分為付費與免付費會員的『郵件主機系統』,是否需要重新再規划一個硬盤呢?也不需要啦!直接使用Link的方式指向/home(或者其它已經做好的quota磁盤)就可以啦!這通常是用在原本規划不好,但是卻又不想要更動原有主機架構的情況中啊!

 

那么quota從開始准備filesystem的支持到整個設定結束的主要的步驟大概是:
1. 設定partition的filesystem支持quota參數:
由於quota必須要讓partition上面的filesystem支持才行,一般來說,支持度最好的是ext2/ext3,啟動filesystem支持quota最簡單就是編輯/etc/fstab,使得准備要開放的quota磁盤可以支持quota;
2. 建立quota記錄文件:
剛剛前面講過,整個quota進行磁盤限制值記錄的檔案是aquota.user/aquota.group,要建立這兩個檔案就必須要先利用quotacheck掃描才行喔!所以,接下來的步驟就是:使用quotacheck來掃描一下我們要使用的磁盤;
3. 編輯quota限制值數據:
再來就是使用edquota來編輯每個使用者或群組的可使用空間;
4. 重新掃描與啟動quota:
設定好quota之后,建議可以再進行一次quotacheck,然后再以quotaon來啟動吧!

 

整個quota設定的步驟就只是這樣而已,簡單吧!我們下面就直接來用一個范例介紹一下整個流程,好讓您更清楚的了解到整個步驟!范例是這樣的:
1. Linux主機里面主要針對quser1及quser2這兩個用戶來進行磁盤配額,且這兩個用戶都是掛在qgroup群組里面的。
2. 每個使用者總共有50MB的磁盤空間(不考慮inode)限制!並且soft limit為45MB;
3. 而寬限時間設定為1天,也就是說,這兩個人可以突破45MB的限制,但是在一天之內必須要將多余的文件刪除,否則將無法使用剩下的空間(也就是說,這個賬號大概就不能進行新建文件的工作了);
4. gquota這個群組考慮最大限額,所以設定為90MB好了!

 

多說無用,我們就實際來進行!
1. 准備好測試的環境,用戶與群組的建立:
這兩個賬號應該是不存在我們的系統的,所以,趕緊將他設置上去吧!
[root@linux ~]# groupadd qgroup
[root@linux ~]# useradd -m -g qgroup quser1
[root@linux ~]# useradd -m -g qgroup quser2
[root@linux ~]# passwd quser1
[root@linux ~]# passwd quser2
2. 建立好filesystem的quota支持:
由於quota較完整的支持是需要在ext2/ext3的Linux文件系統下才可以啟動,所以建議你就必須要將准備開啟quota的磁盤啟動參數,寫入 quota的磁盤設定才行(/etc/fstab)!以例子而言,想要在/disk2下進行quota的限制quser1,quser2這兩個用戶!這是 因為這個/disk2是一個獨立的扇區,這可以使用df來查詢。此外,必需特別留意的是,最好不要以根目錄亦即是/進行quota!否則容易有些問題!另 外,不要針對root做quota!反正做了也沒用!
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3193292 2451720 57% /
/dev/hdb1 28267608 77904 26730604 1% /disk2
/dev/hda5 9492644 227252 8775412 3% /disk1
嗯!/disk2是獨立的partition,並且他的設備名為/dev/hdb1,好了!那么我就必須要啟動/disk2這個/dev/hdb1的 quota檔案格式,好了!那么由於文件格式的設定是寫在/etc/fstab里頭,所以我們以vi來編輯他吧!只要在/etc/fstab里頭增加了 usrquota、grpquota就可以啦!(注:請特別留意,這兩個項目請『務必』不要寫錯了!請在寫入/etc/fstab之前好好的再次檢查,因 為寫錯之后,很有可能造成系統無法開機,雖然寫錯的機率不高,但是很有可能!)
[root@linux ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/disk1 /disk1 ext3 defaults 1 2
LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2
/dev/hda3 swap swap defaults 0 0
注意到我們所需要設定的那個/disk2的那一行,在第四字段多了usrquota,grpquota注意,在『defaults,usrquota,grpquota』之間都沒有空格!
這樣就算加入了quota的磁盤格式了!不過,由於真正的quota在讀取的時候是讀取/etc/mtab 這個檔案的,偏偏這一個檔案需要重新開機之后才能夠以/etc/fstab的新數據進行改寫!所以這個時候你可以選擇:
重新開機(reboot);
重新remount filesystem來啟動設置!
對不太喜歡重新開機的人,可以這樣做:
[root@linux ~]# umount /dev/hdb1
[root@linux ~]# mount -a
[root@linux ~]# grep '/disk2' /etc/mtab
/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0
事實上,也可以利用mount的remount功能!
[root@linux ~]# mount -o remount /disk2
這樣我們就已經成功的將filesystem的quota功能加入了!另外,在這里是以ext3這個磁盤格式來測試quota的!
3. 掃描磁盤的用戶使用狀況,並產生重要的aquota.group與aquota.user:
接下來就是要來掃描一下我們所需要的磁盤到底有沒有多余的空間可以讓我們來設定quota呢?並且將掃描的結果輸出到這個磁盤的最頂層去(也就是 /disk2下)這個時候就需要quotacheck這個命令的幫忙了!使用quotacheck就可以輕易的輸出了將所需要的數據!並在/disk2下 會產生aquota.group與aquota.user這兩個文件!
[root@linux ~]# quotacheck -avug
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files
[root@linux ~]# ll /disk2
-rw------- 1 root root 6144 Sep 6 11:44 aquota.group
-rw------- 1 root root 6144 Sep 6 11:44 aquota.user
使用quotacheck就可以輕易的將所需要的數據給他輸出了!但是很奇怪的是,在某些Linux 版本中,不能夠以aquota.user(group)來啟動quota,這有可能是因為舊版quota的關系,所以就另外做了一個link文件來欺騙quota:
[root@linux ~]# cd /disk2
[root@linux ~]# ln -s aquota.user quota.user
[root@linux ~]# ln -s aquota.group quota.group
除非您的Linux distributions是比較舊的版本,否則不會有這個問題,所以,這個動作你不一定要進行!
4. 啟動quota的限額:
再來就是要啟動quota啦!啟動的方式也是很簡單的!就是使用quotaon -av即可:
[root@linux ~]# quotaon -avug
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
注意:要看到上面有個turned on的出現,才是真的成功了!
5. 編輯使用者的可使用空間:
由於我們有兩個用戶要設置,先來設置quser1好了,使用edquota就對了:
[root@linux ~]# edquota -u quser1
Disk quotas for user quser1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 45000 50000 0 0 0
再次強調的是,因為我的/disk2里面並沒有任何數據存在,所以,在上面這個表格當中,blocks與inodes才會都是0,如果您是使用/home 來進行quota設定的,那么blocks/inodes肯定不會是0,這里要特別留意的。好了,上面特殊字體的部分就是我們的設定了,分別是45000 及50000,那個單位是KBytes啦,轉成MBytes應該是要除以1024才對,不過,簡單算一下就好了,不用太介意!^_^。然后將quser1 的設定直接復制給quser2吧!
[root@linux ~]# edquota -p quser1 quser2
接下來要來設定寬限時間,還是使用edquota!
[root@linux ~]# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hdb1 1days 7days
將時間改為1天(原本是7days改成1days),好了!查詢一下是否真的有設定進去呢?使用quota -v來查詢:
[root@linux ~]# quota -vu quser1 quser2
Disk quotas for user quser1 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
Disk quotas for user quser2 (uid 503):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
特別注意到,由於我們的使用者尚未超過45MB,所以grace(寬限時間)就不會出現啦!這樣很夠清楚了吧?!
6. 編輯群組可使用的空間:
[root@linux ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 80000 90000 0 0 0
[root@linux ~]# quota -vg qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 80000 90000 0 0 0
這樣就設定好了group的quota!同樣的,因為整個群組的總使用量還沒有到達80000KBytes,當然那個grace就不會有任何信息顯示了! 但這個地方倒是有很多朋友問到一個小問題,那就是『為什么我兩個用戶quser1、quser2的設定值在soft與hard分別是45/50MB,但為 何你的group總量(hard)設定僅有90MB呢?』,也就是說,當某個用戶用了50MB的量,那另一個不就最多可以使用到40MB而已?原因何在 啊?
這么說好了,如果是小型的系統,由於用戶並不是很多,我們可以針對每個人來進行quota的設定值,所以,當然針對users來進行設置即可,不需要額外的設定group的quota設置啦。
但如果換個角度來思考,假設您所處的公司人員比較多且分工較細,因此,我們可能無法真正了解每個用戶的需求,此時,針對每個用戶來設定可能就比較麻煩一 點。那么我們反過來說,可以針對每個部門(group)來進行quota的設定,因為部門的需求直接跟部門的負責人詢問就好了,比較容易,而該部門的用戶 quota設定當然可以高一點,因為,可能某些用戶有較為獨特的需求啊!反正只要符合group的限制即可,該部門如果超過整個group quota限制值,呵呵!讓他們自己去處理即可!^_^
7. 設定開機時啟動quota:
這個部分就不需要擔心了,因為Fedora Core 4與Red Hat系列的開機script(/etc/rc.d/rc.sysinit)已經將quota的偵測寫入在里頭,因此,在預設的情況下,quota是會主 動的被啟動的。不過,如果你想要手動的強制quota在開機啟動一遍,那么可以使用vi去編輯/etc/rc.d/rc.local,在里面加入一行(直 接加在最后一行即可):
[root@linux ~]# vi /etc/rc.d/rc.local
/sbin/quotaon -avug
如果要關閉quota就是用quotaoff吧!沒錯!這樣就將quota設定完畢了!很簡單吧!!(如果是SuSE Server 9的話,可能就要去修改/etc/init.d/boot.local這個檔案了!)
8. 利用repquota顯示更完整的quota結果報告:
事實上,除了quota可以用來觀察用戶與群組使用的quota限制值之外,其實,我們還可以使用更詳細的quota報告指令,就是repquota這個命令呢!他的基本用法是這樣的:
[root@linux ~]# repquota -a [-vug]
參數:
-a:直接到/etc/mtab搜尋具有quota標志的filesystem,並報告quota的結果;
-v:輸出所有的quota結果,而非僅下達指令者自己的quota限值;
-u:顯示出使用者的quota限值(這是默認值);
-g:顯示出個別群組的quota限值。
范例:
范例一:查閱系統內所有的具有quota的filesystem的限值狀態:
[root@linux ~]# repquota -av
*** Report for user quotas on device /dev/hdb1
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 77888 0 0 4 0 0
quser1 -- 0 45000 50000 0 0 0
quser2 -- 0 45000 50000 0 0 0
Statistics: <==這是所謂的系統相關信息,用-v才會顯示
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
范例二:僅列出user與group的quota限值:
[root@linux ~]# repquota -aug
*** Report for user quotas on device /dev/hdb1
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 77888 0 0 4 0 0
*** Report for group quotas on device /dev/hdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 77888 0 0 4 0 0

 

根據這些信息,您就可以知道目前的限制情況了!^_^

 

完! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM