說明:
在 Linux 系統中,由於是多人多工的環境,所以可能會有多人同時使用一個硬碟空間的情況發生,如果其中有少數幾個使用者大量的佔掉了硬碟空間的話,那勢必壓縮其他使用者的使用權力!因此管理員應該適當的開放硬碟的權限給使用者,以妥善的管理系統!1. 開啟硬碟的 quota 控制:在 Linux 當中,使用來作為硬碟空間管理的就是所謂的 quota 這個咚咚啦!使用這個模組要有幾個步驟,底下就分別說說吧!
另外要特別注意的是,使用 quota 時,你的核心(kernel)必須有支援 quota 這個模組,否則底下的工作全都是白做的囉!那如果萬一不幸你的核心不支援呢?那就只好自己重新編輯核心囉。編輯核心的方法在往後會提到,請詳細參考吧!
由於 quota 是只能在 ext2 的 Linux 檔案系統才能開啟使用,因此,我們必須修改 /etc/fstab 內的檔案結構才行。而 quota 的限制之 partition 則是 usrquota 與 grpquota 兩個,輸入 vi /etc/fstab 之後,進入如下的畫面,並在根目錄中(/)加入usrquota及 grpquota兩個咚咚。2. 執行 quotacheck -avug 來確認磁碟:
[root@tsai root]# vi /etc/fstab
/dev/hda5 / ext2 defaults,usrquota,grpquota 1 1
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0
/dev/hda1 /win98 vfat defaults 1 1
/dev/hdb1 /win2000 vfat defaults 1 1
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0如上圖中,我們將 /dev/hda5 也就是根目錄(/)作為 quota 的空間限制硬碟!(通常就是 /home 所在的那個硬碟就是了!)所以在 defaults 後面再加入 usrquota 及 grpquota 兩個 partition,注意喔,每個咚咚都是以 逗號 來分隔。
在做完了磁碟的規劃之後,再來就是要讓我們剛剛的設定有效化啦!要讓 usrquota 及 grpquota 這兩個 partition 開始工作,使用如下的語法:3. 編輯使用者的可使用空間:
[root@tsai root]# quotacheck -avug
Scanning /dev/hda5 [/] done
Checked 4076 directories and 81631 files
Using quotafile /quota.user
Updating in-core user quotas
Using quotafile /quota.group
Updating in-core group quotas由於我們是使用 hda5 這個硬碟作為 quota 使用,因此,quota 這個程式會去找尋這個區塊中的使用者與群組,並將所找到的資料在根目錄中以 quota.group 及 quota.user 兩個檔案存起來!其中, -avug 的參數意義為:
- -a :代表掃瞄所有具有 usrquota, grpquota 這兩個 partition 的硬碟;
- -v :代表掃瞄的時候顯示訊息在螢幕上;
- -u :代表掃瞄使用者在此硬碟中使用的檔案和目錄;
- -g :代表掃瞄使用群組在此硬碟中所使用的檔案和目錄。
好了,在加著下來就是我們要限制使用者的空間了!使用者空間的限定很簡單,只要使用 edquota -u 帳號 ,且以 vi 就可以達成!以下我們就來作作看吧!4. 編輯使用群組的可使用空間:
[root@tsai root]# edquota -u vbird
Quotas for user vbird:
/dev/hda5: blocks in use: 180, limits (soft = 0, hard = 0)
inodes in use: 45, limits (soft = 0, hard = 0)剛開始的時候,你的使用者可使用空間並不會被限制,所以上面圖中可以看到 soft 及 hard 都是 0 也就是沒有限制的狀況!OK!那這個單位是啥呢?單位是 KB ,所以當你要限制 vbird 這個使用者的空間為 50 MB 的時候,可以約略使用 50000 KB 來取代!所以你就必須以 vi 來直接改成下圖:
Quotas for user vbird:
/dev/hda5: blocks in use: 180, limits (soft = 50000, hard = 50000)
inodes in use: 45, limits (soft = 50000, hard = 50000)最後再按 :wq 退出 vi 即完成了使用者的硬碟空間限制啦!簡單吧!那何謂 soft 及 hard 呢?基本上,linux 容許你有一定的警戒空間,例如你給 vbird 的真實容量限制是 50000KB,但是你希望在使用了 40000KB 的時候系統就對 vbird 發出警告,告知他的硬碟使用率已經太高了,這時你的 soft 就可以設成 40000 而 hard 仍是 50000!
實際上我們在進行硬碟容量限制的時候,通常是以一個群組的人來作限制,例如在一個研究室中,自己研究室的同仁可使用 1G 的空間,而對外開放的人員僅能使用 200MB 的空間!當然了,群組的容量一定要比個人的容量大啦!否則設定就一定會出現錯誤!群組的設定與使用者的設定是一樣的,只是參數改成 -g 而已!5. 啟動與關閉 quota :
[root@tsai root]# edquota -g vbird
Quotas for group users:
/dev/hda5: blocks in use: 0, limits (soft = 0, hard = 0)
inodes in use: 0, limits (soft = 0, hard = 0)例如上圖中,users 這個群組也是尚未設定容許空間設定!設定與使用者相同!只是要特別注意不要讓群組可使用空間小於使用者的限制!
設定完成之後當然就是要使 quota 可以動作啦!quota 的啟動與關閉分別使用下面的參數:6. 開機自動載入 quota 設定:啟動的時候,如果你可以看到底下的訊息就表示 quota 啟動成功啦!
- 啟動: quotaon -avug
- 關閉: quotaoff -avug
[root@tsai root]# quotaon -avug
/dev/hda5: group quotas turned on
/dev/hda5: user quotas turned on
我們設定 quota 是為了維持系統的資源分配合理性,當然希望一開機就可以自動載入 quota 的設定囉。如何載入呢,就直接在 /etc/rc.d/rc.local 這個開機設定檔中的最後一行加入:include ("../../include/old_tail.php"); ?>
[root@tsai root]# vi /etc/rc.d/rc.local
/sbin/quotaon -avug這樣一來,每次開機的過程中就會自動的載入 quota 的設定了!