在多用戶系統(tǒng)中,如果沒有對用戶使用的磁盤空間做出限制,用戶無限制地存放數(shù)據(jù)和文件,可能會導(dǎo)致系統(tǒng)磁盤空間告警。如果存放的是無用數(shù)據(jù),就會導(dǎo)致磁盤空間白白浪費(fèi)。磁盤配額可以限制用戶或組在磁盤上存放文件的空間,這樣既可以讓用戶擁有一定的存儲空間,又可以避免用戶無限制地存放數(shù)據(jù)導(dǎo)致系統(tǒng)磁盤空間不足。
在Linux系統(tǒng)中,為磁盤配額提供支持的是quota軟件包,如果系統(tǒng)中沒有安裝這個軟件包,用戶可以自行安裝。
在設(shè)置磁盤配額之前,必須要獲文件系統(tǒng)的支持。為此需要系統(tǒng)中的自動掛載文件/etc/fstab,為相應(yīng)的文件系統(tǒng)添加掛載參數(shù):usrquota(啟用用戶限額)和grpquota(啟用用戶組限額)。
以磁盤分區(qū)/dev/sda3為例,講解如何建立磁盤配額。
(1)修改自動掛載文件/etc/fstab,啟用文件系統(tǒng)sda3的配額支持,將其修改為以下內(nèi)容:
/dev/sda3 /home ext3 defaults,usrquota,grpquota 1 2
(2)修改完之后,需要重新掛載文件系統(tǒng),以啟動磁盤配額支持:
# umount /home# mount /dev/sda3 /home
也可以使用以下命令重新掛載/etc/fstab中記錄的所有分區(qū):
#使用mount的選項(xiàng)a重新掛載所有分區(qū)# mount -a
實(shí)在不行就重新啟動系統(tǒng)即可。
(3)修改完成之后,可以使用mount命令驗(yàn)證設(shè)置:
#使用mount命令查看掛載的分區(qū)及參數(shù)# mount.../dev/sda3 on /home type ext3 (rw,usrquota,grpquota)
如果在命令輸出中看到usrquota和grpquota,表明已經(jīng)成功啟用磁盤配額支持。
啟用了文件系統(tǒng)的配額支持后,還不能立即使用配額,還必須檢查相應(yīng)的文件系統(tǒng),并建立磁盤配額文件。檢測文件系統(tǒng)并建立磁盤配額文件,需要使用命令quotacheck。
【命令格式】
quotacheck [option] filesystem
【常用選項(xiàng)】
c:跳過原有配額文件,只執(zhí)行新的掃描并保存到磁盤。
v:顯示命令詳細(xì)信息。
u:檢查用戶使用文件系統(tǒng)的情況。
g:檢查用戶組使用文件系統(tǒng)的情況。
【用法示例】
(1)檢查磁盤分區(qū)/dev/sdd1,并將相關(guān)信息寫入到配額文件中:
# quotacheck -cug /home
(2)如果要驗(yàn)證上述命令的執(zhí)行結(jié)果,可以使用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
從上面的命令輸出可以看出,命令在文件系統(tǒng)的根目錄中建立了兩個文件:aquota.group和aquota.user。這兩個文件分別用于存放用戶和用戶組的磁盤配額信息,包括文件系統(tǒng)的使用情況及配置信息等。
在所有用戶都可以使用的文件系統(tǒng)上,并不需要為每個用戶都設(shè)置磁盤配額,通常只需要為那些經(jīng)常存放大文件、嚴(yán)重占用磁盤空間的用戶設(shè)置即可。
查看文件系統(tǒng)的使用情況,可以使用repquota命令(使用該命令的前提是已經(jīng)創(chuàng)建了磁盤配額文件):
# repquota /home*** Report for user quotas on device /dev/sda3Block grace time: 7days; Inode grace time: 7days Block limits File limitsUser 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
查看上述命令的輸出并選擇要限制的用戶,之后就可以建立配額限制了。
完成前面的準(zhǔn)備工作就可以開始設(shè)置磁盤配額了。
【命令格式】
edquota [option] [username] [groupname]
使用edquota命令建立磁盤配額時,需要指定創(chuàng)建配額的用戶和用戶組名。
【常用選項(xiàng)】
u:指定限制的用戶名。
g:指定要限制的用戶組名。
p:復(fù)制用戶或用戶組的配額信息。
t:修改過渡期,即用戶的磁盤配額超過軟限制的寬限時間。
(1)為用戶zhu建立配額:
# edquota -u zhu
此時,命令會啟動用戶配額配置界面,配置界面文本如下(其實(shí)這個界面就是vi編輯器,可以像使用vi那樣編輯這些設(shè)置):
Disk quotas for user zhu (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sda3 40 0 0 5 0 0
各自段意義:
Filesystem:當(dāng)前正在設(shè)置配額限制的文件系統(tǒng)。
blocks:當(dāng)前用戶已經(jīng)使用的磁盤分區(qū)空間,單位是KB。
soft:對用戶使用的磁盤空間或文件數(shù)的軟限制(磁盤空間單位是KB)。用戶使用的磁盤空間或文件數(shù)在過渡期內(nèi)可以超過這個限制。
hard:對用戶使用的磁盤空間或文件數(shù)的硬限制。用戶使用的磁盤空間或文件數(shù)絕對不能超過此限制。
inodes:用戶在當(dāng)前磁盤空間中占用的i節(jié)點(diǎn)數(shù),由系統(tǒng)自動統(tǒng)計,用戶不必修改此項(xiàng)。
在磁盤配額界面中有兩組soft、hard字段,其中前一組soft、hard表示對磁盤空間大小的限制,后一組表示對文件數(shù)的限制。
由于文件數(shù)限制對一般的使用者而言意義不大,因此設(shè)置磁盤配額時,一般不在文件數(shù)上設(shè)置限制。
注意:修改磁盤配額時,無論是磁盤空間限制,還是文件數(shù)限制,硬限制的數(shù)值都應(yīng)該比軟限制大。
在此示例中,假定需要設(shè)置用戶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
保存退出后即可完成設(shè)置。
設(shè)置上述配額限制后,如果zhu在該文件系統(tǒng)上使用的空間超過1.5GB,系統(tǒng)就會警告用戶。當(dāng)用戶數(shù)據(jù)達(dá)到2GB時,將不能存入任何信息。
(2)如果需要查看設(shè)置的磁盤配額,可以使用quota命令。例如查看用戶zhu的磁盤配額限制:
[root@localhost home]# quota -u zhuDisk quotas for user zhu (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda3 40 1500000 2000000 5 0 0
(3)如果要為多個用戶設(shè)置相同的磁盤配額,可以先設(shè)置其中一個用戶的磁盤配額,然后使用選項(xiàng)p將配額信息復(fù)制給其他用戶。
例如將用戶zhu的磁盤配額復(fù)制給用戶li:
[root@localhost home]# edquota -p zhu -u li[root@localhost home]# quota -u liDisk quotas for user li (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda3 52 1500000 2000000 7 0 0
(4)如果需要對某個用戶組設(shè)置磁盤配額,可以使用編輯配額命令edquota的選項(xiàng)g。例如要設(shè)置用戶組teacher的磁盤配額:
# edquota -g teacher
查看用戶組磁盤配額:
# quota -g teacher
(5)過渡期也稱為配額寬限時間,是指用戶在磁盤上存放數(shù)據(jù)的空間或文件數(shù)超過了軟限制,但沒有達(dá)到硬限制時,用戶還能使用的最長寬限時間。用戶應(yīng)該在過渡時間內(nèi),將磁盤使用空間降低到軟限制以下,否則將無法正常使用磁盤。
使用命令edquota的選項(xiàng)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
上面的示例已經(jīng)將過渡期設(shè)置為7天,讀者可以自行修改磁盤空間限制(Block grace period)和文件數(shù)限制(Inode grace period)的過渡期時間。過渡期的單位可以是days、hours、minutes和seconds。
注意:不要對根分區(qū)使用配額限制,否則會導(dǎo)致一些意外的情況發(fā)生,例如無法登錄系統(tǒng)等。也不要對root用戶做配額限制,以免發(fā)生意外。
設(shè)置好用戶、用戶組配額和過渡期之后,還需要使用quotaon命令,在文件系統(tǒng)上手動開啟配額限制功能。
【命令格式】
quotaon [option] filesystem
【常用選項(xiàng)】
a:開啟所有文件系統(tǒng)的磁盤配額功能。
u:開啟用戶磁盤配額。
g:開啟用戶組磁盤配額。
v:如果開啟成功,就顯示提示信息。
【用法示例】
(1)開啟指定文件系統(tǒng)的磁盤配額功能:
[root@localhost home]# quotaon -vug /home/dev/sda3 [/home]: group quotas turned on/dev/sda3 [/home]: user quotas turned on
(2)也可以使用選項(xiàng)a開啟所有的文件系統(tǒng)的磁盤配額功能:
# quotaon –av
需要注意的是,有些系統(tǒng)可能會自動開啟配額,不需要管理員手動開啟。
用法同quotaon。
(1)查看磁盤使用情況:
[root@localhost home]# repquota /home*** Report for user quotas on device /dev/sda3Block grace time: 7days; Inode grace time: 7days Block limits File limitsUser 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
用戶名后面的“--”,用于標(biāo)識用戶當(dāng)前是否已經(jīng)超出了限制。如果超出了軟限制但沒有超出硬限制,則標(biāo)識變?yōu)椤?-”。
如果有多個文件系統(tǒng)設(shè)置了磁盤配額限制,要查看系統(tǒng)中所有磁盤的使用情況,可以使用repquota的選項(xiàng)a。
(2)校準(zhǔn)磁盤使用情況:
磁盤配額使用一段時間后,系統(tǒng)記錄的磁盤使用情況可能會出現(xiàn)偏差,這時可以采用手動校準(zhǔn)的方式保持準(zhǔn)確性。
手動校準(zhǔn)磁盤的使用情況,需要使用quotacheck命令:
# quotacheck -cug /dev/sda3
聯(lián)系客服