Linux 基礎學習篇 - Mandrake 9

第十四章、磁碟配額 (Quota) - for Mandrake 9

鳥哥的第一本書籍的主要內容,內容稍微與書籍不太一樣了!

最近更新時間: 2003/02/10

鳥哥的第一本書大約是在 2002 年的年底左右出版的,內容幾乎都是 Linux 基礎學習,一點也沒有談到伺服器的部份!這也是後來的雛型! 不過內容錯誤的地方很多,導致在 2003 年的年底推出了『基礎學習篇增訂版』的內容,大致上就是處理掉一些比較有嚴重錯誤的部份。 不過,因為 Linux 的版本變化非常快速,因此,寫完了這些文件之後,鳥哥還是持續在網站上更新文件內容,導致原本書籍內容的資料與網站資料差異太大! 這個問題直到鳥哥在 2008 年左右才發現!糟糕了!舊版的文件資料已經遺失~覺得相當扼腕~

因此,在底下的文件內容與當初的書籍內容雖然大同小異,不過章節的編排卻是有所不同!再花時間去一個一個處理,似乎也不太符合成本效益! 鳥哥僅是想要將自己以前的文件記錄下來而已,同時將過時的 big5 編碼改回 utf8 編碼,再加上可以支援 RWD 的樣式而已啦! 內容已經不多做編排~因此,如果內容文件你看不懂,那也是應該的! ^_^

建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。最新文章請前往鳥站首頁查閱囉!

什麼是 quota?

quota 就字面上的意思來看,呵呵!就是有多少『限額』的意思啦!如果是用在零用錢上面,就是『有多少零用錢一個月』的意思之類的。如果是在容量空間上面呢?以 Linux 來說,呵呵!就是有多少容量限制的意思。
 
在 Linux 系統中,由於是多人多工的環境,所以會有多人共同使用一個硬碟空間的情況發生,如果其中有少數幾個使用者大量的佔掉了硬碟空間的話,那勢必壓縮其他使用者的使用權力!因此管理員應該適當的開放硬碟的權限給使用者,以妥善的分配系統資源!避免有人抗議呀!比較常使用的幾個情況是:
  • (1) 例如每個人的網頁空間的容量限制!
  • (2) 每個人的郵件空間限制。
在 Linux 當中,使用來作為硬碟空間管理的就是所謂的 quota 這個咚咚啦!使用這個模組要有幾個步驟,底下就分別說說吧!另外要特別注意的是,使用 quota 時有幾個基本的限制需要談一談:
  • quota 實際在運作的時候,是針對『整個 partition』進行限制的,例如:如果你的 /dev/hda5 是掛載在 /home 底下,那麼在 /home 底下的所有目錄都會受到限制!
  • Linux 系統核心必須有支援 quota 這個模組才行:如果您是使用 Mandrake 的預設核心,嘿嘿!那恭喜你了,你的系統已經預設有開放 quota 這個模組囉!如果您是自行編譯核心的,那麼請特別留意您是否已經『真的』開啟了 quota 這個模組?否則底下的功夫將全部都視為『白工』。至於核心編譯的過程我們會在未來進行說明呦!
  • 目前新版的 Linux distributions 如: Mandrake 9.0 與 Red Hat 8.0 等使用的是 Kernel 2.4.xx 的核心版本,這個核心版本支援新的 quota 模組,使用的預設檔案( aquota.user, aquota.group )將不同於舊版本的 quota.user, quota.group !(多了一個 a 呦!)而由舊版本的 quota 可以藉由 convertquota 這個程式來轉換呢!
 quota 這支程式的限制內容主要分為底下幾個部分:
  • soft :這是最低限制容量的意思,使用者在寬限期間之內,他的容量可以超過 soft ,但必需要寬限時間之內將磁碟容量降低到 soft 的容量限制之下!
  • hard :這是『絕對不能超過』的容量!跟 soft 相比的意思為何呢?通常 hard limit 會比 soft limit 為高,例如網路磁碟空間為 30 MB ,那麼 hard limit 就設定為 30MB ,但是為了讓使用者有一定的警戒心,所以當使用空間超過 25 MB 時,例如使用者使用了 27 MB 的空間時,那麼系統就會警告使用者,讓使用者可以在『寬限時間內』將他的檔案量降低至 25 MB ( 亦即是 soft limit )之內!也就是說, soft 到 hard 之間的容量其實就是寬限的容量啦!可以達到針對使用者的『警示』作用!
  • 寬限時間:那麼寬限時間就可以很清楚的知道含意是什麼了!也就是當您的使用者使用的空間超過了 soft limit ,卻還沒有到達 hard limit 時,那麼在這個『寬限時間』之內,就必需要請使用者將使用的磁碟容量降低到 soft limit 之下!而當使用者將磁碟容量使用情況超過 soft limit 時,『寬限時間』就會自動被啟動,而在使用者將容量降低到 soft limit 之下,那麼寬限時間就會自動的取消囉!

基本的 quota 指令

在開始進行 quota 的實作之前,我們得來瞭解一下 quota 要使用的指令囉!基本上分為兩種,一種是查詢功能(quota, quotacheck, quotastats, warnquota, repquota),另一種則是編輯 quota 的內容( edquota, setquota )。底下我們來談一談這些基本的指令吧!

  • quota

  • 語法
    [root @test /root ]# quota [-guvs] [user,group]
    參數說明:
    -g  :顯示 group 群組
    -u  :顯示 user
    -v  :顯示 quota 的值
    -s  :選擇 inod 或 硬碟空間來顯示
    範例:
    [root @test /root ]# quota -guvs    <==顯示目前執行者(就是 root )的 quota 值
    [root @test /root ]# quota -uvs test <==顯示 test 這個使用者的 quota 值
    說明
    這個指令僅是使用來『顯示(display)』目前某個群組或者某個使用者的 quota 限值!您可以使用來觀察一下呦!

  • quotacheck

  • 語法
    [root @test /root ]# quotacheck [-auvg] /yourpath
    參數說明:
    -a  :掃瞄所有在 /etc/mtab 裡頭已經 mount 的具有 quota 支援的磁碟
    -u  :掃瞄使用者的檔案與目錄
    -v  :顯示掃瞄過程
    -g  :掃瞄群組使用的檔案與目錄
    -m :強制進行 quotacheck 
    範例:
    範例一、要針對 /home 這個 partition 進行 quota 的規劃:
    [root@test root ]# quotacheck -uvg /home       <==開始掃瞄 /home 這一個獨立磁區的目錄
    quotacheck: Scanning /dev/hda3 [/home] done      <==顯示 /home 磁區為 /dev/hda3 !
    quotacheck: Checked 35 directories and 342 files <==掃瞄完畢,有 35 目錄與 342 檔案。
    [root@test root ]# ls -l /home          <==查看一下 /home 這個目錄底下,兩個檔案產生了!
    -rw-------    1 root     root         7168 May  6 18:37 aquota.group
    -rw-------    1 root     root         7168 May  6 18:37 aquota.user
     
    關於 quotacheck 發生錯誤的解決方法:
    # 有些時候,在新版的 Linux distribution 當中,進行 quotacheck 時,可能會出現
    # quotacheck: Cannot get quotafile name for /dev/hda3
    # quotacheck: Cannot get quotafile name for /dev/hda3
    # 這可能是新版的 quota 在設計時的小問題,解決的方法有兩個:
    [root@test root]# quotacheck -uvgm 
    # 加上 -m 的參數來強制進行,或者是:
    [root@test root]# touch /home/aquota.user; touch /home/aquota.group
    [root@test root]# quotacheck -uvg
    # 既然 quotacheck 找不到 quotafile ,那麼我就手動將 quotafile 建立起來即可!
    # 然後再重新進行 quotacheck 一次即可!
    # 注意喔!因為我的 /dev/hda3 對應到 /home ,所以當然就是在 /home 底下建立起 qoutafile 了!
    說明
    這這個指令主要的目的在掃瞄某一個磁碟的 quota 空間,他會針對該磁碟進行掃瞄,並且,由於該磁碟若持續運作時,可能掃瞄的過程中,檔案可能會增減,造成 quota 掃瞄的錯誤發生,因此,當使用 quotacheck 時,該磁碟將『自動被設定成為唯獨磁區(read-only);至於掃瞄完畢之後,掃瞄所得的磁碟空間結果會寫入該磁區最頂端(例如:在我的例子中,掃瞄 /home 這個 /dev/hda3 的磁區,如果是初次掃瞄,那麼掃瞄完畢之後會產生 aquota.user 與 aquota.group ,會放置在 /home/aquota.xxx 底下!而如果是建立 quota 後的掃瞄,那麼就會更新這兩個檔案!)另外, Linux 也特別強調 quota 在使用的時候,需要特別注意在 reboot 時,得先將 quota 關閉才好!
    此外,由於新版的 Linux distribution 在 quota 的設計上似乎有點小問題,有時候無法完整的進行 quotacheck ,發生如同上表的情況,解決的方法就是主動手動的建立 quotafile 即可喔!

  • edquota

  • 語法
    [root @test /root ]# edquota [-u user] [-g group] [-t]
    [root @test /root ]# edquota -p user_demo -u user
    參數說明:
    -u  :編輯 user 的 quota
    -g  :編輯 group 的 quota
    -t  :編輯寬限時間(就是超過 quota 值後,還能使用硬碟的寬限期限)
    -p  :copy 範本(以建立好的使用者或群組)到另一個使用者(或群組)
    範例:
    [root @test /root ]# edquota -u test        <==設定 test 這個使用者的 quota 數值,會直接進入 vi 畫面
    Disk quotas for user test (uid 501):
      Filesystem                   blocks       soft       hard     inodes     soft     hard
      /dev/hda3                         8          0          0          5        0        0
    修改一下成為:
    Disk quotas for user test (uid 501):
      Filesystem                   blocks       soft       hard     inodes     soft     hard
      /dev/hda3                         8       50005000          5     50005000

    [root @test /root ]# edquota -p test -u test2  <==將 test 這個人的 quota 資料複製給 test2 這個人!

    [root @test /root ]# edquota -t         <==設定寬限時間,也就是超過 quota 值之後的修正時間啦!
    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/hda3                  0minutes               0minutes
    上面的 0minutes 可以改成 60minutes 即可!也就是 60 分鐘之內必須要趕快整理硬碟的意思!

    說明
    這個指令就是在編輯每一個『個人』或者是『群組』的 quota 數值!通常我們以 edquota -u username 或者是 edquota -g groupname 來編輯個人與群組的 quota 設定值。不過,或許您會覺得一個一個分配似乎很慢的樣子!那麼您也可以直接 copy 一個人的設定值給其他人,就如同上面第二個例子,利用已經建立好的 test 來建立 test2 這個人的 quota 限額!這個指令可是很重要的呦!另外,上面有幾個重要的資訊,我們來談一談吧:
    1. filesystem:這個是那個 partition 的意思!以上面來說,就是 /dev/hda3 囉!
    2. blocks:這個是目前使用者 test ( uid 501 )在 /dev/hda3 這個 filesystem (參考上面一個資訊),所耗掉的磁碟容量,也就是目前的使用掉的空間啦!單位是 Kbytes 喔!這個資訊是 quota 程式自己計算出來的,所以請不要修改他!
    3. soft 與 hard :這個是目前的 test 在這個 filesystem 之內的 quota 限制值!至於 soft 與 hard 的意思就如同 14-1 節最後面提的那個意思啦!當 soft 與 hard 數值為 0 的時候,表示『沒有限制』的意思!而數值的單位仍是 Kbytes 喔!
    4. inodes :是目前使用掉 inode 的狀態,也是 quota 自己計算出來而得到的,所以不要去變更他。一般而言, inode 不容易控制,所以您可以不必去限制 inode 呢!

  • quotaon

  • 語法
    [root @test /root ]# quotaon [-a] [-uvg directory]
    參數說明:
    -a  :全部的 quota 設定都啟動(會自動去尋找 /etc/mtab 的設定)
    -u  :使用者的 quota 啟動
    -g  :群組的 quota 設定啟動
    -v  :顯示訊息
    範例:
    [root @test /root ]# quotaon -a         <==全部的 quota 限制都啟動
    [root @test /root ]# quotaon -uv /home  <==只有啟動 /home 底下的使用者 quota 限額,group 不啟動!
    說明
    這個指令是在啟動 quota 的!不過,由於這個指令是啟動 aquota.group 與 aquota.user 的,所以您就必須要先完成 qutoacheck 的工作了!然後簡單的下達 quotaon -a 即可啟動!

  • quotaoff

  • 語法
    [root @test /root ]# quotaoff -a
    參數說明:
    -a  :全部的 quota 設定都關閉(會自動去尋找 /etc/mtab 的設定)
    範例:
    [root @test /root ]# quotaoff -a         <==全部的 quota 限制都關閉了!
    說明
    這個指令就是關閉了 quota 的限制啦!

    動手作 quota:

      quota 可以作用的功能有很多,包括了:
       
      • 限制某一群組所能使用的最大磁碟配額(使用 群組 限制):你可以將你的主機上的使用者分門別類,有點像是目前很流行的付費與免付費會員制的情況,你比較喜好的那一群的使用配額就可以給高一些!呵呵! ^_^...
       
      • 限制某一使用者的最大磁碟配額(使用 使用者 限制):在限制了群組之後,您也可以再繼續針對個人來進行限制,使得同一群組之下還可以有更公平的分配!
       
      • 以 Link 的方式,來使郵件可以作為限制的配額(更改 /var/spool/mail 這個路徑):如果是分為付費與免付費會員的『郵件主機系統』,是否需要重新再規劃一個硬碟呢?也不需要啦!直接使用 Link 的方式指向 /home (或者其他已經做好的 quota 磁碟)就可以啦!
       
      底下先列出幾個主要的步驟來說明:
       
      1. 開啟磁碟的 quota 功能:編輯 /etc/fstab ,使得準備要開放的 quota 磁碟可以支援 quota 囉;
      2. 預掃瞄磁碟的使用情況:使用 quotacheck 來掃瞄一下我們要使用的磁碟囉;
      3. 建立使用者的 quota :使用 edquota 來編輯每個使用者或群組的可使用空間囉;
      4. 啟動 quota :使用 quotaon 吧!
       
      整個步驟大致上就只有這幾步,我們來瞧一瞧如何使用吧!!底下我們以一個簡單的範例來進行 quota 的說明囉!整個範例的說明如下:
       
      1. 我們假設 test 這部主機裡頭有 test 與 test2 這兩個使用者,且他們兩個都掛在 test 這個群組下;
      2. 每個使用者總共有 50MB 的磁碟空間(不考慮 inode )限制!並且 soft limit 為 45 MB;
      3. 而寬限時間設定為 1 天,也就是說,這四個人可以突破 40MB 的限制,但是在一天之內必須要將多餘的檔案砍掉,否則將無法使用剩下的空間(也就是說,這個帳號大概就不能使用了?);
      4. test 這個群組考慮最大限額,所以設定為 90 MB 好了!
       
      整個執行步驟可以照下面來執行看看:
      1. 建立 test2 這個使用者:

      2. 由於我們之前只有 test 這個使用者掛在 test 群組之中,所以必需要先設定一下 test2 這個使用者!因為他的群組必需是 test 這個,而我們去查了一下 /etc/group 發現 test 的 uid 為 501 ,因此,我們可以這樣來設定 test2 呢!
         
        [root @test root]# useradd –m –g 501 test2
        [root @test root]# passwd test2
        Changing password for user test2.
        New UNIX password:
        Retype new UNIX password:
        passwd: all authentication tokens updated successfully.
         
      3. 開啟磁碟的 quota 功能:

      4. 由於 quota 需要在 ext 的 Linux 延伸格式檔案才可以啟動,所以你就必須要將準備開啟 quota 的磁碟啟動參數,寫進入 quota 的磁碟設定才行 ( /etc/fstab )!以我的例子而言,我想要在 /home 底下進行 quota 的限制test, test2 這兩個人!正巧 /home 是一個獨立的磁區,這可以使用 df 來查詢:此外,必需要特別留意的是,最好不要以根目錄亦即是 / 進行 quota 啦!否則容易有些問題呢!另外,不要針對 root 做 quota 喔!
         
        [root @test root]# df
        Filesystem           1K-blocks      Used Available Use% Mounted on
        /dev/hda1              1904920   1088136    720020  61% /
        /dev/hdb1               976344     71504    854444   8% /backup
        /dev/hdb2               101540      4252     92048   5% /home
         
        嗯!我的 home 是獨立的 partition ,並且他的裝置名為 /dev/hdb2 ,好了!那麼我就必須要啟動 /home 這個 /dev/hdb2 的 quota 檔案格式,好了!那麼由於檔案格式的設定是寫在 /etc/fstab 裡頭,所以我們以 vi 來編輯他吧!只要在 /etc/fstab 裡頭增加了 usrquota, grpquota 就可以啦!『註:請特別留意,這兩個項目請『務必』不要寫錯了!請再寫入 /etc/fstab 之前好好的再次檢查,因為寫錯之後,很有可能造成系統無法開機(雖然機率不高,但是有可能!?)』
         
        [root @test root]# vi /etc/fstab
        # device        MountPoint      filesystem      parameters      dump    fsck
        /dev/hda1       /               ext3            defaults        1       1
        /dev/hda2       swap            swap            defaults        0       0
        /dev/hdb1       /backup         ext3            defaults        1       1
        /dev/hdb2       /home           ext3            defaults        1       1
        none            /dev/pts        devpts          mode=0620       0       0
        none            /proc           proc            defaults        0       0

        上面的黃色字體改成底下的樣子!
        /dev/hdb2       /home           ext3            defaults,usrquota,grpquota 1 1

         
        多了 usrquota,grpquota 注意,由 defaults,usrquota,grpquota 之間都沒有空格!
         
        這樣就算加入了 quota 的磁碟格式了!不過,由於真正的 quota 在讀取的時候是讀取 /etc/mtab 這個檔案的,偏偏這一個檔案需要重新開機之後才能夠以 /etc/fstab 的新資料進行改寫!所以這個時候你可以選擇:
         
          (1)重新開機==>reboot;也可以選擇
          (2)重新 remount filesystem 來驅動設定值!
         
        我是不太喜歡重新開機的人啦!所以我就這麼做:
         
        [root@test /]# umount /dev/hdb2
        [root@test /]# mount -a
        [root@test /]# more /etc/mtab
        /dev/hda1 / ext3 rw 0 0
        none /proc proc rw 0 0
        none /proc/bus/usb usbdevfs rw 0 0
        none /dev devfs rw 0 0
        none /dev/pts devpts rw,mode=0620 0 0
        /dev/hdb1 /backup ext3 rw 0 0
        /dev/hdb2 /home ext3 rw,usrquota,grpquota 0 0

        或者以下列的方式重新 mount 所有的磁碟:
        [root @test /root ]# mount -a -o remount  <==這個指令可以重新將 /etc/fstab 的咚咚 mount 下來!

         
        嘿嘿嘿嘿!這樣我們就已經成功的將 quota 的功能寫入 partition 當中囉!另外,我們這裡是以 ext3 這個磁碟格式來測試 quota 的呦!
         
      5. 掃瞄磁碟的使用者使用狀況,並產生重要的 aquota.group 與 aquota.user:

      6. 接著下來就是要來掃瞄一下我們所需要的磁碟到底有沒有多餘的空間可以讓我們來設定 quota 呢?並且將掃瞄的結果輸出到這個磁碟的最頂層去(也就是 /home 底下)這個時候就需要 quotacheck 這個指令的幫忙了!使用 quotacheck 就可以輕易的將所需要的資料給他輸出了!現在就 OK 啦!並且在 /home 底下會產生 aquota.group 與 aquota.user 這兩個檔案!
         
        [root@test /]# quotacheck -avug
        quotacheck: Scanning /dev/hdb2 [/home] done
        quotacheck: Checked 10 directories and 22 files
        [root@test /]# ll /home
        total 44
        -rw-------    1 root     root         7168 Oct 28 14:05 aquota.group
        -rw-------    1 root     root         7168 Oct 28 14:05 aquota.user
        drwx------    2 root     root       16384 Oct 22 16:54 lost+found/
        drwxr-xr-x    3 test     test         4096 Oct 28 01:45 test/
        drwxr-xr-x    3 test2    test         4096 Oct 28 13:37 test2/
         
        使用 quotacheck 就可以輕易的將所需要的資料給他輸出了!現在就 OK 啦!並且在 /home 底下會產生 aquota.group 與 aquota.user 這兩個檔案!註:但是很奇怪的是,在某些 Linux 版本中,我不能夠以 aquota.user(group) 來啟動我的 quota ,真的是很奇怪呢!所以我就另外做了一個 link 檔案來欺騙 quota 囉:
         
        [root @test /root ]# cd /home 
        [root @test /root ]# ls -l aquota* 
        -rw-------    1 root     root         7168 May  6 22:16 aquota.group 
        -rw-------    1 root     root         7168 May  6 22:16 aquota.user 
        [root @test /root ]# ln -s aquota.group quota.group 
        [root @test /root ]# ln -s aquota.user quota.user
         
      7. 啟動 quota 的限額!

      8. 再來就是要啟動 quota 啦!啟動的方式也是很簡單的!就是使用 quotaon -av 即可:
         
        [root@test /]# quotaon -av
        /dev/hdb2 [/home]: group quotas turned on
        /dev/hdb2 [/home]: user quotas turned on
         
        注意:要看到上面有個 turned on 的出現,才是真的成功了!
         
      9. 編輯使用者的可使用空間:

      10. 由於我們有兩個使用者要設定,先來設定 test 好了,使用 edquota 就對了
         
        [root @test /]# edquota –u test
        Disk quotas for user test (uid 501):
          Filesystem         blocks       soft       hard     inodes     soft     hard
          /dev/hdb2              32          0          0          8        0        0

        將上面的原本設定改為底下的模樣:
        Disk quotas for user test (uid 501):
          Filesystem         blocks       soft       hard     inodes     soft     hard
          /dev/hdb2              32     40000       50000          8        0        0

         
        要特別留意的是,上面的黑體數值代表的是 KB 呦!轉成 MB 是需要乘上 1024 倍,這裡簡單的計算一下就好了!這樣就算編輯完畢了!接下來我們就需要將這個設定同時複製給 test2 這個傢伙!
         
        [root@test /]# edquota -p test test2
         
        接下來要來設定寬限時間,還是使用 edquota !
         
        [root@test /]# 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/hdb2                     1days                  1days
         
        將時間改為 1 天(原本是 7days 改成 1days ),好了!查詢一下是否真的有設定進去呢?使用 quota -v 來查詢
         
        [root@test /]# quota –vu test test2
        Disk quotas for user test (uid 501):
             Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
              /dev/hdb2      32   40000   50000               8       0       0
        Disk quotas for user test2 (uid 502):
             Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
              /dev/hdb2      28   40000   50000               7       0       0
         
        特別注意到,由於我們的使用者尚未超過 40 MB,所以 grace ( 寬限時間 )就不會出現啦!這樣很夠清楚了吧?!
         
      11. 編輯群組使用空間:

      12. 其實也差不多,還是使用 edquota:
         
        [root@test /]# edquota -g test 
        Disk quotas for group test (gid 501):
          Filesystem         blocks       soft       hard     inodes     soft     hard
          /dev/hdb2              60          0          0         15        0        0

        修改成底下這樣:
        Disk quotas for group test (gid 501):
          Filesystem         blocks       soft       hard     inodes     soft     hard
          /dev/hdb2              60      80000      90000         15        0        0

        [root@test /]# quota -vg test
        Disk quotas for group test (gid 501):
             Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
              /dev/hdb2      60   80000   90000              15       0       0

         
      13. 設定開機時啟動:

      14. 開機的時候自動啟動的設定在哪裡還記得嗎?沒錯!就是在 /etc/rc.d/rc.local 底下:所以你可以使用 vi 在這個檔案的最後面加上一行:
         
        [root @test /root ]# vi /etc/rc.d/rc.local 
        /sbin/quotaon -aug 
         
        如果要關閉 qutoa 就是用 quotaoff 吧!沒錯!這樣就將 quota 設定完畢了!很簡單吧!!

    使用郵件主機進行 quota 的實例:

      好了,我們前面 帳號管理 的部分曾經提到 e-mail 這個東西嘛!好了,如果我們要設定一個對外開啟的郵件主機的時候,那麼最好對於郵件空間有點限制比較好,免得如同上面提到的一些問題一樣,造成使用者的使用權不一!所以說,使用 quota 確實是一個好建議!這個時候該怎麼辦呢?什麼怎麼辦?嗯!是這樣的,由於 quota 『只能針對一個 partition 進行整體的磁碟配額,無法針對某個目錄進行磁碟配額!』針對這個觀念,我們不難發現,『(1)將郵件存在個人的家目錄與 (2)將郵件統一放在 /home 下的一個共用目錄』是一樣的!為什麼呢?這是因為 quota 針對的是一個磁碟呀!呵呵!所以囉,您必須先確定『您的 /home 是一個獨立的 partition 』才行!當然囉,您也可以使用其他的獨立的 partition 來進行底下的步驟!但是在這裡,我們預設以 /home 這一個目錄來假定這一個目錄是一個獨立的 partition !
      如此則在 /home 底下,由於每個人的磁碟配額已經設定好了!所以當然囉!該信件就可以得到完整的 quota 限額的限制了!所以呢,就需要進行下面的步驟:
      1. 上面設定 的方式設定好使用者 quota 的所有工作(即是在 /home 這個 partition );
      2. 將 /var/spool/mail 這個郵件預設的資料夾備份到其他的目錄去;
      3. 建立 /home/mail,這是因為假設我們的郵件放置在這個目錄中;
      4. 修改 /home/mail 的屬性,使成為 擁有者 root ,群組 mail ,及屬性為 775 才行!
      5. 將 /home/mail 給他 Link 到 /var/spool/mail 去即可!
      6. 以後每個人的郵件將都會放置 /home/mail 這個目錄中!
      1. 建立並修改 /home/mail 這個目錄:
      [root @test /root ]# mkdir /home/mail
      [root @test /root ]# chown root:mail /home/mail
      [root @test /root ]# chmod 775 /home/mail

      2. 備份並移動原本的 mail 到 /home/mail 底下去:
      [root @test /root ]# cp -r /var/spool/mail /var/spool/mail.back
      [root @test /root ]# mv /var/spool/mail/* /home/mail
      [root @test /root ]# rmdir /var/spool/mail

      3. 建立連結:
      [root @test /root ]# ln -s /home/mail /var/spool/mail

      只要這樣的一個小步驟,嘿嘿!您家主機的郵件就有一定的限額囉!當然囉!您也可以依據不同的使用者與群組來設定 quota 然後同樣的以上面的方式來進行 link 的動作!嘿嘿嘿!就有不同的限額針對不同的使用者提出囉!很方便吧!! ^_^

    本章習題練習 ( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看)

    • 如果我有一個 Linux 主機,未來想要對外提供 mail 與 WWW 的服務,同時預計提供個人網頁空間的服務,然而我希望 mail 提供 30 MB 而 WWW 則提供 20MB 的空間,那麼我應該如何規劃我的主機?

    • 答:
        在 quota 的限制中,由於他限制的是整個 partition 呢!所以既然要分為兩個服務來限制,就需要設定成兩個 partition 了!這個案例當中是以 Linux 為新架設的角度來看,所以我們的規劃就較為簡單!假設我的硬碟為 30GB 的硬碟,那麼我可以這樣設定:
          /  256 GB
          Swap 2 * RAM
          /usr  3~5 GB
          /backup 5GB
        其他的空間平均分給
          /home
          /var/spool/mail
        這樣就可以啦!然後安裝完成之後,套用 quota 的設定,即可做好限制囉!很是方便的!
    修改歷史:
    • 2002/07/14:第一次完成
    • 2003/02/10:重新編排與加入 FAQ
    • 2003/09/02:加入 quotacheck 發生錯誤時的解決方法。
    伺服器篇文件
    各版本彙整說明
    CentOS 6.x