Linux常用命令(九)磁盤配額管理
一、磁盤配額概述
1、磁盤配額的作用範圍
quota軟件設置的磁盤配額功能,只在指定的文件系統(分區)內有效,用戶使用其它未設置配額的文件系統時,將不會受到限制。
2、磁盤配額的限制對象
quota主要針對系統中的指定的用戶賬號、組賬號進行限制,沒有被設置限額的用戶或組將不受影響。對組賬號設置配額後,組內所有用戶使用的磁盤容量、文件數量的總和不能超過限制。
3、磁盤配額的限制類型
■磁盤容量:限制用戶能夠使用的磁盤數據塊(Block)大小,也就是限制磁盤空間大小,默認單位 爲KB。
■文件數量:限制用戶能夠擁有的文件個數。在Linux系統中,每一個文件都有一個對應的數字標記,稱 爲i節點(Inode)編號,這個編號在同一個文件系統內是唯一的,因此quota通過限制i節 點的數量來實現對文件數量的限制。
4、磁盤配額的限制方法
■軟限制:指定一個軟性的配額數值,在固定的寬限期(默認爲七天)內允許暫時超過這個限制,但系 統會給出警告信息。
■硬限制:指定一個硬性的配額數值,是絕對禁止用戶超過的限制值,當達到硬限制值時,系統也會給出 警告並禁止繼續寫入數據。硬限制的配額值應大於相應的軟限制值,否則軟限制將失效。
二、磁盤配額
1、以支持配額功能的方式掛載文件系統
除了內核和quota軟件的支持以外,實施磁盤配額功能還有一個前提條件,即指定的分區必須已經掛載且支持磁盤配額功能。
在配置調試過程中,可是使用帶“-o userquota,grpquota”選項的mount命令重新掛載指定的分區,以便增加對用戶、組配額功能的支持。對於支持配額功能的文件系統,將在mount信息中顯示“userquota,grpquota”。
例如,執行以下操作可以對/dev/sdb1分區重新進行掛載(remount:重新掛載。省去卸載再掛載的步驟,如果是之前沒有掛載過的分區,則不用使用此參數),並添加配額支持。(/abc目錄是隨便創建的目錄。)
[root@twgdh ~]# mount -o remount,usrquota,grpquota/dev/sdb1 /abc
爲了後續測試方便可以執行命令對/abc設置可以寫入的權限。
[root@twgdh ~]# chmod 777 /abc
若需要在每次開機後自動以支持配額功能的方式掛載該分區,可以將“usrquota,grpquota”掛載參數寫入到“/etc/fstab”文件中。
2、檢測磁盤配額並生成配額文件
使用quotacheck命令可以對指定文件系統進行磁盤配額檢測,也可以用來建立配額文件,以便保存用戶、組在該分區中的配額設置。這裏需要注意的是,如果Linux系統中的Selinux打開的話會提示權限不夠。所以需要暫時關閉Selinux。臨時關閉Selinux的命令爲:
[root@twgdh ~]# setenforce 0
若要自動掃描可用的文件系統,可以不指定檢測對象。例如,執行以下操作將會掃描系統中的所有文件系統,並在支持配額的文件系統中建立配額文件。這裏需要給文件夾寫入的權限才能寫出配額文件。看到如下提示信息表示成功。
在上例中各選項的意思如下:
■ –a:掃描所有分區。(不使用-a選項時必須指定一個分區(設備文件或掛載點目錄)作爲命令參數)
■ –u:檢測用戶配額信息。
■ –g:檢測組配額信息。
■ –c:創建新的配額文件。
■ –v:顯示命令執行過程中的細節信息。
由於/mailbox文件系統中並未使用較早版本的配額文件,因此出現“Oldfile not found”之類的提示信息是正常的。新建的配額文件包括“aquota.user”、“aquota.group”,分別用於保存用戶、組的配額設置。配額文件保存在該文件系統的根目錄下,默認權限爲600。
3、編輯用戶和組賬號的配額設置
這裏新建一個測試用戶,咋們的老朋友“zhangsan”,並設置密碼,用來對用戶設置磁盤配額。
配額設置是實現磁盤配額功能中最重要的環節,使用edquota命令結合“-u”、“-g”選項可用於編輯用戶或組的配額設置。正確執行edquota命令後,將進入到文本編輯界面(默認調用vi作爲編輯程序),可以設置磁盤容量,以及文件大小的軟、硬限制數值。
例如,執行以下操作可以對用戶zhangsan的配額進行編輯。
[root@twgdh ~]# edquota -u zhangsan
在edquota的編輯界面中,第1行提示了當前配額文件所對應的用戶或組賬號,第二行是配置標題欄,分別對應以下每行配置記錄。配置記錄中從左到右分爲七個字段,各字段含義如下所述。
1 Filesystem:表示本行配置記錄對應的文件系統(分區),即配額的作用範圍。
2 blocks:表示用戶當前已經使用的磁盤容量,默認單位爲KB,該數值由edquota程序自動計算,無需 修改。
3 soft:磁盤容量的軟限制數值,默認單位爲KB。
4 hard:磁盤容量的硬限制數值,默認單位爲KB。
5 inodes:表示用戶當前已經擁有的文件數量(即佔用i節點的個數),該數值也是由edquota程序自動 計算的。
6 soft:文件數量的軟限制數值,默認單位爲“個”。
7 hard:文件數量的硬限制數值,默認單位爲“個”。
進行配額限制時,只需要修改相應的soft、hard列下的數值,其他的數值或文字不要修改(也無需修改)。例如,若要爲用戶zhangsan設置配額:磁盤容量軟限制爲80MB、硬限制100MB,文件數量軟限制爲5個,硬限制爲8個,可以執行以下操作。
[root@twgdh ~]# edquota -u zhangsan
一般來說,對磁盤容量進行限額的情況比較常見,而限制文件數量的情況較少。所設置的限額數值不應該小於該用戶已經使用的數量,否則可能導致該用戶無法正常登錄系統。另外,建議不要對root用戶設置磁盤配額,以免對程序及系統的運行和穩定性帶來不可預知的風險。
以上對用戶賬戶設置磁盤配額的方法同樣適用於對組賬號設置配額,只不過在進入編輯環境時要使用“-g”選項指定組賬號對象。例如,執行“edquota–g users”命令可以編輯users組的配額設置。
[root@twgdh ~]# edquota -g users
組配額爲組內所有人共同享用。如果zhangsan和lisi兩個用戶都在users中,爲users一共設置了80MB的空間,zhangsan佔了50MB那麼lisi只能使用剩下的30MB的空間。
用戶在使用文件系統的過程中,超過軟限制後默認寬限期爲七天,在寬限期內仍然允許用戶繼續使用(只要不超過硬限制)。若需要修改款限期,可以執行“edquota -t”命令進行調整。寬限期的時間單位可以是天、小時、分或秒。例如,可以將限額的寬限期改爲三天。
[root@twgdh ~]# edquota -t
4、啓動文件系統的磁盤配額功能
啓動和關閉文件系統的磁盤配額功能分別使用“quotaon”、“quotaoff”命令進行,需要指定設備文件名或文件系統的掛載點目錄作爲命令參數。例如,執行以下操作可以啓用“/abc”文件系統的用戶、組磁盤配額功能,並顯示命令執行的過程信息。
實際上,RHEL6系統每次開機後會自動檢查是否有支持磁盤配額的文件系統,如果找到,則啓用該文件系統的磁盤配額功能。因此,下次開機後無需再手動執行quotaon命令。
5、驗證磁盤配額功能
對張三設置了磁盤配額就使用張三登錄系統進行驗證。
[root@twgdh ~]# su zhangsan [zhangsan@twgdh root]$
使用dd轉換工具。dd命令是一個設備轉換和複製命令,分別使用“if=”選項指定輸入設備(或文件)、“of=”選項指定輸出設備(或文件)、“bs=”選項指定讀取數據塊的大小、“count=”指定讀取數據塊的數量。例如,一下操作可以向/abc目錄下寫入一個名爲666的測試文件,大小爲90MB(分9次讀取,每次讀取10MB),複製來源爲設備文件“/dev/zero”。
[zhangsan@twgdh root]$ dd if=/abc/666 of=/dev/zerobs=10M count=9
這時可以看到第二行,提示“sdb1:warning,user block quota exceeded”其含義爲“sdb1:警告,用戶塊配額超過”這裏是提示磁盤容量已經超過軟配額的限制。
使用ls –lh查看/abc目錄,發現雖然超過軟配額的限制,但是存儲任然成功了,文件大小爲90MB
重新執行dd命令,修改一下參數,把count=9改爲count=11再執行一下。
再使用ls –lh 命令查看一下/abc目錄。
這裏發現,雖然命令成功了,但是隻創建了一個98MB的文件。這是由於硬限制給zhangsan爲100MB的磁盤容量,所以只能創建98MB的文件。這裏由於計算方法的不同,實際使用的空間會略小一點,這裏的偏差大概少2MB的空間。
接下來測試文件數量的限額,向abc中創建新的空文件。
這裏執行了touch向/abc/ 下分別創建了五個空文件,帶原來的666一共是六個文件,超過了5個文件的軟限額,出現了警告消息,但還是創建成功了。接下來繼續創建空文件,使其超過硬限額8個,查看會怎麼樣。
這裏看到文件8沒有創建成功,超過8個之後的文件將無法創建成功。
驗證完畢。