站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

邁向 RHCE 之路 (Day18) - Disk Quota 機制

前言

簡單來說我們作 Disk Quota 的用意,就是為了避免因為使用者無止盡的放置檔案,而系統的空間規劃又不良時將造成系統硬碟空間被吃光,此時我們便可利用 Disk Quota 功能來強制管理硬碟空間。

Quota 管理使用對象

Quota 管理資料類別

Quota 管理配額方式

設定 Disk Quotas 的步驟

  1. 修改「/etc/fstab」針對要設定 Quota 的掛載點修改內容 (加在 default, 之後),要啟用使用者 Quota 則加上「usrquota」,要啟用群組 Quota 則加上「grpquota」。
  2. 將檔案系統重新掛載以便套用生效,可以執行指令「mount -o remount <掛載點>」來重新掛載,掛載完成後用 mount 指令確定是否正確載入。
  3. 建立 Quota Database 及 Disk Usage Table 檔案,執行指令「quotacheck -cugm <掛載點>」 之後執行指令「quotaon -vug <掛載點>」來啟用 Quota 機制。
  4. 修改及建立 Disk Quota 限制 「Soft Limit、Hard Limit、寬限時間」。

步驟 1、修改 /etc/fstab

針對要設定 Quota 的掛載點內容進行修改,例如 /home 掛載點要啟用 Disk Quota for User 機制,則修改內容是在該掛載點的「defaults」後面加上「usrquota」(注意不是 us"e"rquota),中間使用逗號進行分隔。

 #vi /etc/fstab
  /dev/sdb1     /home   ext4  defaults   1 2            //修改前
  /dev/sdb1     /home   ext4  defaults,usrquota   1 2   //修改後

步驟 2、載入 Quota 設定

修改 /etc/fstab 檔案完成後,利用指令「mount -o remount /home」重新掛載 /home 掛載點,可以利用 mount 指令來觀察重新掛載檔案系統前後的變化。

 #mount | grep /home
  /dev/sdb1 on /home type ext4 (rw)
 #mount -o remount /home
 #mount | grep vg
  /dev/sdb1 on /home type ext4 (rw) (rw,usrquota)

步驟 3、建立 Quota 機制相關檔案

重新掛載檔案系統完成後 (目前仍未真正支援 Quota 功能),必須先使用「quotacheck -cugm /home」指令來建立 Quota 機制的 Database 及 Disk Usage Table 檔案,以記錄 Quota 機制磁碟使用情況表,相關參數說明如下:

 #quotacheck -cugm /home     //產生 quota db
 #ls
  aquota.user  wei weithenn  //aquota.user 檔案建立完成

接著便可以使用「quotaon -vug /home」指令真正啟用該掛載點的 Quota 機制,若後續想進行問題除錯時可以使用「quotaooff -vug /home」指令來停用 Quota 機制,執行 quotaon/quotaoff 指令時若想一次載入所有設定 Quota 機制的掛載點都會套用可以使用參數「-a」,下列執行參數說明:

 #quotaon -vug  /home   //只針對 /home 掛載點
  /dev/sdb1 [/home]: user quotas turned on

步驟 4、建立 Quota 限制

使用指令「edquota <使用者帳號>」或「edquota -g <群組名稱>」來進行 Disk Quota 限制,預設情況下當超過 Soft Limit 設定值時會觸發警告機制 (預設寬限期預設為 7 天),若想改變這個寬限期可以使用指令「edquota -t」進行更改,舉例將 weithenn 使用者帳號中針對硬碟空間作管理 Soft Limit 設為 9MB,而 Hard Limit 則設為 10MB,設定完成後可使用「dd」指令建立指定大小的檔案來測試 Quota 機制是否正確運作,如下操作中可以看到將身份切換為 weithenn 帳號後先建立 5MB 大小的檔案可順利建立,再次建立第二個 5MB 檔案時便出現「Disk quota exceeded」表示 Quota 機制確實限制生效。

 #edquota weithenn                     //進入編輯模式修改
  Disk quotas for user weithenn (uid 500):
   Filesystem   blocks    soft    hard   inodes   soft   hard
   /dev/sdb1       632    9216   10240      158      0      0
 #setquota wei 9216 10240 0 0 /home   //直接指定
 #su - weithenn                       //切換為 weithenn 帳號
 $dd if=/dev/zero of=/home/user/weithenn/file bs=1M count=5
  5+0 records in
  5+0 records out
  5242880 bytes (5.2 MB) copied, 0.0103532 s, 506 MB/s
 $dd if=/dev/zero of=/home/user/weithenn/file1 bs=1M count=5
  dd: writing `/home/user/weithenn/file1': Disk quota exceeded  //Quota 機制生效
  5+0 records in
  4+0 records out
  4595712 bytes (4.6 MB) copied, 0.0108485 s, 424 MB/s

當 Quota 機制生效後,如何快速把某個使用者的 Quota 設定值快速套用給其它使用者帳號,若是某幾個帳號可以使用「edquota -p weithenn chris」指令,將 weithenn 帳號的 Quota 設定套用至 chris 帳號中,若是希望一次套用所有使用者帳號例如 UserID 大於 499 (因為使用者 ID 從 500 開始),可使用如下指令一次套用,因為 nfsnobody 的 UserID 為 65534 所以進行排除的動作,之後則是使用「repquota -a」來查看所有使用者帳號的 Quota 限制資訊及使用情況。

 #edquota -p weithenn chris
 #edquota -p weithenn `awk -F: '$3 > 499 {print $1}' /etc/passwd | grep -v nfsnobody`
 #repquota -a
  *** Report for user quotas on device /dev/mapper/vg_centos6-lv_root
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  ...略...
  weithenn  +-   10240    9216   10240  6days     158     0     0
  wei       --      32    9216   10240              9     0     0
  chris     --      32    9216   10240              9     0     0
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com