介紹:
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
Leave a Reply to 懿古今 Cancel reply