2008-03-26

quota - 磁碟配額

凍仁幫各個社團開帳號時,除了關閉 ssh 服務之外,還想限制各帳號的磁碟空間,以免被資源被濫用。在鳥哥得知有 quota 可限制空間,可凍仁卻有那麼點不懂,索性跟老闆借了 Novell Suse Linux Enterprise Server 9 管理手冊 一書才搞定。其中 usrquota 為單獨使用者;grpquota 為針對使用者群組設定配額。By the way, quota 除了限制磁碟空間大小之外,還可限制建立檔案的 inode (數量)。

1. 安裝套件

1.1. 安裝 quota 套件。
jonny@gutsy:~$ sudo apt-get install quota [Enter]

2. file-system 設定

2.1. 修改 /etc/fstab 檔案並在啟用限額的分割區補上 usrquota 及 grpquota 選項,若無獨立分割 /home 出來可加在 / 底下。
jonny@gutsy:~$ sudo vi /etc/fstab [Enter]
# 裝置    掛載點  檔案系統格式  mount選項
/dev/sda7   /home     ext3       defaults,usrquota,grpquota

2.2. 重新掛載檔案系統:加入 usrquota 與 grpquota 後,需重新掛載才有效。
jonny@gutsy:~$ sudo mount -o remount /home [Enter]

3. quota 設定

3.1. 初始化 Quota 資料庫:quota 會藉由 Database (資料庫) 紀錄使用者或群組的使用情況,首先得使用 quotacheck 檢查配額的檔案系統及建立磁碟用量表格。(下方以 home 為例)
jonny@gutsy:~$ sudo quotacheck -cmug /home [Enter]
# c: 建立 quota 資料庫
# u: 檢查使用者配額
# g: 檢查群組配額

3.2. 檢查檔案:執行完會產生 aquota.user (使用者 Quota 資料庫)、aquota.qroup (群組 Quota 資料庫)。
jonny@gutsy:home$ ls -l /home/aquota.* [Enter]
-rw------- 1 root root 8192 2008-03-26 18:46 /home/aquota.group
-rw------- 1 root root 7168 2008-03-26 18:46 /home/aquota.user

3.3. 啟動 Quota Deamon。
jonny@gutsy:~$ sudo quotaon -av [Enter]

3.4. 編輯使用者磁碟限額規則。
jonny@gutsy:~$ sudo edquota -u UserName [Enter]
Disk quotas for user jonny (uid 1004):
Filesystem  blocks  soft  hard inodes soft hard
/dev/sda7   24     100000 102400   7  0  0

# 此範例為限制 100 MB,如想限制 1 GB 請改用 1000000 及 1024000。

3.5. 編輯群組磁碟限額規則。
jonny@gutsy:~$ sudo edquota -g GroupName [Enter]

3.6. 各欄介紹。
  • 第1欄 (Filesystem):啟用 quota 的檔案系統名增。
  • 第2欄 (blocks):使用者已使用的區塊數量。
  • 第3欄 (soft):非強制性的磁碟空間限制,單位為 KB。
  • 第4欄 (hard):強制性的磁碟空間限制,單位為 KB。
  • 第5欄 (inodes):使用者已使用的檔案數目。
  • 第6欄 (soft):非強制性的 inode 限制。
  • 第7欄 (hard):強制性的 inode 限制。

4. 相關指令

4.1. 套用某個使用者的規則。
jonny@gutsy:~$ sudo edquota -p <被參考的使用者> user1, user2 .. [Enter]

4.2. 確認使用者配額。
jonny@gutsy:~$ sudo quota UserName [Enter]

4.3. 確認群組配額。
jonny@gutsy:~$ sudo quota -g GroupName [Enter]

4.4. 檢視單一目錄磁碟配額報告。
jonny@gutsy:~$ sudo repquota /home [Enter]

4.5. 檢視所有配額中的磁碟用量報告。
jonny@gutsy:~$ sudo repquota -aug [Enter]

站內連結:
【Quota】修改寬限時間(grace time)

資料來源:
Novell Suse Linux Enterprise Server 9 管理手冊 - ch7.6
鳥哥 - Linux 磁碟配額 (Quota)