Linux下使用quota工具為使用者配置磁碟配額

介紹:

Linux是多使用者多工的作業系統,這就難免出現多個使用者共享磁碟的情況,如何使多個使用者公平的使用磁碟,就是磁碟配置要解決的問題。當然也可以在每建立一個使用者的時候,將它的主目錄建在一個單獨的邏輯分割槽上,但是這樣太麻煩了,也不靈活。
本文以針對使用者的磁碟配額配置為例,演示磁碟配額的配置流程。

操作步驟:

1、安裝quota軟體包

[root@localhost ~]# yum install -y quota

2、給指定分割槽開啟磁碟配額功能

編輯/etc/fstab(此檔案負責記錄檔案系統資訊)

[root@localhost ~]# vim /etc/fstab

如下圖(看第一個分割槽),給想要開啟磁碟配額的分割槽的掛載方式後面加上,usrquota,grpquota,其中usrquota是開啟使用者磁碟限額,grpquota是開啟組磁碟限額。

儲存並退出此檔案後配置並未生效,還需要重新掛載磁碟。

[root@localhost ~]# mount -o remount /

3、掃描所有支援磁碟配額的分割槽並在其根目錄生成相應的配置檔案

[root@localhost ~]# quotacheck -avugm

上面的命令中,引數a 掃描/etc/fstab中所有支援磁碟配額的分割槽,v 顯示指令執行過程,u 生成使用者磁碟配額配置檔案,g 生成組使用者配置檔案,m 強制掃描(有的時候不加m會報錯,最好加上)。

記得把selinux關上再執行此命令。

執行完可以檢視下分割槽掛載的目錄中出沒出現aquota.group(組磁碟配額配置檔案)、aquota.user(使用者磁碟配額配置檔案)這兩個配置檔案,有就代表成功了。

當然這兩個檔案不一定都有,因為你有可能在執行命令的時候指定只生成使用者磁碟配額配置檔案,那就看不到組磁碟配額配置檔案了。

4、為使用者/組設定磁碟配額大小

[root@localhost ~]# edquota -u 接使用者名稱                       //為使用者配置磁碟配額
[root@localhost ~]# edquota -g 接組名                        //為組配置磁碟配額

命令執行後會自動使用vi/vim文字編輯器開啟對應配置檔案,下面是對此配置檔案中各個區域的解釋(順序,從左到右)。

Filesystem 檔案系統
blocks 已經使用的塊數(塊的單位為1K)
soft 塊數軟限制,0表示禁用
hard 塊數硬限制,0表示禁用
inodes 已經建立的檔案個數,如果後面有*表示已經超出軟限制
soft 建立的檔案個數的軟限制,0表示禁用
hard 建立的檔案個數的硬限制,0表示禁用

其中軟限制的額度在達到後會彈出警告,如果使用者在寬限期(預設7天)內還未刪除超出部分的檔案,軟限制就會轉為硬限制,阻止使用者繼續寫入資料。

可以透過如下命令修改寬限期。

[root@localhost ~]# edquota -t

如上圖可以看到,Block grace period(塊的寬限期)對應值是7days(七天),Inode grace period(檔案數量的寬限期)對應值也是7days(7天),這裡直接修改對應值即可。上圖中因為我的裝置名稱比較長,所以文字排版亂了,導致值和選項沒有對應起來,但不影響其生效。

修改後儲存並退出。

此外,所涉及到容量的配置部分的計算單位都是KB,比如上圖中容量的hard值我設定成了20480,這個數值的單位就是KB,可以換算成20MB。

修改後,儲存並退出。

如果有多個賬戶需要設定相同的磁碟配額則可以使用edquota搭配-p引數實現,例如:

[root@localhost ~]# edquota -p user1 user2                    將user1的磁碟配額配置複製給user2。

5、開啟磁碟配額功能

quotaon 接需要開啟磁碟配額功能的分割槽所掛載的目錄,例如本實驗中分割槽掛載到了根目錄,則執行如下命令開啟該分割槽的磁碟配額。

[root@localhost ~]# quotaon /

關閉磁碟配額:

[root@localhost ~]# quotaoff /

6、測試

切換為被設定了磁碟配額的使用者身份,本實驗中是user1。

[root@localhost ~]# su - user1

進入使用者郵箱目錄(本實驗中/var/mail目錄存在於根目錄所掛載的磁碟上,所以根目錄的磁碟限額對其有效)。

[root@localhost ~]# cd /var/mail

寫1G的資料到user1的郵箱中。

[root@localhost mail]# dd if=/dev/zero of=user1 bs=1M count=1000

可以看到,彈出提示說超出磁碟限額了。

檢視下user1使用者的郵箱現在的大小,正好是20MB。

[root@localhost mail]# ll -h user1

最後記得清空郵箱中的資料哦。

[root@localhost mail]# echo '' > user1

sendmail設定使用者郵箱大小

sendmail本身是沒有限制使用者郵箱大小這一功能的,但這並不妨礙我們“曲線救國”。
解決思路:
透過配置quota來限制使用者所能使用的磁碟配額,以此來限制使用者的郵箱大小。此配額僅會在開啟配額限制的分割槽上生效,不影響使用者在其他分割槽或磁碟上儲存檔案。
操作步驟:
在使用者郵箱目錄所處的磁碟上為指定使用者開啟磁碟配額即可,磁碟配額配置教程參考此篇文章:

Linux下使用quota工具為使用者配置磁碟配額