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 檔案並選擇預設定 Quota 的檔案系統。
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. 編輯使用者或群組 Quota 規則。
# 設定使用者磁碟配額
jonny@gutsy:~$ sudo edquota -u UserName [Enter]

# 設定群組磁碟配額
jonny@gutsy:~$ sudo edquota -g GroupName

接著進入 quota 編輯模式..
GNU nano 2.0.6            檔案: /tmp//EdP.aD0puo9                           

Disk quotas for user spa (uid 1004):
Filesystem  blocks  soft  hard inodes soft hard
/dev/sda7   24 100000 102400   7  0  0


^G 求助      ^O 寫入      ^R 讀檔      ^Y 上頁      ^K 剪下文字  ^C 游標位置
^X 離開      ^J 對齊      ^W 搜尋      ^V 下頁      ^U UnCut Text^T 拼字檢查

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

4. 相關指令

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

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)

2 Feedback:

  1. jonny@ubuntu:~$ sudo qoutacheck -cmug /home
    這個步驟 的quotacheck指令錯了喔
    再這邊體省您一下^^

    順便感謝 這篇文章 幫助我能限制其他人的空間 :)
    回覆刪除
  2. 謝謝您的提醒,當初為了這玩意凍仁可花了不少的時間去摸索呢XD

    不過最近有了份工作,有時間在發文囉:P
    回覆刪除

謝謝您的寶貴意見,凍仁一定會盡快處理 ~^^