Linux 基礎學習篇 - Red Hat Linux 6.1

使用 Quota 限制使用者的硬碟空間 - for Red Hat Linux 6.1

大概在 1999~2000 年期間為了防止自己忘記所作的學習心得紀錄!

最近更新時間: 2001/08/03

1999 年初次接觸 Unix 系統,1999 年底接觸 Red Hat 6.1,而在 2000 開始撰寫一些心得文章,於是有了底下這些文字的產生。 這些文字對大家來說,可能沒什麼,但是對鳥哥來說,這是相當珍貴的!所有鳥站的資料起源,都是從這些文字開始的! 慢慢再將許多的指令分門別類的處理進去!網站的資料彙整,真的相當花費時間啊~

不過對於學習者來說,這些資料真的不要再讀了!因為實在太老舊... 建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。最新文章請前往鳥站首頁查閱囉!

說明

在 Linux 系統中,由於是多人多工的環境,所以可能會有多人同時使用一個硬碟空間的情況發生,如果其中有少數幾個使用者大量的佔掉了硬碟空間的話,那勢必壓縮其他使用者的使用權力!因此管理員應該適當的開放硬碟的權限給使用者,以妥善的管理系統!

在 Linux 當中,使用來作為硬碟空間管理的就是所謂的 quota 這個咚咚啦!使用這個模組要有幾個步驟,底下就分別說說吧!

另外要特別注意的是,使用 quota 時,你的核心(kernel)必須有支援 quota 這個模組,否則底下的工作全都是白做的囉!那如果萬一不幸你的核心不支援呢?那就只好自己重新編輯核心囉。編輯核心的方法在往後會提到,請詳細參考吧!

1. 開啟硬碟的 quota 控制
由於 quota 是只能在 ext2 的 Linux 檔案系統才能開啟使用,因此,我們必須修改 /etc/fstab 內的檔案結構才行。而 quota 的限制之 partition 則是 usrquota 與 grpquota 兩個,輸入 vi /etc/fstab 之後,進入如下的畫面,並在根目錄中(/)加入usrquota及 grpquota兩個咚咚。
 
[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,注意喔,每個咚咚都是以 逗號 來分隔。

2. 執行 quotacheck -avug 來確認磁碟
在做完了磁碟的規劃之後,再來就是要讓我們剛剛的設定有效化啦!要讓 usrquota 及 grpquota 這兩個 partition 開始工作,使用如下的語法:
 
[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.groupquota.user 兩個檔案存起來!其中, -avug 的參數意義為:

  • -a :代表掃瞄所有具有 usrquota, grpquota 這兩個 partition 的硬碟;
  • -v :代表掃瞄的時候顯示訊息在螢幕上;
  • -u :代表掃瞄使用者在此硬碟中使用的檔案和目錄;
  • -g :代表掃瞄使用群組在此硬碟中所使用的檔案和目錄。
3. 編輯使用者的可使用空間
好了,在加著下來就是我們要限制使用者的空間了!使用者空間的限定很簡單,只要使用 edquota -u 帳號 ,且以 vi 就可以達成!以下我們就來作作看吧!
 
[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!
 

4. 編輯使用群組的可使用空間
實際上我們在進行硬碟容量限制的時候,通常是以一個群組的人來作限制,例如在一個研究室中,自己研究室的同仁可使用 1G 的空間,而對外開放的人員僅能使用 200MB 的空間!當然了,群組的容量一定要比個人的容量大啦!否則設定就一定會出現錯誤!群組的設定與使用者的設定是一樣的,只是參數改成 -g 而已!
 
[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 這個群組也是尚未設定容許空間設定!設定與使用者相同!只是要特別注意不要讓群組可使用空間小於使用者的限制!

5. 啟動與關閉 quota
設定完成之後當然就是要使 quota 可以動作啦!quota 的啟動與關閉分別使用下面的參數:
  • 啟動: quotaon  -avug
  • 關閉: quotaoff -avug
啟動的時候,如果你可以看到底下的訊息就表示 quota 啟動成功啦!
 
[root@tsai  root]# quotaon  -avug
/dev/hda5: group quotas turned on
/dev/hda5: user quotas turned on
6. 開機自動載入 quota 設定
我們設定 quota 是為了維持系統的資源分配合理性,當然希望一開機就可以自動載入 quota 的設定囉。如何載入呢,就直接在 /etc/rc.d/rc.local 這個開機設定檔中的最後一行加入:
 
[root@tsai  root]# vi /etc/rc.d/rc.local
/sbin/quotaon -avug

這樣一來,每次開機的過程中就會自動的載入 quota 的設定了!

伺服器篇文件
各版本彙整說明
CentOS 6.x