第 6章 實作磁碟配額

除了監視系統所使用磁碟空間之外(請參閱 菴 26.3.1 節),可以藉由實作磁碟配額來限制磁碟的使用空間,因此在一個使用者用掉太多磁碟空間或一個分割區的容量太滿時,系統管理員將會收到警示訊息。

可以為單獨的使用者以及使用者群組設定磁碟配額,這種彈性設定使得我們可以給予每一個使用者小容量的定額以用來處理個人的檔案(如電子郵件與報告),而給予較充足容量的定額給他們所從事的專案(假設該專案是屬於他們自己的群組)。

除此之外,磁碟配額並不只是設定來控制所使用的磁碟區塊數目,它也控制 inodes 的數量。 因為 inodes 通常都含有檔案相關的資訊,這個特色將允許控制可以建立的檔案數量。

您必須安裝 quota RPM 才能實作磁碟配額。 如需關於安裝 RPM 套件的更多資訊,請參考 菴 V 部

6.1. 設定磁碟配額

如要實作磁碟配額,請遵照以下步驟:

  1. 修改 /etc/fstab 檔案來啟用每一個檔案系統的磁碟配額

  2. 重新掛載檔案系統

  3. 建立配額檔案以及產生磁碟用量表

  4. 指定配額

每一個步驟都在以下的部份有個別詳述。

6.1.1. 啟用配額

以 root 身份使用您喜歡的文字編輯器,增加 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 檔案系統已經啟用使用者與群組的配額。

6.1.2. 重新掛載檔案系統

在加入 userquotagrpquota 選項後,重新掛載 fstab 紀錄項已經被修改的每一個檔案系統。 假如該檔案系統不被任何程序使用中,請使用 umount 指令再加上 mount 指令來重新掛載檔案系統。 假如該檔案系統目前正在使用中,重新掛載檔案系統的方法是重新啟動系統。

6.1.3. 建立配額檔案

在重新掛載每一個啟用磁碟配額的檔案系統後,系統上的磁碟配額機制將立即生效。 然而,檔案系統本身尚未準備好支援磁碟配額。 下一個步驟是執行 quotacheck 指令。

quotacheck 指令會檢查啟用磁碟配額的檔案系統,並且建立每一檔案系統目前磁碟用量的表格。 這個表格將會被使用來更新作業系統磁碟用量的資料,而且檔案系統的磁碟配額檔案也會更新。

如要在檔案系統上建立配額檔案(aquota.useraquota.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)的資料。

6.1.4. 指定每一個使用者的磁碟配額

最後一個步驟是使用 edquota 指令來指定磁碟的配額。

如要設定使用者的磁碟配額,請以 root 身份在 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

注請注意
 

EDITOR 環境變數所定義的文字編輯器將會由 edquota 所啟動,如要變更這個編輯器,請設定 EDITOR 的環境變數為您選擇之編輯器的完整路徑。

第一個欄位是啟用配額之檔案系統的名稱,第二個欄位顯示目前使用者已經使用的區塊數量,旁邊的兩個欄位是用來設定檔案系統上對使用者強制性(hard)與非強制性(soft)的磁碟空間限制。 inodes 欄位顯示目前使用者已使用的檔案數目(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

6.1.5. 指定每一個群組的磁碟配額

磁碟配額也可以指定給群組為單位的對象,例如您想要為 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

6.1.6. 指定每一個檔案系統的磁碟配額

如要指定磁碟配額給已啟用配額機制的每一個檔案系統,請使用下列指令:

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

更改磁碟空間的寬限期(Block grace period)或檔案數量的寬限期(Inode grace period),再儲存變更到檔案,然後離開文字編輯器。