Linux磁盤配額(內含配置案例)

磁盤配額的概述

當Linux根分區的磁盤空間耗盡時,Linux系統將無法再建立新的文件(包括程序運行的臨時文件),從而出現服務程序崩潰、系統無法啓動等故障現象。爲了避免在服務器中出現類似的磁盤空間不足的問題,可以設置啓用磁盤配額功能,對用戶在指定文件系統(分區)中使用的磁盤空間、文件數量進行設置,以防止個別用戶惡意或無意間佔用大量磁盤空間,從而保持系統存儲空間的穩定性和持續可用性。

磁盤配額可以限制指定賬戶能夠使用的磁盤空間,這樣可以避免因某個用戶的過度使用磁盤空間造成其他用戶無法正常工作甚至影響系統運行。在服務器管理中此功能非常重要。

實現磁盤限額的條件

需要Linux內核支持
安裝xfsprogs與quota軟件包
##Linux磁盤限額的特點
作用範圍:針對指定的文件系統(分區)

限制對象:用戶賬號、組賬號

限制類型:磁盤容量、文件數量

限制方法:軟限制(可允許超限額,有時間限制,超出規定時間將直接把超出內容直接刪除)、硬限制

磁盤配額步驟

以支持配額功能的方式掛載文件系統
編輯用戶和組賬號的配額設置
驗證磁盤配額功能
查看磁盤配額使用情況

安裝xfsprogs與quota軟件包

1、先開啓支持磁盤配額的功能

2、編輯用戶和組賬號的配額設置

3、驗證磁盤配額功能

4、查看磁盤配額使用情況

1、啓用文件系統的配額支持

添加usrquota、grpquota掛載參數

方法一:在配置文件中永久設置開機自動掛載(推薦)

[root@localhost ~]#vim /etc/fstab               //進入配置文件
…………//省略部分信息

/dev/kgc/ky02	/zb	xfs	defaults,usrquota,grpquota	0 0   //啓動配額支持

方法二:使用命令掛載,重啓後需重新掛載

[root@localhost ~]#mount -o usrquta,grpquota /dev/kgc/ky02 /zb   //掛載

[root@localhost ~]#mount                       //查詢掛載內容是否啓動配額支持

…………//省略部分信息

/dev/kgc/ky02 on /zb type xfs (rw,relatime,atte2,inose64,usrquota,grpquta) //已啓動

[root@localhost ~]#chmod 777 /zb                   //設置/zb權限爲777(可讀可寫可執行)

如圖:
在這裏插入圖片描述

2、編輯用戶和組賬號的配額設置

使用xfs_quota命令編輯配額設置
xfs_quota -x -c ‘limit -u bsoft=N bhard=N isoft=N ihard=N 用戶名’ 掛載點

limit 上限
常用選項
-x 開啓專家模式

-g 指定組

-u 指定用戶

-c 命令
限制字段
容量軟限制:bsoft

容量硬限制:bhard

數量軟限制:isoft

數量硬限制:ihard

軟限制<=硬限制

軟限制在硬限制的範圍內允許超額,但有時間限制

[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=6 ml' /zb                           //編輯配額設置

3、查看配額使用情況

​ xfs_quota -x -c 'report選項 '掛載點
report常用選項

-a 所有

-i inode 限制數量

-b block 限制大小

-u 用戶

-g 組

-p proj 對象
方法一:

  [root@localhost ~]# xfs_quota -x -c 'report -ib' /zb     //對所有用戶和組查看數量及容量限制
  User quota on /zb (/dev/mapper/kgc-ky02)
                                 Blocks                                          Inodes                     
  User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     

------

  root                0          0          0     00 [--------]          3          0          0     00 [--------]
  ml                  0      51200     102400     00 [--------]          0          4          6     00 [--------]

  Group quota on /zb (/dev/mapper/kgc-ky02)
                                 Blocks                                          Inodes                     
  Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     

------
  [root@localhost ~]# xfs_quota -x -c 'quota -iuv ml' /zb     //查看對ml用戶容量的限制
  Disk quotas for User ml (1000)
  Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
  /dev/mapper/kgc-ky02          0          4          6   00 [--------] /zb
  [root@localhost ~]# xfs_quota -x -c 'quota -uv ml' /zb      //查看對ml用戶節點數量的限制
  Disk quotas for User ml (1000)
  Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
  /dev/mapper/kgc-ky02          0      51200     102400   00 [--------] /zb

4、驗證磁盤配額功能

切換到設置配額的分區(掛載目錄)

創建指定數量的文件:使用touch命令,或cp命令

創建指定容量的文件:使用dd命令,或cp命令
驗證數量限制:

  [ml@localhost ~]$ cd /zb                   //切換ml用戶到/zb目錄下
  [ml@localhost zb]$ ls                      //目錄無內容
  [ml@localhost zb]$ touch test{1..4}.txt    //創建4個文件
  [ml@localhost zb]$ ls
  test1.txt  test2.txt  test3.txt  test4.txt
  [ml@localhost zb]$ touch test5.txt         //創建第5個文件
  [ml@localhost zb]$ touch test6.txt         //創建第6個文件
  [ml@localhost zb]$ touch test7.txt         //上限6個,嘗試創建第7個文件
  touch: 無法創建"test7.txt": 超出磁盤限額      //創建失敗,提示超出限額
  [ml@localhost zb]$ ls
  test1.txt  test2.txt  test3.txt  test4.txt  test5.txt  test6.txt

驗證容量限制:

  [ml@localhost zb]$ ls
  test1.txt  test2.txt                     //目錄下僅有兩個文件
  [ml@localhost zb]$ dd if=/dev/zero of=/zb/test1.txt bs=1M count=80    //複製80M內容進來
  記錄了80+0 的讀入
  記錄了80+0 的寫出
  83886080字節(84 MB)已複製,0.0357496 秒,2.3 GB/秒
  [ml@localhost zb]$ dd if=/dev/zero of=/zb/test2.txt bs=1M count=50    //再次複製50M
  dd: 寫入"/zb/test2.txt" 出錯: 超出磁盤限額                          //提示超出限額
  記錄了21+0 的讀入                                               
  記錄了20+0 的寫出
  20971520字節(21 MB)已複製,0.0482307 秒,435 MB/秒                  //但有寫入20M
  [ml@localhost zb]$ cd 
  [ml@localhost ~]$ ls -lh /zb
  總用量 100M                                                   //統計容量,共100M
  -rw-rw-r--. 1 ml ml 80M 11月  5 09:38 test1.txt
  -rw-rw-r--. 1 ml ml 20M 11月  5 09:39 test2.txt
  [ml@localhost ~]$ cd /zb
  [ml@localhost zb]$ touch test3.txt          //目前僅有2個文件,但容量以達限制,嘗試創建文件3
  touch: 無法創建"test3.txt": 超出磁盤限額    //提示超出限額

當容量達到上限後,即使文件未達限制,也無法繼續創建文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章