1,791 瀏覽數

磁碟配額

磁碟配額 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  

網友的想法

  1. 自動參照通知: Linux – File | Benjr.tw

發表迴響