首頁 > 軟體

CentOS6.8下實現磁碟設定配額

2020-06-16 17:03:40

CentOS6.8下實現設定配額

  Linux系統是支援多使用者的,即允許多個使用者同時使用linux系統,普通使用者在/home/目錄下均有自己的家目錄,在預設狀態下,各個使用者可以在自己的家目錄下任意建立檔案,而不用擔心記憶體。作為系統管理員,為了防止各個使用者占用太多的空間,可以為各個普通使用者設定設定配額,即設定各個使用者的檔案佔用的空間大小。
 
       本文以硬碟/dev/sdb為例設定設定配額:

實驗

  1.新增一塊硬碟/dev/sdb,大小20G, 也可以用大一點的硬碟,分割區成20G

 
1.  [root@linuxidc-pc ~]#lsblk /dev/sdb     
2.  NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT   
3.  sdb    8:16   0  20G  0 disk   
 

  2. 格式化硬碟(如果你使用分割區,就直接格式化分割區)

 
1.  [root@linuxidc-pc ~]#mkfs.ext4 /dev/sdb   
  3.  建立掛載目錄
 
1.  [root@linuxidc-pc ~]#mkdir /mnt/sdb 
 
  4. 掛載檔案系統
 
  修改/etc/fstab目錄,把/dev/sdb 掛載上,注意新增usrquota掛載選項,該選項意為支援使用者配額
1.  UUID=fa2f12ad-6195-47fe-8792-a8a9000cd44c /   ext4  defaults  1 1 
2.  UUID=cd3afad0-4731-442d-8fc2-d9ae95f1a1cc /boot   ext4   defaults    1 2 
3.  UUID=6afc5ea4-27c7-4d52-bd0f-ca410a2da379 /home  ext4   defaults  1 2 
4.  UUID=daaff10f-aa8b-43d8-bc06-e4b82a905886 /mnt/sdb  ext4  usrquota   0 0 
 
 
  使用mount –a 讓掛載生效,使用df –h 命令檢視是否生效
 
1.  [root@linuxidc-pc ~]#df -h 
2.  Filesystem      Size  Used Avail Use% Mounted on 
3.  /dev/sda6       166G  3.6G  154G   3% / 
4.  tmpfs           491M   72K  491M   1% /dev/shm 
5.  /dev/sda1       190M   34M  147M  19% /boot 
6.  /dev/sda2        20G   44M   19G   1% /data 
7.  /dev/sda3       9.8G  130M  9.1G   2% /home 
8.  /dev/sdb         20G   44M   19G   1% /mnt/sdb 
//第8行顯示 /dev/sdb檔案系統已掛載在/mnt/sdb目錄上
 
  5. 對/mnt/sdb設定設定配額,終於快接近尾聲了,-> ->
       
    • 初始化配額資料庫
1.    [root@linuxidc-pc ~]#quotacheck /mnt/sdb/ 
    • 檢視資料庫是否生成成功,是否生成aquota.user檔案
1.    [root@linuxidc-pc sdb]#ls /mnt/sdb/ 
2.  aquota.user  lost+found 
    • 編輯設定資料庫
    •  設定linuxidc的設定配額
 
1.  [root@linuxidc-pc sdb]#edquota linuxidc 
 
1.  Disk quotas for user linuxidc (uid 500): 
2.    Filesystem   blocks   soft   hard   inodes     soft     hard 
3.    /dev/sdb       0     50000   60000     0       30        40 
#  設定:使用block數目到達50000kb時,傳送警告,到達60000kb時,禁止新增內容
#  同樣,當inode使用數目達到30,傳送警告,達到40,禁止新建檔案
Filesystem: 檔案系統
blocks:已使用的塊大小,以kb為單位
inode:已使用的inode個數
soft:塊裝置(或inode)使用數目,預警額度   
hard: 塊裝置(或inode)使用數目,禁止額度
 
    • 開啟設定限額
1.  [root@linuxidc-pc sdb]#quotaon /dev/sdb   
 
 

測試

  • 在/mnt/sdb/目錄下建立linuxidc_f/目錄,且屬主為linuxidc,切換到linuxidc用
 
1.  [linuxidc@linuxidc-pc sdb]$pwd            #  檢視當前目錄
2.  /mnt/sdb                       
3.  [linuxidc@linuxidc-pc sdb]$whoami      #   檢視當前使用者,必須是設定配額設定的使用者
4.  linuxidc 
5.  [linuxidc@linuxidc-pc sdb]$ll         
6.      #  檢視linuxidc使用者可以使用的目錄,確保linuxidc可以在該目錄或其子目錄中寫入資料
7.  total 28 
8.  -rw------- 1 root  root   7168 Apr 17 17:43 aquota.user 
9.  drwx------ 2 root  root  16384 Apr 17 17:07 lost+found 
10. drwxr-xr-x 2 linuxidc linuxidc  4096 Apr 17 18:05 linuxidc_f  # 該目錄屬主為linuxidc
11. [linuxidc@linuxidc-pc sdb]$cd linuxidc_f/ 
 
  • 使用edquota USER 可以檢視、設定使用者USER的配額限度和使用進度
 
1.  [linuxidc@linuxidc-pc linuxidc_f]$edquota linuxidc 
 
  檢視結果
1.  Disk quotas for user linuxidc (uid 500): 
2.    Filesystem    blocks       soft       hard     inodes     soft     hard 
3.    /dev/sdb      4           50000      60000          2       30       40 
4.  # block裝置使用量為4kb
 
  •  嘗試建立file檔案,並寫入40M資料
 
1.  [linuxidc@linuxidc-pc linuxidc_f]$dd if=/dev/zero of=file bs=1M count=40 
2.  40+0 records in 
3.  40+0 records out 
4.  41943040 bytes (42 MB) copied, 0.0380665 s, 1.1 GB/s 
5.  ## 使用dd命令寫文字,建立一個文字file,寫入1M*40=40M檔案,寫入成功
 
    檢視配額限度和使用進度
5.  Disk quotas for user linuxidc (uid 500): 
6.    Filesystem    blocks       soft       hard     inodes     soft     hard 
7.    /dev/sdb      40964      50000      60000          2       30       40 
8.  ## 使用了40964kb
 
 
 
  • 嘗試建立file檔案,並寫入50M資料
1.  [linuxidc@linuxidc-pc linuxidc_f]$dd if=/dev/zero of=file bs=1M count=50 
2.  sdb: warning, user block quota exceeded. 
3.  50+0 records in 
4.  50+0 records out 
5.  52428800 bytes (52 MB) copied, 0.046946 s, 1.1 GB/s 
6.  # 寫入1M*50=50M檔案成功,但發出警告warning
  檢視配額限度和使用進度
1.  Disk quotas for user linuxidc (uid 500): 
2.    Filesystem      blocks    soft       hard     inodes     soft     hard 
3.    /dev/sdb        51204      50000      60000          2       30       40 
4.   ## 使用額度51204kb,超過預警額度 此時還是可以寫入檔案的
5.     
 
  • 嘗試建立file檔案,並寫入60M資料
 
1.  [linuxidc@linuxidc-pc linuxidc_f]$dd if=/dev/zero of=file bs=1M count=60 
2.  sdb: warning, user block quota exceeded. 
3.  sdb: write failed, user block limit reached. 
4.  dd: writing `file': Disk quota exceeded 
5.  59+0 records in 
6.  58+0 records out 
7.  61435904 bytes (61 MB) copied, 0.101161 s, 607 MB/s 
8.  #  顯示寫入60M資料失敗 
 
檢視quota配額使用量:
1.  Disk quotas for user linuxidc (uid 500): 
2.      Filesystem   blocks       soft       hard     inodes     soft     hard 
3.      /dev/sdb       60000      50000      60000          2       30       40 
嘗試往file中寫入內容:
1.  [linuxidc@linuxidc-pc linuxidc_f]$echo "heih" >> file   
2.  -bash: echo: write error: Disk quota exceeded    #  寫入錯誤
3.  [linuxidc@linuxidc-pc linuxidc_f]$touch a                #  建立檔案成功
4.  [linuxidc@linuxidc-pc linuxidc_f]$ 
 
當然也可以測試inode使用數量,這裡不再贅述。

總結

  1. 設定配額是為了更好的分配檔案系統使用空間,而對普通使用者或群組限制使用額度。
  2. 設定配額是基於掛載檔案而言,即必須使用掛載選項usrquota and/or grpquota。
  3. 設定配額可以單獨限於普通使用者,也可以單獨限於群組,也可以同時對群組和使用者進行限制。
  4. 設定配額可以對檔案大小(block)進行限定,也可以對檔案數目(inode)進行限定

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-10/148086.htm


IT145.com E-mail:sddin#qq.com