磁碟配額 Disk Quota
Step 1 : 修改 /etc/fstab 檔案
Step 2 : 修改 /etc/mtab
Step 3 : 啟動磁碟配額
Step 4 : 修改 user 磁碟配額限制
Step 5 : 修改 group 磁碟配額限制
Step 6 : 其他相關指令
Step 1 : 修改/etc/fstab檔案
為了限制使用者在 Server 上的儲存空間的使用,我們可以透過 Disk Quota 的方式將每一位使用者的使用空間做限制,限制主要是針對個別的分割區 partition ,不過我們是無法針對整個 (/) root 磁區做限制,所以要限制的磁區必須是掛載在其他的路徑下,主要在 /etc/fstab 中宣告要針對哪一個磁區限制,LVM 的磁區一樣可以使用 Disk Quota.配置方式.usrquota 是針對個人啟動磁碟配額,grpquota 是針對群組啟動磁碟配額.
修改/etc/fstab如下(針對 /Home 啟動磁碟配額)
[root@benjr ~]# vi /etc/fstab LABEL/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 /dev/sdb1 /home ext3 defaults,usrquota,grpquota 1 2 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/sda3 swap swap defaults 0 0
PS:我們無法針對 " / " 來設定Quota
Step 2 : 磁區重新掛載
對於剛剛修改好的 Disk Quota 還需要將 /home 磁區重新掛載方式有兩種.
#mount -o remount
[root@benjr ~]# mount -o remount /home
#mount -a
[root@benjr ~]# mount -a
重新掛載 /home可以讓 Disk Quota 生效,可以檢查 /etc/mtab 目查看目前系統掛載情況.如果有ˋ正確成功掛載上,你的 /etc/mtab 就會出現 userquota 以及 grpquota.
[root@benjr ~]# cat /etc/mtab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
接下來執行 #quotacheck -avug 或是 #quotacheck /home 來產生 Disk Quota 的 aquota.group 和 aquota.user 檔案
[root@benjr ~]# quotacheck -avug quotacheck: Scanning /dev/sdb1 [/home] quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory done quotacheck: Checked 3 directories and 2 files quotacheck: Old file not found. quotacheck: Old file not found. [root@benjr ~]# ll /home total 32 -rw——- 1 root root 6144 Dec 18 22:12 aquota.group -rw——- 1 root root 6144 Dec 18 22:12 aquota.user drwx—— 2 root root 16384 Dec 18 19:40 lost+found
-a 檢視/etc/mtab 所設定的磁碟配額
-v 顯示程式執行過程
-u 編輯user的資訊
-g 編輯group的資訊
#quotacheck -avug 程式會在 /home目錄下產生 aquota.group 以及 aquota.user 2個檔案,這些檔案就是磁碟配額的資料庫,其中的 " aquota. group " 是群組資料配額檔,而 "aquota.user" 則是個人資料配額.
或是
[root@benjr ~]# quotacheck /home
Step 3 : 啟動磁碟配額
執行 #quotaon -auvg 以啟動磁碟配額,這個動作在 /etc/rc.d/rc.sysinit 中有設定所以不用擔心系統重新開機還要自己手動開啟.
[root@benjr ~]# quotaon -auvg /dev/sdb1 [/home]: group quotas turned on /dev/sdb1 [/home]: user quotas turned on
-a 檢視 /etc/fstab 所設定的磁碟配額
-v 顯示程式執行過程
-u 編輯 user 的資訊
-g 編輯 group 的資訊
相對應的也可以將 Disk Quota 關掉的程式 " #quotaoff [options] [filesystems] "關閉磁碟配額.
[root@benjr ~]# quotaoff -a [root@benjr ~]# quotaoff -ugv /mountpoint
選項與參數:
-a :根據 /etc/fstab 所設定的磁碟配額都關閉
-u :僅針對後面的 mountpoint 關閉使用者的配額.
-g :僅針對後面的 mountpoint 關閉群組的配額.
-v 使用verbose(較多的資訊)模式來顯示關閉配額.
Step 4 : 修改 User 磁碟配額限制
剛剛都設定好 Disk Quota ,接下來就是將設定這磁碟可使用空間大小. 執行 #edquota -u user 以修改磁碟配額限制.Disk Quota 預設是用 vi 來編輯,可以使用 #export EDITOR=gedit 來選擇你想要使用的編輯器, gedit 屬於圖形介面的編輯器有點類似於 windows 的記事本.
[root@benjr ~]# edquota -u ben Disk quotas for user ben (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sdb1 84 0 0 8 0 0 ————————————- ———————————– 以檔案大小為設定範圍 以 inode 個數為設定範圍 (大小以KB為單位)
其中的 blocks 和 indoes 指出目前 block 和 inode 使用情況.而 soft 和 hard 的意思各為:
soft: 當超過限定,會收到警告,但對於磁碟寫入並無影響,但超過期限(預設為七天,可以修改),檔案便無法再寫入了.當超過 soft 限制時會收到以下警告訊息 "sdb1 : warning,user block quota exceeded. "
hard: 當超過限定,檔案便無法再寫入了.系統會皆給予錯誤訊息 "sdb1 : write failed, user block limit reached"
soft 以及 hard 為 0 時,表示沒有限制使用空間.
edquota 的參數:
-p 作為複製,ex: #edquota -p user1 user2
-t 設定soft限制時間
-u 編輯user的資訊
-g 編輯group的資訊
執行 #edquota -t 以修改soft 磁碟配額期限(預設為七天),也就是當使用者的 soft 達到限制後使用者就完全沒寫入權限了.
[root@benjr ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be:days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sdb1 7days 7days
除了天以 days 外還可以使用 hours, minutes, 或 seconds 來表示.
step 5 : 修改 group 磁碟配額限制
剛剛針對個別的使用者來限定使用空間大小,我們還可以針對群組來設限,只要這群組所有的使用者的資料總量大小超過限制時不管在群組內的任一使用者都無法在新增內容.
[root@benjr ~]# edquota -u it Disk quotas for group it (uid 506): Filesystem blocks soft hard inodes soft hard /dev/sdb1 84 0 0 8 0 0 ————————————- ———————————– 以檔案大小為設定範圍 以 inode 個數為設定範圍 (大小以KB為單位)
其限制和剛剛 User 的限制一樣.
step 6 : 其他相關指令
#quota [options] [user|group] //檢視磁碟配額
-q 顯示超過配額的狀況.
-v 使用verbose(較多的資訊)模式來顯示配額.
[root@benjr ~]# quota ben Disk quotas for user ben (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 100156* 100000 150000 6days 14* 12 0 6days
#repquota [options] filesystems //檢視磁碟配額
-a 顯示/etc/fstab 檔的磁碟配額.
-g 顯示群組的配額.
-u 顯示使用者的配額.
-v 使用verbose(較多的資訊)模式來顯示配額.
[root@benjr ~]# repquota -a *** Report for user quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ———————————————————————- root – 184220 0 0 4 0 0 ben ++ 100156 100000 150000 6days 14 12 0 6days john – 50108 100000 150000 14 0 0
One thought on “Linux – 磁碟配額”