Linux常用命令(九)磁盤配額管理

   Linux常用命令(九)磁盤配額管理


一、磁盤配額概述


1、磁盤配額的作用範圍

quota軟件設置的磁盤配額功能,只在指定的文件系統(分區)內有效,用戶使用其它未設置配額的文件系統時,將不會受到限制。


2、磁盤配額的限制對象

   quota主要針對系統中的指定的用戶賬號、組賬號進行限制,沒有被設置限額的用戶或組將不受影響。對組賬號設置配額後,組內所有用戶使用的磁盤容量、文件數量的總和不能超過限制。


3、磁盤配額的限制類型

磁盤容量:限制用戶能夠使用的磁盤數據塊(Block)大小,也就是限制磁盤空間大小,默認單位                            爲KB

文件數量:限制用戶能夠擁有的文件個數。在Linux系統中,每一個文件都有一個對應的數字標記,稱                      爲i節點(Inode)編號,這個編號在同一個文件系統內是唯一的,因此quota通過限制i節                        點的數量來實現對文件數量的限制。


4、磁盤配額的限制方法

軟限制:指定一個軟性的配額數值,在固定的寬限期(默認爲七天)內允許暫時超過這個限制,但系                    統會給出警告信息。

硬限制:指定一個硬性的配額數值,是絕對禁止用戶超過的限制值,當達到硬限制值時,系統也會給出                  警告並禁止繼續寫入數據。硬限制的配額值應大於相應的軟限制值,否則軟限制將失效。


二、磁盤配額


1、以支持配額功能的方式掛載文件系統

       除了內核和quota軟件的支持以外,實施磁盤配額功能還有一個前提條件,即指定的分區必須已經掛載且支持磁盤配額功能。

       在配置調試過程中,可是使用帶“-o userquotagrpquota”選項的mount命令重新掛載指定的分區,以便增加對用戶、組配額功能的支持。對於支持配額功能的文件系統,將在mount信息中顯示“userquotagrpquota”。

       例如,執行以下操作可以對/dev/sdb1分區重新進行掛載(remount:重新掛載。省去卸載再掛載的步驟,如果是之前沒有掛載過的分區,則不用使用此參數),並添加配額支持。(/abc目錄是隨便創建的目錄。)

[root@twgdh ~]# mount -o remount,usrquota,grpquota/dev/sdb1 /abc



爲了後續測試方便可以執行命令對/abc設置可以寫入的權限。

[root@twgdh ~]# chmod 777 /abc


       若需要在每次開機後自動以支持配額功能的方式掛載該分區,可以將“usrquotagrpquota”掛載參數寫入到“/etc/fstab”文件中。

wKioL1nChq-QlKsCAAAr5U8rQYE354.png


2、檢測磁盤配額並生成配額文件

使用quotacheck命令可以對指定文件系統進行磁盤配額檢測,也可以用來建立配額文件,以便保存用戶、組在該分區中的配額設置。這裏需要注意的是,如果Linux系統中的Selinux打開的話會提示權限不夠。所以需要暫時關閉Selinux臨時關閉Selinux的命令爲:

[root@twgdh ~]# setenforce 0

若要自動掃描可用的文件系統,可以不指定檢測對象。例如,執行以下操作將會掃描系統中的所有文件系統,並在支持配額的文件系統中建立配額文件。這裏需要給文件夾寫入的權限才能寫出配額文件。看到如下提示信息表示成功。

wKioL1nChxGR-g50AABVeag8yoU210.png

       在上例中各選項的意思如下:

–a:掃描所有分區。(不使用-a選項時必須指定一個分區(設備文件或掛載點目錄)作爲命令參數)

–u:檢測用戶配額信息。

–g:檢測組配額信息。

–c:創建新的配額文件。

–v:顯示命令執行過程中的細節信息。

由於/mailbox文件系統中並未使用較早版本的配額文件,因此出現“Oldfile not found”之類的提示信息是正常的。新建的配額文件包括“aquota.user”、“aquota.group”,分別用於保存用戶、組的配額設置。配額文件保存在該文件系統的根目錄下,默認權限爲600

wKiom1nCh-7gQfpiAAAkHGwVY5o788.png


3、編輯用戶和組賬號的配額設置

這裏新建一個測試用戶,咋們的老朋友“zhangsan”,並設置密碼,用來對用戶設置磁盤配額。

wKioL1nCh9GCYADHAAAsGyBODm0004.png


配額設置是實現磁盤配額功能中最重要的環節,使用edquota命令結合“-u”、“-g”選項可用於編輯用戶或組的配額設置。正確執行edquota命令後,將進入到文本編輯界面(默認調用vi作爲編輯程序),可以設置磁盤容量,以及文件大小的軟、硬限制數值。

例如,執行以下操作可以對用戶zhangsan的配額進行編輯。

[root@twgdh ~]# edquota -u zhangsan

wKioL1nCh_CTbHuBAAAYnVbHozg561.png

edquota的編輯界面中,第1行提示了當前配額文件所對應的用戶或組賬號,第二行是配置標題欄,分別對應以下每行配置記錄。配置記錄中從左到右分爲七個字段,各字段含義如下所述。

1 Filesystem:表示本行配置記錄對應的文件系統(分區),即配額的作用範圍。

2 blocks:表示用戶當前已經使用的磁盤容量,默認單位爲KB,該數值由edquota程序自動計算,無需                     修改。

3 soft:磁盤容量的軟限制數值,默認單位爲KB

4 hard:磁盤容量的硬限制數值,默認單位爲KB

5 inodes:表示用戶當前已經擁有的文件數量(即佔用i節點的個數),該數值也是由edquota程序自動                    計算的。

6 soft:文件數量的軟限制數值,默認單位爲“個”。

7 hard:文件數量的硬限制數值,默認單位爲“個”。


進行配額限制時,只需要修改相應的softhard列下的數值,其他的數值或文字不要修改(也無需修改)。例如,若要爲用戶zhangsan設置配額:磁盤容量軟限制爲80MB、硬限制100MB,文件數量軟限制爲5個,硬限制爲8個,可以執行以下操作。

[root@twgdh ~]# edquota -u zhangsan

wKioL1nCiC-Db3bJAAAbnNsOR2A342.png

       一般來說,對磁盤容量進行限額的情況比較常見,而限制文件數量的情況較少。所設置的限額數值不應該小於該用戶已經使用的數量,否則可能導致該用戶無法正常登錄系統。另外,建議不要對root用戶設置磁盤配額,以免對程序及系統的運行和穩定性帶來不可預知的風險。

      

以上對用戶賬戶設置磁盤配額的方法同樣適用於對組賬號設置配額,只不過在進入編輯環境時要使用“-g”選項指定組賬號對象。例如,執行“edquota–g users”命令可以編輯users組的配額設置。

[root@twgdh ~]# edquota -g users

組配額爲組內所有人共同享用。如果zhangsanlisi兩個用戶都在users中,爲users一共設置了80MB的空間,zhangsan佔了50MB那麼lisi只能使用剩下的30MB的空間。


       用戶在使用文件系統的過程中,超過軟限制後默認寬限期爲七天,在寬限期內仍然允許用戶繼續使用(只要不超過硬限制)。若需要修改款限期,可以執行“edquota -t”命令進行調整。寬限期的時間單位可以是天、小時、分或秒。例如,可以將限額的寬限期改爲三天。

[root@twgdh ~]# edquota -t

wKiom1nCiYvDZpGrAAAbyW4rgYc239.png


4、啓動文件系統的磁盤配額功能

       啓動和關閉文件系統的磁盤配額功能分別使用“quotaon”、“quotaoff”命令進行,需要指定設備文件名或文件系統的掛載點目錄作爲命令參數。例如,執行以下操作可以啓用“/abc”文件系統的用戶、組磁盤配額功能,並顯示命令執行的過程信息。

wKioL1nCiYnDuaG4AAAYVR-uiEo120.png

實際上,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

wKioL1nCic-Da--nAAAnpoyspbA079.png

這時可以看到第二行,提示“sdb1:warning,user block quota exceeded”其含義爲“sdb1:警告,用戶塊配額超過”這裏是提示磁盤容量已經超過軟配額的限制。

 

使用ls –lh查看/abc目錄,發現雖然超過軟配額的限制,但是存儲任然成功了,文件大小爲90MB

wKioL1nCifOwl1SyAAAneixKAKs391.png


重新執行dd命令,修改一下參數,把count=9改爲count=11再執行一下。

wKioL1nCihyDeaH3AAAwwRJeExg148.png

再使用ls –lh 命令查看一下/abc目錄。

wKioL1nCijbTo0vQAAAnC-0u7VY422.png

       這裏發現,雖然命令成功了,但是隻創建了一個98MB的文件。這是由於硬限制給zhangsan100MB的磁盤容量,所以只能創建98MB的文件。這裏由於計算方法的不同,實際使用的空間會略小一點,這裏的偏差大概少2MB的空間。


        接下來測試文件數量的限額,向abc中創建新的空文件。

wKiom1nCirKTSBMNAAAgBJzVNzM915.png

這裏執行了touch/abc/ 下分別創建了五個空文件,帶原來的666一共是六個文件,超過了5個文件的軟限額,出現了警告消息,但還是創建成功了。接下來繼續創建空文件,使其超過硬限額8個,查看會怎麼樣。

wKiom1nCitKSIuXBAAAmpMNAV7E894.png

這裏看到文件8沒有創建成功,超過8個之後的文件將無法創建成功。


驗證完畢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章