首頁 > 軟體

磁碟配額設定及使用

2020-06-16 17:37:59

當Linux根分割區的磁碟空間耗盡時,Linux系統將無法再建立新的檔案,從而出現服務程式崩潰、系統無法啟動等故障現象,為了避免此問題,我麼可以設定磁碟配額功能,對使用者在指定檔案系統中使用磁碟空間、檔案數量進行限制,防止使用者占用大量的磁碟空間,從而保持我們的系統儲存空間可以穩定使用。

一、磁碟配額術語介紹:
磁碟配額物件式硬碟分割區,並且要求Linux核心支援磁碟配額技術。

磁碟配額只對一般使用者有效,對管理員來說是沒有任何作用效果的。
軟限制:soft:最低限制容量,可以被超過,但會有警告資訊,超過的部分會儲存到寬限時期到期。
硬限制:hard:不能被超過限制條件。
寬限時間:當使用者使用的空間超過了軟限制但還沒達到硬限制,在這個寬限的時間到期前必須將超過的資料降低到軟限                  以下,(預設是7天),當寬限時間到期,系統將自動清除超過的資料。

一、檢查我們系統中是否已經安裝了quota程式

[root@linuxidc.com ~]# rpm -q quota 
quota-4.01-11.el7.x86_64
[root@linuxidc.com ~]# rpm -ql quota 
/usr/bin/quota
/usr/bin/quotasync
/usr/sbin/convertquota
/usr/sbin/edquota
/usr/sbin/quot
/usr/sbin/quotacheck
/usr/sbin/quotaoff
/usr/sbin/quotaon
/usr/sbin/quotastats
/usr/sbin/repquota
/usr/sbin/rpc.rquotad
/usr/sbin/setquota
/usr/sbin/xqmstats
/usr/share/doc/quota-4.01
/usr/share/doc/quota-4.01/Changelog
/usr/share/man/man1/quota.1.gz
/usr/share/man/man1/quotasync.1.gz
/usr/share/man/man8/convertquota.8.gz
/usr/share/man/man8/edquota.8.gz
/usr/share/man/man8/quot.8.gz
/usr/share/man/man8/quotacheck.8.gz
/usr/share/man/man8/quotaoff.8.gz
/usr/share/man/man8/quotaon.8.gz
/usr/share/man/man8/quotastats.8.gz
/usr/share/man/man8/repquota.8.gz
/usr/share/man/man8/rpc.rquotad.8.gz
/usr/share/man/man8/setquota.8.gz
/usr/share/man/man8/xqmstats.8.gz

二、以支援配額功能的方式掛載檔案系統
[root@linuxidc.com ~]# mount /dev/sdd1 /quotadir/###將我的分割區掛載到了一個目錄下方便使用
[root@linuxidc.com ~]# chmod 777 /quotadir/###改變目錄的許可權方便後面我們寫入測試
[root@linuxidc.com ~]# 
[root@linuxidc.com ~]# mount -o remount,usrquota,grpquota /dev/sdd1 /quotadir/
##這是臨時的掛載,我們也可以使用開機自動掛載方式:
 
[root@linuxidc.com ~]# vim /etc/fstab 
/dev/sdd1                      /quotadir      ext4    defaults,usrquota,grpquota 0 0
 
[root@linuxidc.com ~]# mount -a 
[root@linuxidc.com ~]# mount 
 
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700)
/dev/mapper/vg0-lv0 on /tmp/backup type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdd1 on /quotadir type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)##此處可以看到我們已經掛載成功了

三、建立磁碟配額的組態檔
quotacheck:
    -v:顯示掃描過程
    -u:針對掃描使用者的情況建立aquota.user

    -g:針對掃描組的情況建立aquota.group

    -c:建立新的配額檔案

    -a:掃描所有分割區

 [root@linuxidc.com ~]# quotacheck -ugc /dev/sdd1 
[root@linuxidc.com ~]# ls -l /quotadir/
total 32
-rw-------. 1 root root  6144 Jun  4 18:25 aquota.group
-rw-------. 1 root root  6144 Jun  4 18:25 aquota.user
drwx------. 2 root root 16384 Jun  4 18:11 lost+found
##看到我們分割區所掛載的目錄自動會生成兩個組態檔即可

四、實現磁碟配合限制:
edquota
        -u 使用者 :指定某用設定配額
        -t:改變寬限時間

在這我需要建立一個普通的使用者來做測試使用
[ root@linuxidc.com ~]# useradd ma
[root@linuxidc.com ~]# passwd ma 
Changing password for user ma.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

12345 [root@linuxidc.com ~]# edquota -u ma###設定使用者ma的配額
Disk quotas for user ma (uid 1001):
  Filesystem                  blocks      soft      hard    inodes    soft    hard
  /dev/sdd1                        0      10      20          0          3      5
~

五、啟用配額功能
[root@linuxidc.com ~]# quotaon /quotadir/
好的,那我麼來測試下看看
 
[ma@linuxidc.com ~]$ dd if=/dev/zero of=/quotadir/test1  bs=1k count=8
8+0 records in
8+0 records out
8192 bytes (8.2 kB) copied, 0.000230902 s, 35.5 MB/s
#寫入8k的資料時候正常被寫入了,沒有任何報錯
 
 
[ma@linuxidc.com ~]$ dd if=/dev/zero of=/quotadir/test1  bs=1k count=10
sdd1: warning, user block quota exceeded.###寫入10k的時候寫入了,但是給我們提示警告
10+0 records in
10+0 records out
10240 bytes (10 kB) copied, 0.0009096 s, 11.3 MB/s
 
[ma@linuxidc.com quotadir]$ ll -h /quotadir/
total 44K
-rw-------. 1 root root 7.0K Jun  4 18:38 aquota.group
-rw-------. 1 root root 7.0K Jun  4 18:38 aquota.user
drwx------. 2 root root  16K Jun  4 18:11 lost+found
-rw-rw-r--. 1 ma  ma    10K Jun  4 18:47 test1##此處可以看到我們test1檔案的大小為10k
 
 
###我們在寫入了10k的資料進去,看看會有什麼樣變化呢?
[ma@linuxidc.com quotadir]$ dd if=/dev/zero of=/quotadir/test2  bs=1k count=10
sdd1: write failed, user block limit reached.
dd: error writing ‘/quotadir/test2’: Disk quota exceeded
9+0 records in
8+0 records out#只寫入了8k
8192 bytes (8.2 kB) copied, 0.000170428 s, 48.1 MB/s
 
#接下來我們測試下我們寫入檔案個數:
[ma@linuxidc.com quotadir]$ mkdir a1
mkdir: cannot create directory ‘a1’: Disk quota exceeded##報錯了建立失敗了

六、檢視下我們使用者具體配額情況:

[ma@linuxidc.com root]$ quota -ugv 
Disk quotas for user ma (uid 1001): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
      /dev/sdd1      20*    10      20  6days      2      3      5       
Disk quotas for group ma (gid 1001): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
      /dev/sdd1      20      0      0              2      0      0

七、關閉磁碟配額
[root@linuxidc.com ~]# quotaoff /quotadir/###關閉單個磁碟的磁碟配額
[root@linuxidc.com ~]# quotaoff -a ###關閉系統所有已經開啟的配額
[root@linuxidc.com ~]# 
[root@linuxidc.com ~]# rm -rf /quotadir/aquota.*##如果不在使用可以將組態檔也刪除了
[root@linuxidc.com ~]# 然後刪除/etc/fstab中的自動掛載即可

 


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