首頁 > 軟體

磁碟配額管理

2020-06-16 17:22:09

在多使用者系統中,如果沒有對使用者使用的磁碟空間做出限制,使用者無限制地存放資料和檔案,可能會導致系統磁碟空間告警。如果存放的是無用資料,就會導致磁碟空間白白浪費。磁碟配額可以限制使用者或組在磁碟上存放檔案的空間,這樣既可以讓使用者擁有一定的儲存空間,又可以避免使用者無限制地存放資料導致系統磁碟空間不足。

一、為磁碟配額提供支援

在Linux系統中,為磁碟配額提供支援的是quota軟體包,如果系統中沒有安裝這個軟體包,使用者可以自行安裝。

在設定磁碟配額之前,必須要獲檔案系統的支援。為此需要系統中的自動掛載檔案/etc/fstab,為相應的檔案系統新增掛載引數:usrquota(啟用使用者限額)和grpquota(啟用使用者組限額)。

以磁碟分割區/dev/sda3為例,講解如何建立磁碟配額。

(1)修改自動掛載檔案/etc/fstab,啟用檔案系統sda3的配額支援,將其修改為以下內容:

/dev/sda3    /home    ext3    defaults,usrquota,grpquota    1 2

(2)修改完之後,需要重新掛載檔案系統,以啟動磁碟配額支援:

# umount /home
# mount /dev/sda3 /home

也可以使用以下命令重新掛載/etc/fstab中記錄的所有分割區:

#使用mount的選項a重新掛載所有分割區
# mount -a

實在不行就重新啟動系統即可。

(3)修改完成之後,可以使用mount命令驗證設定:

#使用mount命令檢視掛載的分割區及引數
# mount
...
/dev/sda3 on /home type ext3 (rw,usrquota,grpquota)

如果在命令輸出中看到usrquota和grpquota,表明已經成功啟用磁碟配額支援。

二、檢查磁碟配額命令quotacheck

啟用了檔案系統的配額支援後,還不能立即使用配額,還必須檢查相應的檔案系統,並建立磁碟配額檔案。檢測檔案系統並建立磁碟配額檔案,需要使用命令quotacheck。

【命令格式】

quotacheck [option] filesystem

【常用選項】

-c:跳過原有配額檔案,只執行新的掃描並儲存到磁碟。

-v:顯示命令詳細資訊。

-u:檢查使用者使用檔案系統的情況。

-g:檢查使用者組使用檔案系統的情況。

【用法範例】

(1)檢查磁碟分割區/dev/sdd1,並將相關資訊寫入到配額檔案中:

# quotacheck -cug /home

(2)如果要驗證上述命令的執行結果,可以使用ls命令檢視建立的配額組態檔:

# ls -l /home/aquota*
-rw------- 1 root root 7168 Dec 11 14:32 /home/aquota.group
-rw------- 1 root root 7168 Dec 11 14:32 /home/aquota.user

從上面的命令輸出可以看出,命令在檔案系統的根目錄中建立了兩個檔案:aquota.group和aquota.user。這兩個檔案分別用於存放使用者和使用者組的磁碟配額資訊,包括檔案系統的使用情況及設定資訊等。

三、檢視磁碟使用情況命令repquota

在所有使用者都可以使用的檔案系統上,並不需要為每個使用者都設定磁碟配額,通常只需要為那些經常存放大檔案、嚴重占用磁碟空間的使用者設定即可。

檢視檔案系統的使用情況,可以使用repquota命令(使用該命令的前提是已經建立了磁碟配額檔案): 複製程式碼

# repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  156232       0       0            166     0     0       
zhu       --      40       0       0              5     0     0       
user1     --      32       0       0              4     0     0       
li        --      52       0       0              7     0     0       
ljx       --      32       0       0              4     0     0       
wlh       --      32       0       0              4     0     0       
mysql     --      32       0       0              4     0     0       
user2     --      32       0       0              4     0     0

檢視上述命令的輸出並選擇要限制的使用者,之後就可以建立配額限制了。

四、建立磁碟配額命令edquota

完成前面的準備工作就可以開始設定磁碟配額了。

【命令格式】

edquota [option] [username] [groupname]

使用edquota命令建立磁碟配額時,需要指定建立配額的使用者和使用者組名。

【常用選項】

-u:指定限制的使用者名稱。

-g:指定要限制的使用者組名。

-p:複製使用者或使用者組的配額資訊。

-t:修改過渡期,即使用者的磁碟配額超過軟限制的寬限時間。

(1)為使用者zhu建立配額:

# edquota -u zhu

此時,命令會啟動使用者配額設定介面,設定介面文字如下(其實這個介面就是vi編輯器,可以像使用vi那樣編輯這些設定):

Disk quotas for user zhu (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        40          0          0          5        0        0

各自段意義:

  • Filesystem:當前正在設定配額限制的檔案系統。

  • blocks:當前使用者已經使用的磁碟分割區空間,單位是KB。

  • soft:對使用者使用的磁碟空間或檔案數的軟限制(磁碟空間單位是KB)。使用者使用的磁碟空間或檔案數在過渡期內可以超過這個限制。

  • hard:對使用者使用的磁碟空間或檔案數的硬限制。使用者使用的磁碟空間或檔案數絕對不能超過此限制。

  • inodes:使用者在當前磁碟空間中占用的i節點數,由系統自動統計,使用者不必修改此項。

在磁碟配額介面中有兩組soft、hard欄位,其中前一組soft、hard表示對磁碟空間大小的限制,後一組表示對檔案數的限制。

由於檔案數限制對一般的使用者而言意義不大,因此設定磁碟配額時,一般不在檔案數上設定限制。

注意:修改磁碟配額時,無論是磁碟空間限制,還是檔案數限制,硬限制的數值都應該比軟限制大。

在此範例中,假定需要設定使用者zhu的磁碟空間軟限制為1.5GB,硬限制為2GB。可以將配額修改為如下:

Disk quotas for user zhu (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        40     1500000     200000       5         0        0

儲存退出後即可完成設定。

設定上述配額限制後,如果zhu在該檔案系統上使用的空間超過1.5GB,系統就會警告使用者。當使用者資料達到2GB時,將不能存入任何資訊。

(2)如果需要檢視設定的磁碟配額,可以使用quota命令。例如檢視使用者zhu的磁碟配額限制:

[root@localhost home]# quota -u zhu
Disk quotas for user zhu (uid 500): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  /dev/sda3      40  1500000 2000000               5       0       0

(3)如果要為多個使用者設定相同的磁碟配額,可以先設定其中一個使用者的磁碟配額,然後使用選項p將配額資訊複製給其他使用者。

例如將使用者zhu的磁碟配額複製給使用者li:

[root@localhost home]# edquota -p zhu -u li
[root@localhost home]# quota -u li
Disk quotas for user li (uid 502): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda3      52  1500000 2000000               7       0       0

(4)如果需要對某個使用者組設定磁碟配額,可以使用編輯配額命令edquota的選項g。例如要設定使用者組teacher的磁碟配額:

# edquota -g teacher

檢視使用者組磁碟配額:

# quota -g teacher

(5)過渡期也稱為配額寬限時間,是指使用者在磁碟上存放資料的空間或檔案數超過了軟限制,但沒有達到硬限制時,使用者還能使用的最長寬限時間。使用者應該在過渡時間內,將磁碟使用空間降低到軟限制以下,否則將無法正常使用磁碟。

使用命令edquota的選項t可以修改過渡期:

# 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/sda3                     7days                  7days

上面的範例已經將過渡期設定為7天,讀者可以自行修改磁碟空間限制(Block grace period)和檔案數限制(Inode grace period)的過渡期時間。過渡期的單位可以是days、hours、minutes和seconds。

注意:不要對根分割區使用配額限制,否則會導致一些意外的情況發生,例如無法登入系統等。也不要對root使用者做配額限制,以免發生意外。

五、開啟磁碟配額命令quotaon

設定好使用者、使用者組配額和過渡期之後,還需要使用quotaon命令,在檔案系統上手動開啟配額限制功能。

【命令格式】

quotaon [option] filesystem

【常用選項】

-a:開啟所有檔案系統的磁碟配額功能。

-u:開啟使用者磁碟配額。

-g:開啟使用者組磁碟配額。

-v:如果開啟成功,就顯示提示資訊。

【用法範例】

(1)開啟指定檔案系統的磁碟配額功能:

[root@localhost home]# quotaon -vug /home
/dev/sda3 [/home]: group quotas turned on
/dev/sda3 [/home]: user quotas turned on

(2)也可以使用選項a開啟所有的檔案系統的磁碟配額功能:

# quotaon –av

需要注意的是,有些系統可能會自動開啟配額,不需要管理員手動開啟。

六、關閉磁碟配額命令quotaoff

用法同quotaon。

七、管理磁碟配額

(1)檢視磁碟使用情況:

[root@localhost home]# repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  156232       0       0            166     0     0       
zhu       --      40 1500000 2000000              5     0     0       
user1     --      32       0       0              4     0     0       
li        --      52 1500000 2000000              7     0     0       
ljx       --      32       0       0              4     0     0       
wlh       --      32       0       0              4     0     0       
mysql     --      32       0       0              4     0     0       
user2     --      32       0       0              4     0     0

使用者名稱後面的“--”,用於標識使用者當前是否已經超出了限制。如果超出了軟限制但沒有超出硬限制,則標識變為“+-”。

如果有多個檔案系統設定了磁碟配額限制,要檢視系統中所有磁碟的使用情況,可以使用repquota的選項a。

(2)校準磁碟使用情況:

磁碟配額使用一段時間後,系統記錄的磁碟使用情況可能會出現偏差,這時可以採用手動校準的方式保持準確性。

手動校準磁碟的使用情況,需要使用quotacheck命令:

# quotacheck -cug /dev/sda3

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-02/140306.htm


IT145.com E-mail:sddin#qq.com