歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

磁盤配額管理

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

一、為磁盤配額提供支持

在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
Copyright © Linux教程網 All Rights Reserved