Linux磁碟配額測試過程完全攻略

2020-07-16 10:05:10
我們的磁碟配額已經生效,接下來測試一下是否會限制我們的使用者。以 lamp1 使用者為例,

因為 lamp1 使用者除容量被限制外,也限制了檔案個數。先測試檔案個數是否被限制了,命令如下:

[[email protected] ~]# chmod 777 /disk/
#給/disk目錄賦予許可權,lamp1使用者要擁有寫許可權
[[email protected] ~]# su - lamp1
#切換成lamp1使用者
[[email protected] ~]$ cd /disk/
#進入/disk目錄
[[email protected] disk]$ touch 11
#建立檔案
[[email protected] disk]$ touch 22
[[email protected] disk]$ touch 33
[[email protected] disk]$ touch 44
[[email protected] disk]$ touch 55
[[email protected] disk]$ touch 66
[[email protected]t disk]$ touch 77
[[email protected] disk]$ touch 88
[[email protected] disk]$ touch 99
sdb1: warning, user file quota exceeded.
#有警告資訊了,因為軟限制是 8 個
[[email protected] disk]$ ls
11 22 33 44 55 66 77 88 99 aquota. group aquota.user lost+found
#雖然警告了,但是第9個檔案依然建立
[[email protected] disk]$ touch 10
[[email protected] disk]$ touch 111
sdb1: write failed, user file limit reached.
touch:無法建立"111":超出磁碟配額
#超出磁碟配額
[[email protected] disk]$ ls
10 11 22 33 44 55 66 77 88 99 aquota. group aquota.user lost+found
#第11個檔案沒有建立

還記得嗎?磁碟配額的概念是指定的普通使用者在指定的分割區中使用磁碟空間和檔案個數的限制。所以一定要記得切換使用者和建立檔案的目錄,否則預設全部寫入 / 分割區,而我們並沒有在 / 分割區上設定配額。

我們切換到 root 身份,使用 repquota 命令檢視一下:

[[email protected] ~]# repquota -uvs /disk/
*** Report for user quotas on device /dev/sdbl Block grace time: 8days; Inode grace time: 8days
Block limits File limits
User used soft hard grace used soft hard grace
root -- 13 0 0 2 0 0
lampl -+ 0 40000 50000 10 8 10 7days
lamp2 -- 0 245M 293M 0 0 0
lamp3 -- 0 245M 293M 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 4
Used average: 4.000000

看到了嗎? lamp1 使用者的檔案個數的 grace 欄位開始倒數了。

刪除一個檔案,然後建立一個大於 50MB 的檔案,看看磁碟容量是否被限制了。命令如下:

[[email protected] disk]$ rm -rf 10 #刪除檔案10,空出檔案個數
[[email protected] disk]$ dd if=/dev/zero of=/disk/tesffile bs=1M count=60
#建立tesffile檔案,指定檔案大小為60MB
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd:正在寫入"/disk/111":超出磁碟配額
#報錯,超出磁碟配額
記錄了 49+0的讀入
記錄了 48+0的寫出
51200000位元組(51 MB)已複製,0.538582 秒,95.1 MB/秒
[lamp1 @localhost disk]$ ll -h tesffile
-rw-rw-r-- 1 lamp1 lamp1 49M 4月 17 02:52 tesffile
#檢視一下tesffile檔案的大小,並沒有超出50MB的硬限制

在 dd 命令中,if 用於指定輸入項,這裡我們用 /dev/zero 作為輸入項,會不停地向目標檔案中寫 0;of 用於指定輸出項,這裡用 /disk/testfilef 作為目標檔案;bs 指定每次複製 1MB 資料;count 指定複製 60 次。也就是建立一個大小為 60MB 的 testfile 檔案,但是這個檔案大小超出了磁碟容量硬限制,所以只建立了 49MB,證明容量限制也生效了。