500 likes | 669 Views
第 12 ç« . 使用者ç£ç¢Ÿ 空間管ç†. å‰è¨€. 由於 Linux 是多使用者的作æ¥ç’°å¢ƒ , å‡è‹¥ä»»ç”±æ¯å€‹ä½¿ç”¨è€…å˜æ”¾æª”案而沒有é™åˆ¶ , ç£ç¢Ÿç©ºé–“將迅速消耗 , 很快地便會ä¸æ•·ä½¿ç”¨ã€‚ 我們å¯ä»¥è—‰ç”±é™åˆ¶æ¯å€‹ä½¿ç”¨è€…å¯ä»¥ä½¿ç”¨çš„ç£ç¢Ÿç©ºé–“ , 在使用者å³å°‡è¶…éŽé™åˆ¶æ™‚æ出自動è¦å‘Š , 甚至ä¸å…許其在é”到é™é¡æ™‚å†å„²å˜æª”案 , 來é¿å…æ¤ä¸€ç‹€æ³ç™¼ç”Ÿã€‚. æœ¬ç« æè¦. 12-1 Quota 簡介 12-2 è¨å®šç£ç¢Ÿé…é¡ 12-3 編輯ç£ç¢Ÿé…é¡ 12-4 å–消與啟動ç£ç¢Ÿé™åˆ¶ 12-5 檢查使用者是å¦è¶…éŽç£ç¢Ÿé™åˆ¶
E N D
第 12 章 使用者磁碟 空間管理
前言 • 由於 Linux 是多使用者的作業環境, 假若任由每個使用者存放檔案而沒有限制, 磁碟空間將迅速消耗, 很快地便會不敷使用。 • 我們可以藉由限制每個使用者可以使用的磁碟空間, 在使用者即將超過限制時提出自動警告, 甚至不允許其在達到限額時再儲存檔案, 來避免此一狀況發生。
本章提要 • 12-1 Quota 簡介 • 12-2 設定磁碟配額 • 12-3 編輯磁碟配額 • 12-4 取消與啟動磁碟限制 • 12-5 檢查使用者是否超過磁碟限制 • 12-6 應用實例 - 建立使用者的郵件空間限制
12-1 Quota 簡介 • Quota 即為限額、配額的意思, 在 Linux 下 Quota 的功能, 就是限制使用者可運用的磁碟空間。例如常見的個人網頁的空間限制、個人郵件的容量限制, 都是透過 Quota 達成。 • 只要系統中有安裝 quota 套件, 則預設在開機時便會啟用 Quota, 但尚未設定磁碟空間限制。因而此時執行 quota指令檢查自己的磁碟使用空間, 會出現下列訊息表示沒有限制:
Quota 簡介 • 這表示使用者 tony 可以隨自己高興任意堆放檔案, 直到塞滿整個磁碟為止,此舉將造成所有其他使用者都無法儲存資料。
Quota 簡介 • 為了避免這種毫無節制、濫用空間的災難發生, 以下我們便要來討論如何替使用者設定磁碟空間的限制。 • 最後, 在開始設定磁碟配額之前, 還有一點要請您注意:磁碟配額是針對使用者作限制, 並且作用範圍是以分割區為單位。
Quota 簡介 • 也就是說, 若我們在 /dev/hda1分割區為使用者 tony 設定了磁碟配額, 則 tony 在 /dev/hda1 中各目錄下可儲存的檔案空間總合, 將不能超過此配額。 • 因此, 如果您要分別限制系統中使用者的郵件空間或網頁空間, 要記得將儲存使用者郵件的目錄, 及儲存使用者網頁的目錄分別置於獨立的分割區中, 分別掛載。
12-2 設定磁碟配額 • 以下我們將逐步說明如何啟用 Quota, 由於大多數使用者在初學 Linux 時,大多只建立一個分割區掛載系統根目錄, 故筆者以此狀況為例說明, 將為根目錄所在的分割區 (也是唯一的分割區) 設定磁碟配額。 • 但前面說過, Quota 的作用範圍是以分割區為單位, 因此如下設定後, 使用者在系統中可使用的空間將不能超過所設定的限制。
設定磁碟配額 • 編輯 fstab 檔案 • 產生設定檔 • aquota.user 及 aquota.group 檔的位置
1.編輯 fstab 檔案 • 請用文書編輯程式開啟 /etc/fstab 檔案, 其內容類似下面這樣:
編輯 fstab 檔案 • 編輯根目錄所在分割區 (或其他要限制磁碟空間的磁碟) 的設定, 加上 usrquota (user quota)、grpquota (group quota) 兩項, 表示要建立使用者與群組的磁碟空間限制:
編輯 fstab 檔案 • 倘若只要限制使用者或群組的磁碟空間, 則僅需加上 usrquota 或 grpquota 其中一項即可, 存檔離開後, 請重新開機。 • /etc/fstab 是開機時掛載分割區的依據, 若是其中的項目輸入錯誤, 會造成啟動時將分割區掛載成唯讀, 因此在修改時請特別小心。
2.產生設定檔 • 接著執行 quotacheck指令檢查目前磁碟的使用狀況, 並在系統根目錄下建立 aquota.user及 aquota.group設定檔:
產生設定檔 • 此設定需要幾分鐘時間, 請您耐心等候。第一次執行時, 由於系統中尚未建立 aquota 資料庫, 有時會出現類似 "quotacheck: Cannot stat old user quota file: 沒有此一檔案或目錄" 與 "quotacheck: Old group file not found. Usage will not be substracted." 的訊息, 但並不會影響執行的結果, 請不用擔心。
產生設定檔 • 以下是用於 quotacheck指令的參數說明: • -a 參數:掃描 fstab 檔案中, 有加入 quota 設定的分割區。 • -d 參數:詳細顯示指令執行過程, 便於除錯或了解程式執行的情形。 • -g 參數:掃描磁碟空間時, 計算每個群組識別碼 (GID) 所佔用的目錄和檔案數目。
產生設定檔 • -u 參數:掃描磁碟空間時, 計算每個使用者識別碼 (UID) 所佔用的目錄和檔案數目。 • -v 參數:標示指令執行過程。 • -m 參數:強制執行指令。 • -c 參數:不讀取已存在的 aquota 資料庫, 重新掃描硬碟並儲存。若曾經設定過 Quota, 現在想重新設定時, 可使用此參數忽略原本的資料庫, 重新建立。
產生設定檔 • 然後請重新開機, 接著就要來設定使用者的磁碟空間了。 • 如果要對其他的分割區 (掛載點不是根目錄的分割區) 做 quota 的設定, 也可以用同樣的方式產生設定檔, 詳細的說明請執行 manquotacheck指令。
aquota.user 及 aquota.group 檔的位置 • aquota.user 及 aquota.group 設定檔會產生在設定啟用磁碟配額之分割區的掛載目錄下,由於我們設定的分割區被掛載為系統根目錄, 故此 2 個檔案會建立在根目錄 / 下。 • 若有一個分割區掛載為 /home 目錄, 並要在此分割區啟用磁碟配額, 則執行 quotacheck指令後,將會在 /home 目錄下建立 aquota.user 及 aquota.group 設定檔。
12-3 編輯磁碟配額 • 前面說過, 只要安裝了 guota 套件, 系統預設便已啟用磁碟配額, 但因為我們還沒有設定各使用者可用的空間限制, 所以使用者還是可以隨意的儲存檔案 (預設沒有限制)。 • 因此, 接著要使用 edquota指令可分別編輯使用者與群組的磁碟空間限制, 以下我們分別討論。
編輯磁碟配額 • 編輯使用者的磁碟限制 • soft limit 與 hard limit • 編輯群組的磁碟限制 • 設定超過 soft limit 的寬限期
編輯使用者的磁碟限制 • 執行 edquotatony或 edquota -u tony指令可編輯使用者 tony 可使用的磁碟空間配額。執行 edquota指令時, 系統會啟動 vim 編輯程式讓我們進行設定。請如下編輯:
編輯使用者的磁碟限制 • 預設 soft (soft limit) = 0, hard (hard limit) = 0, 表示沒有上限 (等一下會介紹何謂 soft 與 hard), 可以用到整個磁碟爆滿。 • 因為每個檔案都需要使用一個 inode, 所以 inode 數就是指使用者目前所擁有的檔案數量。而可用的 inode 數量也沒有上限, 最多可將所有的 inode 用光。
soft limit 與 hard limit • 如果我們打算分配給每位使用者 10MB 容量以及 500 個檔案的儲存空間, 那麼這些使用者就只能用到 10MB 或 500 個檔案佔滿為止, 超過限制時會被系統阻止, 無法繼續儲存。 • 若我們將 soft limit 設成 10MB, 而 hard limit 訂在 15MB, 表示使用者存放超過 10MB 空間時, 仍然可以繼續儲存, 最多到 15MB 為止。
soft limit 與 hard limit • 不過系統會顯示警告訊息提醒使用者: • 檔案數量限制也是相同的道理, 把 soft limit 設成 500 個, 而 hard limit 訂在 550 個, 表示使用者存放超過 500 個檔案時, 仍然可以繼續儲存到 550 個為止。
soft limit 與 hard limit • 若超過 soft limit, 使用者卻置之不理, 且無視於系統的警告, 則當時間超過寬限期時, 使用者即使尚未到達 hard limit, 也會無法儲存任何檔案:
編輯使用者的磁碟限制 • 瞭解 soft limit 與 hard limit 的關係之後, 我們就可以為使用者設定磁碟的容量與 inode 的數量限制了:
編輯使用者的磁碟限制 • 修改完畢請記得存檔離開。如此就設定完成一個使用者的的磁碟限制了。 • 您可用同樣的方法設定其他的使用者。如果不想一個一個設定, 也可以用一個已經設定好的使用者磁碟限制為範本, 使用 edquota -p指令, 一次設好全部的使用者:
編輯使用者的磁碟限制 • 假如您的使用者家目錄不是在 /home, 例如 /home/department/, 則需先切換到該目錄, 否則會告訴您找不到使用者。另外如果 /home 目錄下有不屬於使用者的目錄, 例如您可能會使用 /home/database/ 目錄放資料庫檔案, 此時就不能用這個方法套用所有帳號, 因為 database 不是使用者名稱, 會導致 edquota指令出現錯誤。
編輯使用者的磁碟限制 • 若指定要套用給某個特定的帳號, 則不需切換到 /home 目錄, 可直接如下操作:
編輯群組的磁碟限制 • 由於每個使用者都有所屬的群組, 因此我們也可以為群組設定磁碟限制。但設定群組的限制時, 最好先計算一下整個群組會有多少個使用者, 及每個使用者的磁碟空間各為多少, 以免整個群組的磁碟空間反而比使用者加起來的空間還小。 • 例如一個使用者的 soft limit 為 10000, 而一個群組中有 10 人, 那麼此群組的 soft limit 就至少該有 10000*10。
編輯群組的磁碟限制 • 但 hard limit 不見得需要是所有使用者的 hard limit 總合, 小一點也沒關係, 總不會那麼巧, 每個使用者都用滿 hardlimit 吧。 • 編輯群組的操作方式和編輯使用者類似, 執行 edquota -g group1指令, 表示要編輯 group1 群組的磁碟空間限制:
編輯群組的磁碟限制 • 當設定完一個群組之後, 則可執行 edquota -gp group1 group2指令, 將 group1 的設定套用在 group2 上。
設定超過 soft limit 的寬限期 • 雖然當使用者超過 soft limit 時, 系統會發出警告, 但總要有個期限的規定,因此我們必須設定寬限期 (grace time), 要求使用者在指定的期限內清掉多出來的檔案。 • 系統預設是寬限 7 天, 我們可用 edquota -t指令自行調整:
設定超過 soft limit 的寬限期 • 執行後, 會顯示下面的內容:
設定超過 soft limit 的寬限期 • 修改寬限期並不追朔既往, 例如使用者 lambert 的寬限期原本還剩 6 天, 就算我們把寬限期縮短成 1 天, lambert 這次的期限依舊是 6 天, 新設定要在 lambert 下次再超過限制時才會發生作用。
12-4 取消與啟動磁碟限制 • 前面說過, 只要有安裝 quota 套件, 系統預設便會啟用磁碟配額。那麼如要取消設定好的磁碟空間限制, 該怎麼辦呢?請執行 quotaoff -avug指令即可:
取消與啟動磁碟限制 • 若要再啟動磁碟空間限制, 則請重新開機或執行 quotaon -avug指令: • quotaon及 quotaoff指令的參數與 quotacheck指令類似, 詳細用法可使用 man指令查詢線上說明。
12-5 檢查使用者是否 超過磁碟限制 • 一般的使用者執行 quota -v指令, 可得知自己有無超過限制:
檢查使用者是否超過磁碟限制 • 若沒超過 soft limit, 則 grace 那一欄是空白的。 • 系統管理者若需檢查所有群組及使用者的磁碟限制, 可使用 repquota –au 指令 (report quota) 檢查所有使用者、repquota -ag指令檢查所有群組, 或乾脆使用 repquota-a指令檢查全部的資料:
檢查使用者是否超過磁碟限制 • 管理者用這個指令就可將整個系統佔用的磁碟空間全部顯示出來, 任何群組及使用者都無所遁形! • 看完本章之後, 相信您對於如何設定磁碟限制已相當瞭解。這些都算是系統管理的基本工夫, 一定要相當熟悉才行。 • 設定好磁碟配額後, 身為系統管理者還應該要可以隨時查詢、了解使用者的使用狀況。
12-6 應用實例 – 建立使用者的郵件空間限制 • 郵件空間與網頁空間限制是最常見、也是最常用到的磁碟空間限制, 以下筆者便將說明如何為您的主機設定使用者的郵件空間配額 (若想設定網頁空間限制, 也可依此法設定)。 • 我們前面的內容說過, Quota 的作用範圍是以分割區為單位, 因此我們應該先確定將使用者郵件儲存在獨立的分割區上。
應用實例 – 建立使用者的郵件空間限制 • 故在規劃主機硬碟時, 您可以將/var 目錄掛載在獨立的分割區上, 再對該分割區設定磁碟配額即可。若在安裝時沒有另外掛載 /var 目錄又不想重新安裝系統, 則可以另外建立一個分割區, 依下列方式設定。 • 例如筆者將 /dev/hda5 分割區掛載為 /mail 目錄, 並如下修改 /etc/fstab 檔,設定 /dev/hda5 分割區啟用磁碟配額:
應用實例 – 建立使用者的郵件空間限制 • 設定好後請重新開機, 重新啟動後請執行 quotacheck -uavm指令在 /mail 目錄下產生 aquota.user 設定檔, 接著就可以使用 edquota指令編輯使用者在/dev/hda5 分割區的磁碟空間限制 (在此以設定使用者 tony 的磁碟配額為例):
應用實例 – 建立使用者的郵件空間限制 • 完成上述步驟後, 磁碟配額的設定就完成了。 • 不過此時使用者的郵件都還在系統預設的 /var/spool/mail 目錄下, 因此, 請如下操作, 將原有的郵件移至設定好配額的 /mail 目錄中:
應用實例 – 建立使用者的郵件空間限制 • 如果在安裝時便將 /var 目錄放置於獨立的分割區, 當然就不用執行上述備份及建立連結的動作了, 只要直接設定 /var 所在分割區的磁碟配額即可。 • 如此設定後, 往後使用者的郵件就會存到 /mail 目錄下, 受到該目錄下所設定的磁碟配額空間限制。
應用實例 – 建立使用者的郵件空間限制 • 用同樣的方法, 您也可以將使用者的網頁目錄放置在獨立的分割區中, 並設定磁碟配額, 就可以限制使用者可用的網頁空間了。 • 有些郵件伺服器會在使用者讀取郵件之後, 將郵件搬移到使用者家目錄下儲存。使用此類郵件伺服器的管理者, 除了要為郵件目錄設定磁碟配額外, 也要為使用者家目錄設定磁碟配額。