Linux 磁碟配額( Quota )
2024-07-21 02:36:04
供稿:網友
什么是 quota?
quota 就字面上的意思來看,呵呵!就是有多少『限額』的意思啦!假如是用在零用錢上面,就是『有多少零用錢一個月』的意思之類的。假如是在容量空間上面呢?以 linux 來說,呵呵!就是有多少容量限制的意思。
在 Linux 系統中,由于是多人多工的環境,所以會有多人共同使用一個硬碟空間的情況發生,假如其中有少數幾個使用者大量的占掉了硬碟空間的話,那勢必壓縮其他使用者的使用權力!因此治理員應該適當的開放硬碟的權限給使用者,以妥善的分配系統資源!避免有人抗議呀!比較常使用的幾個情況是:
·(1) 例如每個人的網頁空間的容量限制!
·(2) 每個人的郵件空間限制。
在 Linux 當中,使用來作為硬碟空間治理的就是所謂的 quota 這個咚咚啦!使用這個模組要有幾個步驟,底下就分別說說吧!另外要非凡注重的是,使用 quota 時有幾個基本的限制需要談一談:
·quota 實際在運作的時候,是針對『整個 partition』進行限制的,例如:假如你的 /dev/hda5 是掛載在 /home 底下,那么在 /home 底下的所有目錄都會受到限制!
·Linux 系統核心必須有支援 quota 這個模組才行:假如您是使用 Mandrake 的預設核心,嘿嘿!那恭喜你了,你的系統已經預設有開放 quota 這個模組啰!假如您是自行編譯核心的,那么請非凡留意您是否已經『真的』開啟了 quota 這個模組?否則底下的功夫將全部都視為『白工』。至于核心編譯的過程我們會在未來進行說明呦!
·目前新版的 Linux distributions 如: Mandrake 9.0 與 Red Hat 8.0 等使用的是 Kernel 2.4.xx 的核心版本,這個核心版本支援新的 quota 模組,使用的預設檔案( aquota.user, aquota.group )將不同于舊版本的 quota.user, quota.group !(多了一個 a 呦!)而由舊版本的 quota 可以藉由 convertquota 這個程式來轉換呢!
quota 這支程式的限制內容主要分為底下幾個部分:
·soft :這是最低限制容量的意思,使用者在寬限期間之內,他的容量可以超過 soft ,但必需要寬限時間之內將磁碟容量降低到 soft 的容量限制之下!
·hard :這是『絕對不能超過』的容量!跟 soft 相比的意思為何呢?通常 hard limit 會比 soft limit 為高,例如網路磁碟空間為 30 MB ,那么 hard limit 就設定為 30MB ,但是為了讓使用者有一定的警戒心,所以當使用空間超過 25 MB 時,例如使用者使用了 27 MB 的空間時,那么系統就會警告使用者,讓使用者可以在『寬限時間內』將他的檔案量降低至 25 MB ( 亦即是 soft limit )之內!也就是說, soft 到 hard 之間的容量其實就是寬限的容量啦!可以達到針對使用者的『警示』作用!
·寬限時間:那么寬限時間就可以很清楚的知道含意是什么了!也就是當您的使用者使用的空間超過了 soft limit ,卻還沒有到達 hard limit 時,那么在這個『寬限時間』之內,就必需要請使用者將使用的磁碟容量降低到 soft limit 之下!而當使用者將磁碟容量使用情況超過 soft limit 時,『寬限時間』就會自動被啟動,而在使用者將容量降低到 soft limit 之下,那么寬限時間就會自動的取消啰!
基本的 quota 指令:
在開始進行 quota 的實作之前,我們得來了解一下 quota 要使用的指令啰!基本上分為兩種,一種是查詢功能(quota, quotacheck, quotastats, warnquota, repquota),另一種則是編輯 quota 的內容( edquota, setquota )。底下我們來談一談這些基本的指令吧!
· quota
語法:
[root @test /root ]# quota [-guvs] [user,group] 參數說明: -g :顯示 group 群組 -u :顯示 user -v :顯示 quota 的值 -s :選擇 inod 或 硬碟空間來顯示 范例: [root @test /root ]# quota -guvs <==顯示目前執行者(就是 root )的 quota 值 [root @test /root ]# quota -uvs test <==顯示 test 這個使用者的 quota 值
說明:
這個指令僅是使用來『顯示(display)』目前某個群組或者某個使用者的 quota 限值!您可以使用來觀察一下呦!
· quotacheck
語法:
[root @test /root ]# quotacheck [-auvg] /yourpath 參數說明: -a :掃瞄所有在 /etc/mtab 里頭已經 mount 的具有 quota 支援的磁碟 -u :掃瞄使用者的檔案與目錄 -v :顯示掃瞄過程 -g :掃瞄群組使用的檔案與目錄 范例: [root @test /root ]# quotacheck -uvg /home <==開始掃瞄 /home 這一個獨立磁區的目錄 quotacheck: Scanning /dev/hda3 [/home] done <==顯示 /home 磁區為 /dev/hda3 ! quotacheck: Checked 35 Directories and 342 files <==掃瞄完畢,有 35 目錄與 342 檔案。
[root @test /root ]# ls -l /home <==查看一下 /home 這個目錄底下,兩個檔案產生了! -rw------- 1 root root 7168 May 6 18:37 aquota.group -rw------- 1 root root 7168 May 6 18:37 aquota.user
說明:
這這個指令主要的目的在掃瞄某一個磁碟的 quota 空間,他會針對該磁碟進行掃瞄,并且,由于該磁碟若持續運作時,可能掃瞄的過程中,檔案可能會增減,造成 quota 掃瞄的錯誤發生,因此,當使用 quotacheck 時,該磁碟將『自動被設定成為唯獨磁區(read-only);至于掃瞄完畢之后,掃瞄所得的磁碟空間結果會寫入該磁區最頂端(例如:在我的例子中,掃瞄 /home 這個 /dev/hda3 的磁區,假如是初次掃瞄,那么掃瞄完畢之后會產生 aquota.user 與 aquota.group ,會放置在 /home/aquota.xxx 底下!而假如是建立 quota 后的掃瞄,那么就會更新這兩個檔案!)另外, Linux 也非凡強調 quota 在使用的時候,需要非凡注重在 reboot 時,得先將 quota 關閉才好!
· edquota
語法:
[root @test /root ]# edquota [-u user] [-g group] [-t] [root @test /root ]# edquota -p user_demo -u user 參數說明: -u :編輯 user 的 quota -g :編輯 group 的 quota -t :編輯寬限時間(就是超過 quota 值后,還能使用硬碟的寬限期限) -p :copy 范本(以建立好的使用者或群組)到另一個使用者(或群組) 范例: [root @test /root ]# edquota -u test <==設定 test 這個使用者的 quota 數值,會直接進入 vi 畫面 Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 0 0 5 0 0 修改一下成為: Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 50005000 5 50005000 [root @test /root ]# edquota -p test -u test2 <==將 test 這個人的 quota 資料復制給 test2 這個人! [root @test /root ]# edquota -t <==設定寬限時間,也就是超過 quota 值之后的修正時間啦! 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/hda3 0minutes 0minutes 上面的 0minutes 可以改成 60minutes 即可!也就是 60 分鐘之內必須要趕緊整理硬碟的意思!
說明:
這個指令就是在編輯每一個『個人』或者是『群組』的 quota 數值!通常我們以 edquota -u username 或者是 edquota -g groupname 來編輯個人與群組的 quota 設定值。不過,或許您會覺得一個一個分配似乎很慢的樣子!那么您也可以直接 copy 一個人的設定值給其他人,就如同上面第二個例子,利用已經建立好的 test 來建立 test2 這個人的 quota 限額!這個指令可是很重要的呦!另外,上面有幾個重要的資訊,我們來談一談吧:
1.filesystem:這個是那個 partition 的意思!以上面來說,就是 /dev/hda3 啰!
2.blocks:這個是目前使用者 test ( uid 501 )在 /dev/hda3 這個 filesystem (參考上面一個資訊),所耗掉的磁碟容量,也就是目前的使用掉的空間啦!單位是 Kbytes 喔!這個資訊是 quota 程式自己計算出來的,所以請不要修改他!
3.soft 與 hard :這個是目前的 test 在這個 filesystem 之內的 quota 限制值!至于 soft 與 hard 的意思就如同 14-1 節最后面提的那個意思啦!當 soft 與 hard 數值為 0 的時候,表示『沒有限制』的意思!而數值的單位仍是 Kbytes 喔!
4.inodes :是目前使用掉 inode 的狀態,也是 quota 自己計算出來而得到的,所以不要去變更他。一般而言, inode 不輕易控制,所以您可以不必去限制 inode 呢!
· quotaon
語法:
[root @test /root ]# quotaon [-a] [-uvg directory] 參數說明: -a :全部的 quota 設定都啟動(會自動去尋找 /etc/mtab 的設定) -u :使用者的 quota 啟動 -g :群組的 quota 設定啟動 -s :顯示訊息 范例: [root @test /root ]# quotaon -a <==全部的 quota 限制都啟動 [root @test /root ]# quotaon -uv /home <==只有啟動 /home 底下的使用者 quota 限額,group 不啟動!
說明:
這個指令是在啟動 quota 的!不過,由于這個指令是啟動 aquota.group 與 aquota.user 的,所以您就必須要先完成 qutoacheck 的工作了!然后簡單的下達 quotaon -a 即可啟動!
· quotaoff
語法:
[root @test /root ]# quotaoff -a 參數說明: -a :全部的 quota 設定都關閉(會自動去尋找 /etc/mtab 的設定) 范例: [root @test /root ]# quotaoff -a <=