Linux磁盤配額的設(shè)置與檢測
本文幫助您了解 Linux 系統(tǒng)管理任務(wù)相關(guān)知識。對 Linux Professional Institute Certification 級別 1(LPIC-1)考試的資料準(zhǔn)備有所幫助。下面我們就開始學(xué)習(xí)如何管理用戶的磁盤配額。
概述
在本文中,了解如何管理用戶的磁盤配額。學(xué)習(xí):
- 設(shè)置一個文件系統(tǒng)的磁盤配額
- 設(shè)置配額限制
- 檢查配額
- 生成配額報(bào)告
除非有特殊說明,本文中的例子都使用 2.6.34 內(nèi)核的 Fedora 13。您在其他系統(tǒng)上的結(jié)果可能有所不同。
本文幫助您準(zhǔn)備 Linux Professional Institute's Junior Level Administration(LPIC-1)考試 101 中主題 104 下的目標(biāo) 104.4。該目標(biāo)的權(quán)值為 1。
先決條件
為了最有效地利用本系列中的文章,您應(yīng)該具有基本的 Linux 知識,并需要準(zhǔn)備一個 Linux 系統(tǒng),用于練習(xí)本文介紹的命令。有時(shí)候不同版本的程序輸出格式不同,因此您所得到的結(jié)果未必總是與這里所示的清單和圖相同。
配額簡介
配額允許您控制用戶或者組織的磁盤使用。它能防止個體用戶和組織使用文件系統(tǒng)中超過自己所允許的部分,或者造成系統(tǒng)完全擁堵。XFS 文件系統(tǒng)也支持項(xiàng)目配額,它限制了一個項(xiàng)目所能使用的空間大小,無論哪個用戶在項(xiàng)目的目錄樹中創(chuàng)建文件。
配額必須由 root 用戶或者有 root 權(quán)限的用戶啟用和管理。它們往往用于多用戶系統(tǒng),不常用于單一用戶的工作站。
有 3 種不同的配額支持:
1、vfsold,或者版本 1 配額
2、vfsv0,或者版本 2 配額
3、xfs,XFS 文件系統(tǒng)上的配額
本文包括非 XFS 文件系統(tǒng)上的版本 2 配額和 XFS 文件系統(tǒng)上的 xfs 配額。請注意,LPI 101 考試以版本 2 配額為重點(diǎn)。
配額需要 2.4 內(nèi)核之后引入的內(nèi)核支持。2.6 內(nèi)核也有您所需的支持。
XFS 配額往往是日志化的。內(nèi)核 2.6.11 及以上版本支持日志化版本 2 配額。
測試設(shè)置
首先要說明本文使用的測試分區(qū)設(shè)置,這樣您就能更好地理解部分例子。如果您已經(jīng)理解了文件所有權(quán)和權(quán)限,也已經(jīng)安裝了配額包,那么您可以直接跳到 配額的啟用 部分。參考 學(xué)習(xí) Linux,101:LPIC-1 路線圖,獲得該系列提供更多命令詳細(xì)信息的其他文章鏈接,本文此處只提供簡單說明。
測試分區(qū)和用戶
我們使用 110GB ext4 分區(qū)(/dev/sda7)和 40GB XFS 分區(qū)(/dev/sda8)來演示。它們分別安裝在 /quotatest/ext4 和 /quotatest/xfs。
清單 1. 設(shè)置分區(qū)
[root@echidna ~]# mkfs -t ext4 /dev/sda7 mke2fs 1.41.10 (10-Feb-2009) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 7159808 inodes, 28637862 blocks 1431893 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 874 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 28 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@echidna ~]# mkfs -t xfs /dev/sda8 meta-data=/dev/sda8 isize=256 agcount=4, agsize=2622108 blks = sectsz=512 attr=2 data = bsize=4096 blocks=10488429, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=5121, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@echidna ~]# mkdir -p /quotatest/ext4 [root@echidna ~]# mkdir -p /quotatest/xfs [root@echidna ~]# mount /dev/sda7 /quotatest/ext4 [root@echidna ~]# mount /dev/sda8 /quotatest/xfs
在這個例子中,我們希望普通用戶能夠在新的文件系統(tǒng)中創(chuàng)建文件。這樣創(chuàng)建,文件系統(tǒng)歸 root 所有,一般用戶不能在系統(tǒng)上創(chuàng)建文件或者目錄。我們變更所有權(quán),這樣新的文件系統(tǒng)就由擁有名為 development 的專用組的用戶 development 所有。我們變更權(quán)限,這樣在 development 組中的用戶就能夠創(chuàng)建文件和目錄。 清單 2 顯示了我們?nèi)绾卧O(shè)置所有權(quán)和權(quán)限。
清單 2. 變更測試分區(qū)的所有權(quán)和權(quán)限
[root@echidna ~]# # Show default ownership and permissions [root@echidna ~]# ls -l /quotatest/ total 4 drwxr-xr-x. 3 root root 4096 Nov 18 22:43 ext4 drwxr-xr-x. 2 root root 6 Nov 18 22:43 xfs [root@echidna ~]# # Change user and group ownership to development [root@echidna ~]# chown development:development /quotatest/* [root@echidna ~]# # Allow group members to create files and directories [root@echidna ~]# chmod g+w /quotatest/* [root@echidna ~]# ls -l /quotatest/ total 4 drwxrwxr-x. 3 development development 4096 Nov 18 22:43 ext4 drwxrwxr-x. 2 development development 6 Nov 18 22:43 xfs [root@echidna ~]# # Set default group of new files and directories [root@echidna ~]# # to development [root@echidna ~]# chmod g+s /quotatest/ext4/ [root@echidna ~]# ls -l /quotatest/ total 4 drwxrwsr-x. 3 development development 4096 Nov 19 11:39 ext4 drwxrwxr-x. 2 development development 6 Nov 18 22:43 xfs |
我們利用 3 位用戶,ian、gretchen 和 tom,他們每人都擁有和用戶名一樣的專用組,同時(shí)也是 development 組的成員。
#p#
檢查配額包
如果您正在使用一個桌面系統(tǒng),那么您可能無法安裝配額包,因?yàn)榕漕~不是普通的默認(rèn)桌面系統(tǒng)安裝的。使用 dpkg 或者 rpm 確認(rèn)您是否安裝了包,如清單 3。
清單 3. 檢查配額包
# On Debian-based systems ian@pinguino:~$ dpkg -l quota Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii quota 4.00~pre1-3 implementation of the disk quota system # On systems that use RPM [ian@echidna ~]$ rpm -q quota quota-3.17-11.fc13.x86_64 如果您沒有如本文所述安裝配額包,在安裝頁 “學(xué)習(xí) Linux,101:Debian 包管理” 和 學(xué)習(xí) Linux,101:RPM 和 YUM 包管理 獲取幫助。
配額的啟用
添加配額支持到 /etc/fstab
啟用配額的下一步是根據(jù)您是否想實(shí)現(xiàn)用戶配額、組配額,或者兩者兼有,添加適當(dāng)選項(xiàng)到 /etc/fstab 的文件系統(tǒng)定義。XFS 文件系統(tǒng)也支持項(xiàng)目配額。
編寫時(shí),啟用配額的選項(xiàng)不是集中記錄在一個明顯的手冊頁中。表 1 顯示了可用的選項(xiàng),以及它們適用的配額系統(tǒng)類型。
表 1. /etc/fstab 中的配額選項(xiàng)
選項(xiàng) | 適用于 |
使用 |
usrquota | 所有類型 |
啟用用戶配額 |
usrjquota=filename | vfsv0 |
啟用日志化的用戶配額;需要一個配額數(shù)據(jù)庫文件名(通常為 aquota.user)和 jqfmt 選項(xiàng)的規(guī)格 |
uquota | xfs |
相當(dāng)于 usrquota |
grpquota | 所有類型 |
支持組配額 |
grpjquota=filename | vfsv0 |
啟用日志化組配額;需要一個配額數(shù)據(jù)庫文件名(通常為 aquota.group)和 jpfmt 選項(xiàng)的規(guī)格 |
gquota | xfs |
相當(dāng)于 grpquota |
prjquota | xfs |
啟用項(xiàng)目配額 |
pquota | xfs |
相當(dāng)于 prjquota |
jqfmt=format | vfsv0 |
當(dāng) usrjquota 或者 grpjquota 被指定時(shí)使用的配額格式;目前只有 vfsv0 是受支持的格式 |
quota | vfsold,vfsv0 |
相當(dāng)于 usrquota |
noquota | vfsold,vfsv0 |
不啟用配額 |
uqnoenforce | xfs |
啟用用戶配額審計(jì),但是不能啟用強(qiáng)制措施 |
gqnoenforce | xfs |
啟用組配額審計(jì),但是不能啟用強(qiáng)制措施 |
pqnoenforce | xfs |
啟用項(xiàng)目配額審計(jì),但是不能啟用強(qiáng)制措施 |
我們使用一個 ext4 分區(qū)和一個 XFS 分區(qū)進(jìn)行演示。我們將會在這些文件系統(tǒng)中添加用戶和組配額,這樣您就可以看到配額如何在兩個不同的文件系統(tǒng)中運(yùn)行。我們的 /etc/fstab 輸入如清單 4 所示。
清單 4. 啟用 /etc/fstab 中的配額支持
/dev/sda7 /quotatest/ext4 ext4 defaults,usrquota,grpquota 1 2 /dev/sda8 /quotatest/xfs xfs defaults,usrquota,grpquota 1 2
重新安裝文件系統(tǒng)
編輯 /etc/fstab 和添加配額之后,您需要重新安裝文件系統(tǒng)。對 XFS 文件系統(tǒng)來說,配額數(shù)據(jù)是文件系統(tǒng)元數(shù)據(jù)的一部分。對其他文件系統(tǒng)來說,用戶配額信息存儲在文件系統(tǒng) root 的 aquota.user 文件,組配額也同樣存儲在 aquota.group。版本 1 配額使用 quota.user 和 quota.group。對這些文件系統(tǒng)來說,重新安裝完文件系統(tǒng)之后,您必須創(chuàng)建配額文件,并啟用配額進(jìn)行檢測。quotacheck 命令檢查所有文件系統(tǒng)上的配額,如果 aquota.user 和 aquota.group 文件不存在,就會創(chuàng)建所需的 aquota.user 和 aquota.group 文件。它還能修復(fù)損壞的配額文件。查看手冊頁獲得更多信息。
以下是通常和 quotacheck 命令一起使用的部分常用選項(xiàng):
-a or --all
檢查所有安裝在 /etc/mtab(除了 NFS 文件系統(tǒng))的文件系統(tǒng)
-c or --create-files
忽略當(dāng)前的配額文件。運(yùn)行新的掃描,將結(jié)果寫到磁盤
-u or --user
檢查用戶配額(默認(rèn)的)
-g or --group
檢查組配額
-v or --verbose
Verbose 輸出
清單 5 顯示了在我們新安裝的文件系統(tǒng)上運(yùn)行 quotacheck 命令的結(jié)果。如果您沒有使用 -a 選項(xiàng),就必須指定您想要檢查的文件系統(tǒng)。
清單 5. 創(chuàng)建 vfsold 和 vfsv0 的配額數(shù)據(jù)庫文件
[root@echidna ~]# quotacheck -augvc quotacheck: Skipping /dev/sda8 [/quotatest/xfs] quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. quotacheck: Scanning /dev/sda7 [/quotatest/ext4] done quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Checked 2 directories and 1 files quotacheck: Old file not found. quotacheck: Old file not found.
請注意,來自 quotacheck 命令的警告建議我們轉(zhuǎn)而使用日志化的配額。將 /dev/sda7 上 ext4 文件系統(tǒng) /etc/fstab 中的選項(xiàng)由
defaults,usrquota,grpquota
改為
defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,就能完成此變更。
還需要注意的是,XFS 文件系統(tǒng)可由 quotacheck 命令跳過,因?yàn)?XFS 配額結(jié)構(gòu)包含在元數(shù)據(jù)和日志中。#p#
開始或者停止配額檢測
要強(qiáng)制實(shí)施 vfsold 和 vfsv0 配額檢測,您必須使用 quotaon 命令將其啟用。常用選項(xiàng) -a,-g,-u 和 -v 與 quotacheck 命令 有相同意思。類似的,如果您沒有指定 -a 選項(xiàng),就必須指定文件系統(tǒng)。如果只是想要顯示配額的開啟和關(guān)閉,您可以使用 -p 選項(xiàng)。使用 quotaoff 命令關(guān)閉配額檢測。清單 6 顯示了這些命令的例子。
清單 6. 開始 vfsold 和 vfsv0 配額的配額檢查
[root@echidna ~]# quotaon -p /quotatest/ext4/ group quota on /quotatest/ext4 (/dev/sda7) is off user quota on /quotatest/ext4 (/dev/sda7) is off [root@echidna ~]# quotaon -uagv /dev/sda7 [/quotatest/ext4]: group quotas turned on /dev/sda7 [/quotatest/ext4]: user quotas turned on [root@echidna ~]# quotaoff -ugv /quotatest/ext4/ /dev/sda7 [/quotatest/ext4]: group quotas turned off /dev/sda7 [/quotatest/ext4]: user quotas turned off [root@echidna ~]# quotaon -ugv /quotatest/ext4/ /dev/sda7 [/quotatest/ext4]: group quotas turned on /dev/sda7 [/quotatest/ext4]: user quotas turned on
對 XFS 文件系統(tǒng)來說,配額檢查是默認(rèn)啟動的,除非文件安裝了 uqnoenforce,gqnoenforce 或者 pqnoenforce 設(shè)置。使用 xfs_quota 命令和 -x(適用于 專家)選項(xiàng)控制 xfs 配額。沒有 -x 選項(xiàng),您顯示配額信息會受到限制。命令還有一些子命令,包括 help,用于顯示可用的子命令清單,state,用于顯示整體狀況,enable,用于啟用配額檢測,還有 disable,用于停止。選項(xiàng) -u、-g 和 -p 分別限制用戶、組或項(xiàng)目的行為。使用 -v 獲得 verbose 輸出。您可以在命令行模式運(yùn)行命令,命令行中獨(dú)立的子命令由 -c 選項(xiàng)指明。您可以多次指定多種子命令的該選項(xiàng)。如果您將指定子命令的選項(xiàng),可能就需要引用命令。清單 7 中顯示了一些例子。
清單 7. 開始 xfs 配額的配額檢測
[root@echidna ~]# xfs_quota -x xfs_quota> state User quota state on /quotatest/xfs (/dev/sda8) Accounting: ON Enforcement: ON Inode: #131 (3 blocks, 3 extents) Group quota state on /quotatest/xfs (/dev/sda8) Accounting: ON Enforcement: ON Inode: #132 (3 blocks, 3 extents) Project quota state on /quotatest/xfs (/dev/sda8) Accounting: OFF Enforcement: OFF Inode: #132 (3 blocks, 3 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30] xfs_quota> disable xfs_quota> quit [root@echidna ~]# xfs_quota -x -c "enable -gu -v" /quotatest/xfs User quota state on /quotatest/xfs (/dev/sda8) Accounting: ON Enforcement: ON Inode: #131 (3 blocks, 3 extents) Group quota state on /quotatest/xfs (/dev/sda8) Accounting: ON Enforcement: ON Inode: #132 (3 blocks, 3 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30]
在啟動上檢查 vfsold 和 vfsv0 配額
雖然不在本文范圍內(nèi),quotacheck 和 quotaon 命令通常包含在初始化腳本中,這樣無論您何時(shí)啟動系統(tǒng),都能同時(shí)啟用配額。Quota Mini HOWTO(見 參考資料 的鏈接)有額外的信息。如果您使用日志配額,就不需要在啟動時(shí)運(yùn)行 quotacheck。
設(shè)置配額限制
正如您所見,配額不是通過文件系統(tǒng) root 中的二進(jìn)制文件控制,就是通過文件系統(tǒng)元數(shù)據(jù)控制。為特定用戶設(shè)置一個配額,要使用 edquota 命令。這個命令會為用戶從啟用配額的各種文件系統(tǒng)中提取配額信息,創(chuàng)建一個臨時(shí)文件,并為您打開編輯器來調(diào)整配額。通過默認(rèn)設(shè)置,edquota 使用 vi 編輯器。如果您想使用不同的編輯器,設(shè)置 EDITOR 或者 VISUAL 變量。編輯用戶配額,使用 -u 選項(xiàng)(默認(rèn))和一個或者多個用戶名。編輯組配額,使用 -g 和一個或者多個組名。
您必須是 root 用戶,才可以編輯配額。使用 vi 作為編輯器,顯示的信息類似清單 8 所示。
清單 8. 運(yùn)行 edquota
Disk quotas for user ian (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda7 0 0 0 0 0 0 /dev/sda8 0 0 0 0 0 0 ~ ~
正如您在清單 8 中所見,edquota 顯示了我當(dāng)前的使用,包括配額啟用中的每個文件系統(tǒng)上的 1K 模塊和索引節(jié)點(diǎn)。對模塊和索引節(jié)點(diǎn)的使用還有軟、硬件上的限制。在這個例子中,它們都是 0,意味著沒有配額限制。
軟件限制就是一個值,這個值就是用戶超過配額時(shí)將會收到郵件警告的次數(shù)。硬件限制用戶不能超過的次數(shù)。您可以將模塊限制想成用戶能夠存儲的數(shù)據(jù)量的適當(dāng)限制,索引節(jié)點(diǎn)限制想成文件和目錄數(shù)的限制。
變更配額限制
您可以更改臨時(shí)文件中的值,然后保存文件來變更配額限制。如果您不想變更,就不保存直接關(guān)閉文件。我們在例子中使用了非常小的限制,這樣您就能很容易就見到效果了。假設(shè)您想將配額設(shè)置為每個測試文件系統(tǒng)上 10MB 的數(shù)據(jù)和 50 個文件。允許額外 10% 的硬件限制,您可以如清單 9 所示設(shè)置值。
清單 9. 設(shè)置限制
Disk quotas for user ian (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda7 0 10240 11264 0 50 55 /dev/sda8 0 10240 11264 0 50 55
保存文件,新的配額就會生效。請注意,您對使用的模塊或者索引節(jié)點(diǎn)值所作出的任何修改都會被忽略。
配額的復(fù)制
現(xiàn)在您就要為附加開發(fā)人員創(chuàng)建 id。假設(shè)您有用戶 gretchen 和 tom,而且您希望他們兩個都和 ian 有相同的配額。您可以使用 edquota 的 -p 選項(xiàng),它使用 ian 的配額為其他用戶配額的 原型,如清單 10 所示。
清單 10. 從原型設(shè)置配額
root@pinguino:~# edquota -p ian gretchen tom
組限制
您還可以根據(jù)文件的組所有權(quán),使用 edquota 限制磁盤空間的分配。比如,上面提到的三位開發(fā)人員是 development 組的成員。要把組中所有成員所能使用的總量設(shè)置為 250MB 和 100 文件,使用命令 edquota -g development 并設(shè)置值,如清單 11 所示。
清單 11. 為一個組設(shè)置配額
Disk quotas for group development (gid 505): Filesystem blocks soft hard inodes soft hard /dev/sda7 4 25600 28160 1 100 110 /dev/sda8 0 25600 28160 0 100 110
您可能會想,為什么在 /dev/sda7 的 ext4 文件系統(tǒng)上已經(jīng)有被使用的模塊和索引節(jié)點(diǎn)。請回想一下,在清單 2 中,我們使用 chown 和 chmod 來設(shè)置所有新文件的默認(rèn)組為 development 組?這也適用于兩個配額數(shù)據(jù)庫文件。您可以將它們改回到 root 的中的值,如清單 12 所示。請保證在關(guān)閉配額檢查之后進(jìn)行變更,然后再將它開啟。
清單 12. 重新設(shè)置配額數(shù)據(jù)庫文件的組所有人
[root@echidna ~]# quotaoff /quotatest/ext4/ [root@echidna ~]# chown :root /quotatest/ext4/aquota.* [root@echidna ~]# quotaon /quotatest/ext4/
寬限期
用戶或者組可能會超出軟件限制的 寬限期,默認(rèn)值為 7 天。寬限期之后,軟件限制就會作為硬件限制執(zhí)行。一旦達(dá)到硬件限制,就必須在創(chuàng)建新文件之前刪除部分文件。使用 edquota 的 -t 選項(xiàng)設(shè)置寬限期。您再一次回到編輯器中,會見到類似清單 13 中的數(shù)據(jù)。和之前一樣,保存變更來更新值。請確保給用戶留有足夠時(shí)間接收警告郵件、相應(yīng)地刪除部分文件。
清單 13. 設(shè)置寬限期
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/sda7 7days 7days /dev/sda8 7days 7days
檢查配額
沒有選項(xiàng)的 quota 命令顯示了任何文件系統(tǒng)上激活用戶的配額,如果用戶在這個系統(tǒng)上有文件,就會在其上設(shè)置配額。-v 選項(xiàng)顯示了啟用配額的所有文件系統(tǒng)的信息。root 用戶可以給命令添加一個用戶名來查看特定用戶的配額。在清單 14 中,我們在 ext4 文件系統(tǒng)上創(chuàng)建一個 1MB 文件,并說明了有無 -v 選項(xiàng)的 quota 命令的使用。
清單 14. 顯示配額
[ian@echidna ~]$ dd if=/dev/zero of=/quotatest/ext4/ianfile1 bs=1024 count=1024 1024+0 records in 1024+0 records out 1048576 bytes (1.0 MB) copied, 0.00793796 s, 132 MB/s [ian@echidna ~]$ quota Disk quotas for user ian (uid 1000): Filesystem blocks quota limit grace files quota limit grace /dev/sda7 1024 10240 11264 1 50 55 [ian@echidna ~]$ quota -v Disk quotas for user ian (uid 1000): Filesystem blocks quota limit grace files quota limit grace /dev/sda7 1024 10240 11264 1 50 55 /dev/sda8 0 10240 11264 0 50 55
根據(jù)當(dāng)前使用的統(tǒng)計(jì)數(shù)據(jù),您可以看到顯示的軟硬件配置限制。如果在創(chuàng)建文件之后立刻運(yùn)行 quota 命令,您就會在短時(shí)間內(nèi)見到略大的模塊數(shù)顯示。清單 15 顯示了如果您超過軟件限制會出現(xiàn)什么情況,以及如果超過硬件限制會出現(xiàn)什么情況。在這個例子中,我們在已創(chuàng)建的 1MB 中添加 9.5MB 的文件,這很顯然超出了軟件限制。請注意軟件限制如何獲得一個星號,除了它表示用戶超出配額。還要注意的是,寬限期列標(biāo)明了用戶要在多長時(shí)間內(nèi)解決問題。***,當(dāng)我們嘗試復(fù)制 1MB 文件時(shí),因?yàn)樗鼤鲇脩?ian 的硬件限制,所以操作失敗。
清單 15. 超過配額
[ian@echidna ~]$ dd if=/dev/zero of=/quotatest/ext4/ianfile2 bs=1024 count=9500 9500+0 records in 9500+0 records out 9728000 bytes (9.7 MB) copied, 0.0754223 s, 129 MB/s [ian@echidna ~]$ quota Disk quotas for user ian (uid 1000): Filesystem blocks quota limit grace files quota limit grace /dev/sda7 10552* 10240 11264 7days 2 50 55 [ian@echidna ~]$ cp /quotatest/ext4/ianfile1 /quotatest/ext4/ianfile3 cp: writing `/quotatest/ext4/ianfile3': Disk quota exceeded
#p# 配額報(bào)告
一次檢查一個用戶的配額很沒有效率,所以您會想要使用 repquota 命令生成配額報(bào)告。清單 16 顯示了如何查看 /quotatest/ext4/ 上所有用戶和組的配額。
清單 16. 生成配額報(bào)告
[root@echidna ~]# repquota -ug /quotatest/ext4/ *** Report for user quotas on device /dev/sda7 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 24 0 0 2 0 0 ian +- 11260 10240 11264 6days 3 50 55 gretchen -- 2080 10240 11264 44 50 55 tom -+ 660 10240 11264 55 50 55 6days development -- 4 0 0 1 0 0 *** Report for group quotas on device /dev/sda7 Block grace time: 7days; Inode grace time: 7days Block limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 24 0 0 2 0 0 development -+ 14004 25600 28160 103 100 110 7days
請注意,清單 16 中用戶 ian、tom 和組 development 的加號,它表明現(xiàn)在每個都超出了配額。用戶 ian 有過多的數(shù)據(jù)。用戶 tom 有過多的文件。組 development 也有過多文件。
正如使用其他配額命令一樣,-a 選項(xiàng)生成啟用配額的已安裝的文件系統(tǒng)的報(bào)告。-v 選項(xiàng)生成一個更詳細(xì)的輸出。-n 選項(xiàng)生成數(shù)字用戶的編號,而不是將用戶編號解析為名稱。這個會對龐大的報(bào)告提供一個性能提升,但對讀者并沒有那么有用。
XFS 文件系統(tǒng)上的項(xiàng)目配額
XFS 配額系統(tǒng)還支持項(xiàng)目配額,它是組配額的替換。您不能在 XFS 文件系統(tǒng)上同時(shí)使用組和項(xiàng)目配額。項(xiàng)目配額要通過在 /etc/fstab 中添加 prjquota(或者 pquota)啟用。
項(xiàng)目配額使用數(shù)字 id 的概念和更具描述性的項(xiàng)目名稱。文件 /etc/projects 用于映射數(shù)字項(xiàng)目識別符到目錄樹,而文件 /etc/projid 映射數(shù)字項(xiàng)目識別符到項(xiàng)目名稱。可以不使用 /etc 中的這兩個文件進(jìn)行操作,但是這樣較為不方便。查看映射頁面獲取詳細(xì)信息。
要設(shè)置項(xiàng)目配額,您必須在專家模式(-x 選項(xiàng))使用 xfs_quota 命令。首先您必須使用 project 子命令和 -s 選項(xiàng),通過標(biāo)記所有受影響的索引節(jié)點(diǎn)作為項(xiàng)目一部分來設(shè)置項(xiàng)目配額。然后使用 limit 子命令來設(shè)置硬件或者軟件限制。清單 17 顯示了如何在 /quotatest/xfs/proj-dir1 下設(shè)置一個 15MB 項(xiàng)目硬件限制的項(xiàng)目樹。我們還將設(shè)置一個沒有限制的并行 /quotatest/xfs/proj-dir2 進(jìn)行說明。
清單 17. 設(shè)置 xfs 項(xiàng)目配額
[root@echidna ~]# mkdir -m ag+w /quotatest/xfs/proj-dir{1,2} [root@echidna ~]# chown development:development /quotatest/xfs/proj-dir* [root@echidna ~]# echo "50:/quotatest/xfs/proj-dir1" >> /etc/projects [root@echidna ~]# echo "dev-projects:50" >> /etc/projid [root@echidna ~]# xfs_quota -x xfs_quota> path Filesystem Pathname 000 /quotatest/xfs /dev/sda8 (uquota, pquota) [001] /quotatest/xfs/proj-dir1 /dev/sda8 (project 50, dev-projects) xfs_quota> project -s dev-projects Setting up project dev-projects (path /quotatest/xfs/proj-dir1)... Processed 1 (/etc/projects and cmdline) paths for project dev-projects with recursion depth infinite (-1). xfs_quota> limit -p bhard=15m dev-projects xfs_quota> q
我們將通過使用戶 chris 創(chuàng)建幾個文件來說明項(xiàng)目配額。用戶 chris 不是 development 組的成員,也沒有為自己和組設(shè)置配額。清單 18 顯示了 chris 不能在 /quotatest/xfs/proj-dir1 創(chuàng)建大于 15MB 的數(shù)據(jù),但在 /quotatest/xfs/proj-dir2 中沒有限制。
清單 18. 行動中的項(xiàng)目配額
[chris@echidna xfs]$ id chris uid=1010(chris) gid=1010(chris) groups=1010(chris) [chris@echidna xfs]$ dd if=/dev/zero of=proj-dir1/chris1 bs=1024 count=10000 10000+0 records in 10000+0 records out 10240000 bytes (10 MB) copied, 0.0379557 s, 270 MB/s [chris@echidna xfs]$ cp proj-dir1/chris1 proj-dir1/chris2 cp: writing `proj-dir1/chris2': No space left on device [chris@echidna xfs]$ ls -l proj-dir1 total 15356 -rw-rw-r--. 1 chris chris 10240000 Nov 23 13:16 chris1 -rw-rw-r--. 1 chris chris 5484544 Nov 23 13:16 chris2 [chris@echidna xfs]$ # Note: second copy was truncated at hard limit [chris@echidna xfs]$ cp proj-dir1/chris1 proj-dir2/chris1 [chris@echidna xfs]$ cp proj-dir1/chris1 proj-dir2/chris2 [chris@echidna xfs]$ cp proj-dir1/chris1 proj-dir2/chris3 [chris@echidna xfs]$ du -sh * 15M proj-dir1 30M proj-dir2
用戶警告
warnquota 命令用于對超出配額的用戶發(fā)出郵件警告。當(dāng)組超出配額時(shí),就會發(fā)郵件給 /etc/quotagrpadmins 中組的指定用戶。郵件格式由文件 /etc/warnquota.conf 控制。文件 /etc/quotatab 用于映射名稱,例如 /dev/sda7 映射為用戶更容易理解的描述,如 “Shared EXT3 filesystem”。通常 warnquota 作為一個 cron 工作定期運(yùn)行。查看用戶手冊頁面,了解更多 cron 和 warnquota 的信息。
Linux 上的配額介紹就到此為止。
原文鏈接:http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-4/index.html?ca=drs-
【編輯推薦】