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工具為用户配置磁盤配額