一、什麼是 Quota
在 Linux 系統中,由於是多人多工的環境,所以會有多人共同使用一個磁盤空間的情況發生, 如果其中有少數幾個使用者大量的佔掉了磁盤空間的話,那勢必壓縮其他使用者的使用權力。 因此管理員應該適當的限制硬盤的容量給使用者,以妥善的分配系統資源
二、Quota 的一般用途
1.
針對 WWW server ,例如:每個人的網頁空間的容量限制。
針對 mail server,例如:每個人的郵件空間限制。
針對 file server,例如:每個人最大的可用網絡磁盤空間
2.
針對 Linux 系統主機上面的配置使用:
限制某一羣組所能使用的最大磁碟配額 (使用羣組限制):
你可以將你的主機上的使用者分門別類,你比較喜好的那一羣的使用配額就可以給高一些
限制某一使用者的最大磁碟配額 (使用使用者限制):
在限制了羣組之後,你也可以再繼續針對個人來進行限制,使得同一羣組之下還可以有更公平的分配。
三、 Quota 的使用限制
雖然 quota 很好用,但是使用上還是有些限制要先了解的:
僅能針對整個 filesystem:
quota 實際在運行的時候,是針對整個 filesystem進行限制的, 例如:如果你的 /dev/sda5 是掛載在 /home 底下,那麼在 /home 底下的所有目錄都會受到限制。
核心必須支持 quota :
Linux 核心必須有支持 quota 這個功能才行
只對一般身份使用者有效:
並不是所有在 Linux 上面的帳號都可以配置 quota ,例如 root 就不能配置 quota , 因爲整個系統所有的數據幾乎都是root的。
實例:
文件系統支持:
查看home是個否是獨立的filesystem.
[root@www ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 4.8G 740M 3.8G 17% /home
[root@www ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw)
手動加入quota
[root@www ~]# mount -o remount,usrquota,grpquota /home
(此做法在下次重啓後會失效,若要永久生效,最好寫入配置檔中)
[root@www ~]# vim /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
[root@www ~]# umount /home
[root@www ~]# mount -a
[root@www ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
quotacheck :掃瞄文件系統並創建 Quota 的記錄檔
[root@www ~]# quotacheck [-acvugfm] [/mount_point]
選項與參數:
-a :掃瞄所有在 /etc/mtab 內,含有 quota 支持的 filesystem,加上此參數後,
/mount_point 可不必寫,因爲掃瞄所有的 filesystem
-c :創建,不讀取原有數據庫。
-u :針對使用者掃瞄文件與目錄的使用情況,會創建 aquota.user
-g :針對羣組掃瞄文件與目錄的使用情況,會創建 aquota.group
-v :顯示掃瞄過程的資訊;
-f :強制掃瞄文件系統,並寫入新的 quota 配置檔
-m :防止以只讀方式掛載此係統
Quota 啓動、 關閉與限制值配置
1. quotaon :啓動 quota 的服務
[root@www ~]# quotaon [-avug]
[root@www ~]# quotaon [-vug] [/mount_point]
選項與參數:
-u :針對使用者啓動 quota (aquota.user)
-g :針對羣組啓動 quota (aquota.group)
-v :顯示啓動過程的相關信息;
-a :根據 /etc/mtab 內的 filesystem 配置啓動有關的 quota ,若不加 -a 的話,
則後面就需要加上特定的那個 filesystem
2.quotaoff :關閉 quota 的服務
[root@www ~]# quotaoff [-a]
[root@www ~]# quotaoff [-ug] [/mount_point]
選項與參數:
-a :全部的 filesystem 的 quota 都關閉 (永久關閉則編輯 /etc/mtab 刪除usrquota,grpquota)
-u :僅針對後面接的那個 /mount_point 關閉 user quota
-g :僅針對後面接的那個 /mount_point 關閉 group quota
3. edquota :編輯帳號/羣組的限值與寬限時間
[root@www ~]# edquota [-u username] [-g groupname]
[root@www ~]# edquota -t 修改寬限時間
[root@www ~]# edquota -p 範本帳號 -u 新帳號
選項與參數:
-u :後面接帳號名稱。可以進入 quota 的編輯畫面 (vim) 去配置 username 的限制值;
-g :後面接羣組名稱。可以進入 quota 的編輯畫面 (vim) 去配置 groupname 的限制值;
-t :可以修改寬限時間。
-p :複製範本。那個 範本帳號 爲已經存在並且已配置好 quota 的使用者,
意義爲『將 範本帳號 這個人的 quota 限制值複製給 新帳號
範例:
[root@www ~]# edquota -u centos
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 0 0 10 0 0
當 soft/hard 爲 0 時,表示沒有限制.
setquota :直接在命令中配置 quota 限額(非交互式的)
[root@www ~]# setquota
選項與參數
-u 指定user用戶
-g 指定group組
-t 限定用戶的寬限時間
-a 設置所有文件系統
範例:
[root@www ~]# setquota -u redhat 100000 200000 0 0 /home
#repquota: 顯示磁盤的摘要信息。
#warnquota :對超過限額者發出警告信
它可以依據 /etc/warnquota.conf 的配置,然後找出目前系統上面 quota 用量超過 soft (就是有 grace time 出現的那些傢伙) 的帳號,透過 email 的功能將警告信件發送到使用者的電子郵件信箱。 warnquota 並不會自動運行,所以需要手動去運行它。單純運行warnquota 之後,他會發送兩封信出去, 一封給 用戶,一封給 root