Linux 磁碟配額( Quota )[1]

[入库:2005年9月19日] [更新:2007年3月25日]

本文简介:

鸟哥的

什麼是 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 :掃瞄群組使用的檔案與目錄 -m :強制進行 quotacheck 範例: 範例一、要針對 /home 這個 partition 進行 quota 的規劃: [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   關於 quotacheck 發生錯誤的解決方法: # 有些時候,在新版的 Linux distribution 當中,進行 quotacheck 時,可能會出現 # quotacheck: Cannot get quotafile name for /dev/hda3 # quotacheck: Cannot get quotafile name for /dev/hda3 # 這可能是新版的 quota 在設計時的小問題,解決的方法有兩個: [root@test root]# quotacheck -uvgm # 加上 -m 的參數來強制進行,或者是: [root@test root]# touch /home/aquota.user; touch /home/aquota.group [root@test root]# quotacheck -uvg # 既然 quotacheck 找不到 quotafile ,那麼我就手動將 quotafile 建立起來即可! # 然後再重新進行 quotacheck 一次即可! # 注意喔!因為我的 /dev/hda3 對應到 /home ,所以當然就是在 /home 底下建立起 qoutafile 了! 說明: 這這個指令主要的目的在掃瞄某一個磁碟的 quota 空間,他會針對該磁碟進行掃瞄,並且,由於該磁碟若持續運作時,可能掃瞄的過程中,檔案可能會增減,造成 quota 掃瞄的錯誤發生,因此,當使用 quotacheck 時,該磁碟將『自動被設定成為唯獨磁區(read-only);至於掃瞄完畢之後,掃瞄所得的磁碟空間結果會寫入該磁區最頂端(例如:在我的例子中,掃瞄 /home 這個 /dev/hda3 的磁區,如果是初次掃瞄,那麼掃瞄完畢之後會產生 aquota.user 與 aquota.group ,會放置在 /home/aquota.xxx 底下!而如果是建立 quota 後的掃瞄,那麼就會更新這兩個檔案!)另外, Linux 也特別強調 quota 在使用的時候,需要特別注意在 reboot 時,得先將 quota 關閉才好! 此外,由於新版的 Linux distribution 在 quota 的設計上似乎有點小問題,有時候無法完整的進行 quotacheck ,發生如同上表的情況,解決的方法就是主動手動的建立 quotafile 即可喔! -------------------------------------------------------------------------------- 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

本文关键:Linux 磁碟配額( Quota )
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top