iT邦幫忙

DAY 18
6

邁向 RHCE 之路系列 第 18

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

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

Quota 管理使用對象
UserQuota:針對 使用者 硬碟空間做限制。
GroupQuoa:針對 群組 硬碟空間做限制。

Quota 管理資料類別
磁碟空間 (kbytes):針對 硬碟空間 作管理 (單位為 KB,所以要設定 10 MB = 10240)
檔案數量 (inode):針對 檔案數量 作管理

Quota 管理配額方式
非強制性限制 (Soft limit): 超過指定大小但未超過 Hard limit 時系統會警告,直到 超過警示的時間 (grace time,預設七天) 未降低使用量便會禁止寫入資料。
強制限制 (Hard limit): 超過這個大小,系統會馬上 禁止 寫入資料。

設定 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 機制磁碟使用情況表,相關參數說明如下:
-c: 為檔案系統建立 Quota 檔案,若是使用者 Quota 將於該掛載點建立「aquota.user」檔案,而群組 Quota 則建立「aquota.group」檔案。
-u: 建立 User Quota Check 檔案
-g: 建立 Group Quota Check 檔案
-m: 在該掛載點於掛載的情況下 (資料有讀寫行為時),重新掛載並套用 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」,下列執行參數說明:
-v: verbose 即顯示指令執行後產生的詳細內容
-u: 開啟 User Quota 功能
-g: 開啟 Group Quota 功能

#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

(上一篇)邁向 RHCE 之路 (Day17) - 新增掛載點或 SWAP 空間
(下一篇)邁向 RHCE 之路 (Day19) - Software RAID
邁向 RHCE 之路系列文章連結


上一篇
邁向 RHCE 之路 (Day17) - 新增掛載點或 SWAP 空間
下一篇
邁向 RHCE 之路 (Day19) - Software RAID
系列文
邁向 RHCE 之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

我要留言

立即登入留言