Linux中如何針對用戶及組設置磁盤配額

在centos系統中,不一樣的文件系統使用不一樣磁盤配額管理工具。例如,xfs文件系統經過 xfs_quota 工具進行管理;EXT3/4 文件系統經過 quota 工具進行管理,這裏咱們使用的是xfs文件系統。因此使用 xfs_quota 管理工具。node

Linux中如何針對用戶及組設置磁盤配額

除了內核和 xfs_quota 軟件的支持之外,指定的分區必須已經掛載且支持磁盤配額功能。注意:xfs文件系統只有在首次掛載時才啓動磁盤限額功能,下面爲設置磁盤配額的具體過程:centos

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

xfs_quota命令的使用方法以下:

選項與參數: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

下面開始設置配額:
Linux中如何針對用戶及組設置磁盤配額code

其中須要限制什麼就寫入限制字段便可,(0表示無限制)blog

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

Linux中如何針對用戶及組設置磁盤配額

附加——project掛載參數的使用及取消quota配額的限制

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兩種不一樣文件系統的設置配額差別:

Linux中如何針對用戶及組設置磁盤配額

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索