在centos系統中,不一樣的文件系統使用不一樣磁盤配額管理工具。例如,xfs文件系統經過 xfs_quota 工具進行管理;EXT3/4 文件系統經過 quota 工具進行管理,這裏咱們使用的是xfs文件系統。因此使用 xfs_quota 管理工具。node
除了內核和 xfs_quota 軟件的支持之外,指定的分區必須已經掛載且支持磁盤配額功能。注意:xfs文件系統只有在首次掛載時才啓動磁盤限額功能,下面爲設置磁盤配額的具體過程:centos
選項與參數:app
- -x:專家模式,後續纔可以加入-c的指令參數;
- -c:後面加的就是指令。
- 經常使用指令以下:
- print:只是列出目前主機內的文件系統參數等數據;
- df:與本來的df同樣的功能,能夠加上-b(block)、-i(inode)、-h(加上容量單位)等;
- report:列出目前的quota項目,有-ugr(user/group/project)及-bi等數據;
- state:說明目前支持quota的文件系統的信息,有沒有啓動相關項目等。
那麼,若要對文件系統設置配額,在掛載時須要加入特別的選項,並須要注意將/etc/fstab中寫入同樣的掛載選項。ide
經常使用的選項以下:工具
- usrquota:針對用戶帳號的磁盤配額設置;
- grpquota:針對羣組的設置;
- prjquota:針對單一目錄的設置,可是不可與grpquota同時存在。
使用舉例:測試
[root@localhost ~]# mount -o usrquota,grpquota /dev/sdb1 /test #掛載磁盤時,須要加入特別的參數,纔可設置磁盤配額。 [root@localhost ~]# xfs_quota -x -c "print" #列出目前系統的全部文件系統,以及文件系統的quota掛載參數的支持 Filesystem Pathname / /dev/mapper/centos-root /home /dev/mapper/centos-home /boot /dev/sda1 /test /dev/sdb1 (uquota, gquota)#括號內的參數表示支持針對用戶、組設置配額。 [root@localhost ~]# xfs_quota -x -c "df -h" /test #列出目前/test這個支持test的掛載點文件系統使用狀況。 Filesystem Size Used Avail Use% Pathname /dev/sdb1 20.0G 32.2M 20.0G 0% /test [root@localhost ~]# xfs_quota -x -c "report -ubih" /test #列出目前/test的全部用戶的quota限制值,我這裏還沒作使用限制 User quota on /test (/dev/sdb1) Blocks Inodes User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- root 0 0 0 00 [------] 3 0 0 00 [------] #注意:上面查詢出來的是block限制和inode限制。 #soft和hard分別表明軟/硬限制,soft和hard若爲0,則表明無限制。 [root@localhost ~]# xfs_quota -x -c "state" #列出目前支持的quota文件系統是否啓動了quota功能。 User quota state on /test (/dev/sdb1) Accounting: ON #有啓用計算功能 Enforcement: ON #有實際quota管制的功能 Inode: #67 (1 blocks, 1 extents) #以上四行是說明啓動了user的限制能力。 Group quota state on /test (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #68 (1 blocks, 1 extents) #以上四行是說明啓動了group的限制能力。 Project quota state on /test (/dev/sdb1) Accounting: OFF Enforcement: OFF Inode: #68 (1 blocks, 1 extents) #以上四行是說明project並不支持 #如下是grace time,表示當超過了軟限制的容量,會容許繼續使用多少天(下面是默認容許7天) Blocks grace time: [7 days] Inodes grace time: [7 days] Realtime Blocks grace time: [7 days] [root@localhost ~]# xfs_quota -x -c "timer -u 14days" /test #將用戶的寬限時間改成14天 [root@localhost ~]# xfs_quota -x -c "timer -g 14days" /test #將組的寬限時間改成14天
關於上面的grace time具體解釋以下:
寬限時間默認爲7天,在這個時間內不作任何磁盤管理,到期後,soft限制值會取代hard限制值做爲quota限制。也就是說你的inode/block用量限制值變爲soft,達到soft後,你的磁盤使用權就被鎖住。3d
下面開始設置配額:code
其中須要限制什麼就寫入限制字段便可,(0表示無限制)blog
project的配額限制是針對文件系統生效的,須要注意的是它不能和grpquota配額支持同時存在,而且它不一樣於usrquota和grpquota配額設置,這兩個對root不生效,可是project配額對root用戶一樣生效。rem
一、設置project配額
[root@localhost ~]# mount -o usrquota,prjquota /dev/sdb1 /test #掛載時加上prjquota支持 [root@localhost ~]# xfs_quota -x -c "state" User quota state on /test (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #67 (2 blocks, 2 extents) Group quota state on /test (/dev/sdb1) Accounting: OFF #grpquota配額支持已經關閉了 Enforcement: OFF Inode: #68 (2 blocks, 2 extents) Project quota state on /test (/dev/sdb1) Accounting: ON Enforcement: ON #prjquota配額已經啓動了 Inode: #68 (2 blocks, 2 extents) Blocks grace time: [14 days] Inodes grace time: [14 days] Realtime Blocks grace time: [14 days] #指定專案識別碼與目錄對應在/etc/projects [root@localhost ~]# echo "11:/test" >> /etc/projects #規範專案名稱與識別碼的對應在/etc/projid [root@localhost ~]# echo "myquotaproject:11" >> /etc/projid #初始化專案名稱 [root@localhost ~]# xfs_quota -x -c "project -s myquotaproject" ....................#省略部分提示信息 ..................r project myquotaproject with recursion depth infinite (-1). #會出現上面的提示信息,是正常的。 [root@localhost ~]# xfs_quota -x -c "print" /test #經過print功能完整的查看到相應的各項文件系統與project目錄對應 Filesystem Pathname /test /dev/sdb1 (uquota, pquota) /test /dev/sdb1 (project 11, myquotaproject) [root@localhost ~]# xfs_quota -x -c "report -pbih" /test #肯定抓到myquotaproject 這個專案名稱 Project quota on /test (/dev/sdb1) Blocks Inodes Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- #0 0 0 0 00 [------] 2 0 0 00 [------] myquotaproject 0 0 0 00 [------] 1 0 0 00 [------] [root@localhost ~]# xfs_quota -x -c "limit -p bsoft=200M bhard=300M myquotaproject" /test #針對myquotaproject這個專案設置配額 [root@localhost ~]# xfs_quota -x -c "report -pbih" /test #查看設置的配額 Project quota on /test (/dev/sdb1) Blocks Inodes Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- #0 0 0 0 00 [------] 2 0 0 00 [------] myquotaproject 0 200M 300M 00 [------] 1 0 0 00 [------] [root@localhost ~]# dd if=/dev/zero of=/test/a.txt bs=1M count=400 #往/test目錄下寫入一個400M的文件進行測試 dd: 寫入"/test/a.txt" 出錯: 設備上沒有空間 記錄了301+0 的讀入 記錄了300+0 的寫出 314572800字節(315 MB)已複製,7.03535 秒,44.7 MB/秒 #會發現最多隻能寫入300M,說明配額生效。
二、取消quota的限制
經常使用的參數以下:
- disable:暫時取消 quota 的限制,但其實系統仍是在計算 quota 中,只是沒有管制而已!應該算最有用的功能!
- enable:就是回覆到正常管制的狀態中,與 disable 能夠互相取消、啓用!
- off:徹底關閉 quota 的限制,使用了這個狀態後,你只有卸載再從新掛載纔可以再次的啓動 quota !也就是說,用了 off 狀態後,你沒法使用 enable 再次復原 quota 的管制+!注意不要亂用這個狀態!通常建議用 disable 便可,除非你須要執行remove 的動做!
- remove:必需要在 off 的狀態下才可以執行的指令,這個 remove 能夠「移除」quota 的限制設置,例如要取消 project 的設置,無須從新設置爲 0 ,只要 remove -p 就能夠了!
使用舉例:
[root@localhost ~]# xfs_quota -x -c "disable -up" /test #關閉對user和project的配額限制 [root@localhost ~]# xfs_quota -x -c "state" /test User quota state on /test (/dev/sdb1) Accounting: ON Enforcement: OFF #表示在計算,可是沒有強制管制的意思,如今用戶沒有磁盤的使用限制 Inode: #67 (2 blocks, 2 extents) Group quota state on /test (/dev/sdb1) Accounting: OFF Enforcement: OFF Inode: #68 (2 blocks, 2 extents) Project quota state on /test (/dev/sdb1) Accounting: ON Enforcement: OFF #同上 Inode: #68 (2 blocks, 2 extents) Blocks grace time: [14 days] Inodes grace time: [14 days] Realtime Blocks grace time: [14 days] [root@localhost ~]# dd if=/dev/zero of=/test/a.txt bs=1M count=500 #測試,發現以前設置的配額已經都失效了 記錄了500+0 的讀入 記錄了500+0 的寫出 524288000字節(524 MB)已複製,4.88868 秒,107 MB/秒 [root@localhost ~]# xfs_quota -x -c "report -pbh" /test #查看 Project quota on /test (/dev/sdb1) Blocks Project ID Used Soft Hard Warn/Grace ---------- --------------------------------- #0 0 0 0 00 [------] myquotaproject 500M 200M 300M 00 [-none-] #會發現軟限制及硬限制還在,可是確實超過了配額的限制,這就是disable的做用 [root@localhost ~]# xfs_quota -x -c "enable -up" /test #再次開啓配額限制 [root@localhost test]# xfs_quota -x -c "off -up" /test #徹底關閉quota的限制 [root@localhost test]# xfs_quota -x -c "remove -p" /test #取消quota的設置
關於xfs和ext兩種不一樣文件系統的設置配額差別:
———————— 本文至此結束,感謝閱讀 ————————