要使用quota首先得有這個軟件,現在一般的rh發行版都會帶有這個軟件的。使用rpm來安裝它,
然後注意如果你重析編譯了內核那麼必須選中內核中的quota支持。
實現磁盤配額
除了監視系統上使用的磁盤空間(請參閱第 26.3.1 節),你還可以通過實現磁盤配額來限制磁盤空間,因此當用戶使用了過多的磁盤空間或分區將要充滿時,系統管理員就會接到警告。
磁盤配額可以為個體用戶配置也可以為用戶組配置。這種靈活性既能夠給每個用戶分配一個較小的配額來處理“個人”文件(如電子郵件和報告),又允許了他們正從事的項目能夠擁有較大的配額(假定項目有自己的組群)。
除此以外,配額不僅能夠被設置成對所用磁盤塊數量的控制,還能夠被設置成對內節點數量的控制。由於內節點包含文件相關的信息,對內節點的控制能夠控制可被創建的文件數量。
要實現磁盤配額,quota RPM 必須在系統上被安裝。 關於安裝 RPM 軟件包的詳情,請參閱第 V 部分。
配置磁盤配額
要實現磁盤配額,請使用以下步驟:
1.
修改 /etc/fstab來啟用每個文件系統的配額
2.
重新掛載文件系統
3.
創建配額文件,重新生成磁盤用量表
4.
分配配額
以上步驟在下面各節中被詳細討論。
1. 啟用配額
以根用戶身份使用你喜歡的編輯器來給需要配額的文件系統添加 usrquota 和(或)grpquota 選項:
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda2 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
在上面的例子中,/home 文件系統上啟用了用戶和組群配額。
重新掛載文件系統
添加了 userquota 和 grpquota 選項後,重新掛載每個相應 fstab 條目被修改的文件系統。如果某文件系統沒有被任何進程使用,使用 umount 命令後再緊跟著 mount 命令來重新掛載這個文件系統。如果某文件系統正在被使用,要重新掛載該文件系統的最簡捷方法是重新引導系統。
創建配額文件
重新掛載了每個啟用了配額的文件系統後,系統現在就能夠使用磁盤配額了。不過,文件系統本身尚且不能支持配額。下一步是運行 quotacheck 命令。
quotacheck 命令檢查啟用了配額的文件系統,並為每個文件系統建立一個當前磁盤用來的表。該表會被用來更新操作系統的磁盤用量文件。此外,文件系統的磁盤配額文件也被更新。
要在文件系統上創建配額文件(aquota.user 和 aquota.group),使用 quotacheck 命令的 -c 選項。例如,如果用戶和組群配額都為 /home 分區啟用了,在 /home 目錄下創建這些文件:
quotacheck -acug /home
-a 選項意味著在 /etc/mtab 中所有掛載了的非 NFS 文件系統都會被檢查來決定是否啟用了配額。-c 選項指定每個啟用了配額的文件系統都應該創建配額文件,-u 選項指定檢查用戶配額,-g 選項指定檢查組群配額。
如果 -u 或 -g 選項被指定,只有用戶配額文件被創建。如果只指定了 -g 選項,只有組群配額文件會被創建。
文件被創建後,運行以下命令來生成每個啟用了配額的文件系統的當前磁盤用量表:
quotacheck -avug
所用選項如下:
*
a — 檢查所有啟用了配額的在本地掛載的文件系統
*
v — 在檢查配額過程中顯示詳細的狀態信息
*
u — 檢查用戶磁盤配額信息
*
g — 檢查組群磁盤配額信息
quotacheck 運行完畢後,和啟用配額(用戶和/或組群)相應的配額文件中就會寫入用於每個啟用了配額的文件系統(如 /home)的數據。
為每用戶分配配額
最後一步是使用 edquota 命令分配磁盤配額。
要為用戶配置配額,以根用戶身份在 shell 提示下執行以下命令:
edquota username
為每個你想實現配額的用戶執行該步驟。例如,如果在 /etc/fstab 中為 /home 分區(/dev/hda3)啟用了配額,執行了 edquota testuser 命令後,系統默認的編輯器中就會有如下顯示:
Disk quotas for user testuser (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 440436 0 0 37418 0 0
注記
edquota 使用 EDITOR 環境變量所定義的文本編輯器。要改變這個編輯器,把 EDITOR 環境變量設置為到你選中的編輯器的完整路徑。
第一列是啟用了配額的文件系統的名稱。第二列顯示了用戶當前使用的塊數。隨後的兩列用來設置用戶在該文件系統上的軟硬塊限度。inodes 列顯示了用戶當前使用的內節點數量。最後兩列用來設置用戶在該文件系統上的軟硬內節點限度。
硬限是用戶或組群可以使用的磁盤空間的絕對最大值。達到了該限度後,磁盤空間就不能再被用戶或組群使用了。
軟限定義可被使用的最大磁盤空間量。和硬限不同的是,軟限可以在一段時期內被超過。這段時期被稱為 過渡期(grace period)。過渡期可以用秒鐘、分鐘、小時、天數、周數、或月數表示。
如果以上值中的任何一個被設置為 0,那個限度就不會被設置。在文本編輯器中,改變想要的限度。如:,
Disk quotas for user testuser (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 440436 500000 550000 37418 0 0
要校驗用戶的配額是否被設置,使用以下命令:
quota testuser
為每組群分配配額
配額還可以根據組群來分配。例如,要為 devel 組群設置組群配額,使用以下命令(在設置組群配額前,該組群必須存在):
edquota -g devel
以上命令在文本編輯器中顯示現存的組群配額:
Disk quotas for group devel (gid 505):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 440400 0 0 37418 0 0
修改限度,保存文件,然後配置配額。
要校驗組群配額是否被設置,使用以下命令:
quota -g devel
為每文件系統分配配額
要根據每個啟用了組群的文件系統來分配配額,使用以下命令:
edquota -t
和另一個 edquota 命令相似,這個命令也會在文本編輯器中打開當前的文件系統配額:
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 7days 7days
改變塊過渡期或內節點過渡期,保存對文件的改變,然後退出文本編輯器。
管理磁盤配額
如果配額被實現,它們就需要被維護 — 主要維護方式是觀察。查看配額是否被超出並確保配額的正確性。 當然,如果用戶屢次超出他們的配額或者持續地達到他們的軟限, 系統管理員就可以根據用戶類型和磁盤空間對他們工作的影響來做出幾種決策。管理員可以幫助用戶來檢索對磁盤空間的使用,也可以按需要增加用戶的配額。
報告磁盤配額
創建磁盤用量報告需要運行 repquota 工具。例如,repquota /home 命令會生成以下輸出:
*** Report for user quotas on device /dev/hda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 36 0 0 4 0 0
tfox -- 540 0 0 125 0 0
testuser -- 440400 500000 550000 37418 0 0
要查看所有啟用了配額的文件系統的磁盤用量,使用以下命令:
repquota -a
這份報告雖然看起來很簡單,有幾點仍需要做一下說明。顯示在每個用戶後面的 -- 是一種判斷用戶是否超出其塊限度或內節點限度的快速方法。如果任何一個軟限被超出,相應的 - 行就會被 - 代替;第一個 - 代表塊限度,第二個代表內節點限度。
grace 列通常是空白。如果某個軟限被超出,這一列就會包含過渡期中的剩余時間。如果過渡期已超過了,其中就會顯示 none。
保持配額的正確性
當某文件系統沒有被完整地卸載(如,由於系統崩潰),這就有必要運行 quotacheck。不過,即便系統沒有崩潰,quotacheck 也可以被定期經常運行。定期運行以下命令來保持配額的正確性(所用選項在第 6.1.1 節中被描述):
quotacheck -avug
要定期運行它的最簡單方法是使用 cron。以根用戶身份,你既可以使用 crontab -e 命令來調度定期的 quotacheck,也可以在以下目錄之一內放置一個運行 quotacheck 的腳本(使用最時候你需要的間隔期間):
*
/etc/cron.hourly
*
/etc/cron.daily
*
/etc/cron.weekly
*
/etc/cron.monthly
最精確的配額統計數據可以在所分析的文件系統沒有被活躍使用時獲得。因此,cron 任務應該在文件系統被最少使用時調度。如果這一時間在使用配額的文件系統中並不統一,則使用多個 cron 任務在不同的時間為每個文件系統運行 quotacheck。
請參考第28章 來獲取關於配置 cron 的詳情。
啟用和禁用
你可以不必把配額設置為 0 來禁用它們。要關閉用戶和組群配額,使用以下命令:
quotaoff -vaug
如果 -u 或 -g 選項沒有被指定,只有用戶配額被禁用。如果只指定了 -g 選項,只有組群配額會被禁用。
要重新啟用配額,使用帶有同樣選項的 quotaon 命令。
例如,要為所有文件系統啟用用戶和組群配額:
quotaon -vaug
要為指定文件系統(如 /home)啟用配額:
quotaon -vug /home
如果 -u 或 -g 選項沒有指定,那麼僅用戶配額會被啟用。如果只指定了 -g 選項,僅組群配額會被啟用。
要為指定文件系統(如 /home)啟用配額:
quotaon -vug /home
如果 -u 或 -g 選項沒有指定,那麼僅用戶配額會被啟用。如果只指定了 -g 選項,僅組群配額會被啟用。