磁盤配額在本質上就是限制某些用戶過度的使用磁盤空間,文了保護磁盤不至於過於飽和導致其他用戶無法使用該磁盤空間。給用戶一定的磁盤空間使用限制,包括一個警告容量,當到達警告容量時,系統會對其進行提醒,一旦用戶使用到限制容量大小,便無法在在該磁盤繼續創建文件。
初始化
如果我們要使用磁盤配額,首先要做的第一步是在掛載分區選項裏添加usrquota和grpquota兩個選項,分別對應的是對user的限制,和對該group用戶的限制。
將他們寫到/etc/fstab的磁盤掛載信息裏,如:
LABEL="TEST" /test ext4 defaults,usrquota,grpquota 0 0
[root@CT6 ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="TEST" UUID="2160957c-ad8f-4ae8-b351-f9f997f85081" TYPE="ext4" [root@CT6 ~]# vim /etc/fstab 1 2 # 3 # /etc/fstab 4 # Created by anaconda on Tue Jul 11 15:55:27 2017 5 # 6 # Accessible filesystems, by reference, are maintained under '/dev/disk' 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 UUID=6df0d47f-1a62-4419-a49c-e57906aa2173 / ext4 defaults 1 1 10 UUID=cab5975d-48e5-4699-ad14-3ba77c23eb76 /app ext4 defaults 1 2 11 UUID=2ce5a899-4627-4999-8d5f-6dba1a73008e /boot ext4 defaults 1 2 12 UUID=8c5e10b7-90c0-49f0-a165-54e8120fab57 swap swap defaults 0 0 13 UUID=d61dadb7-2d2c-4639-a927-3de618b914ca swap swap defaults 0 0 14 UUID=2160957c-ad8f-4ae8-b351-f9f997f85081 /test ext4 defaults,usrquota,g rpquota 0 0
然後我們初始化數據庫,初始化數據庫後,系統會在該磁盤下創建文件aquota.group,aquota.user。
說明:
quotacheck命令通過掃描指定的文件系統,獲取磁盤的使用情況,創建、檢查和修復磁盤配額(quota)文件。執行quotacheck指令,掃描掛入系統的分區,並在各分區的文件系統根目錄下產生quota.user和quota.group文件,設置用戶和羣組的磁盤空間限制。
命令:quotacheck –cug 掛載的目錄
-c 對文件系統進行掃描,不會讀已經存在的配額文件
-u 掃描磁盤空間時,計算每個用戶識別碼所佔用的目錄和文件數目
-g 掃描磁盤空間時,計算每個羣組識別碼所佔用的目錄和文件數目
[root@CT6 ~]# quotacheck -cug /test [root@CT6 ~]# ll /test/ total 32 -rw-------. 1 root root 6144 Aug 22 21:13 aquota.group -rw-------. 1 root root 6144 Aug 22 21:13 aquota.user drwx------. 2 root root 16384 Aug 22 21:07 lost+found
開啓/關閉指定文件系統的配額功能
命令:quotaon/quotaoff
參數:
-a:開啓在/ect/fstab文件裏,有加入quota設置的分區的空間限制(默)
-g:開啓羣組的磁盤空間限制
-u:開啓用戶的磁盤空間限制
-v:顯示指令指令執行過程
如果我指定的文件系統掛載在/test下:
開啓:quotaon /test
關閉:quotaoff /test
[root@CT6 ~]# quotaon /test [root@CT6 ~]# ll /test total 32 -rw-------. 1 root root 6144 Aug 22 21:13 aquota.group -rw-------. 1 root root 6144 Aug 22 21:13 aquota.user drwx------. 2 root root 16384 Aug 22 21:07 lost+found [root@CT6 ~]# rm /test/aquota.group rm: remove regular file `/test/aquota.group'? y rm: cannot remove `/test/aquota.group': Operation not permitted -------------------------開啓後root也無法將數據庫文件刪除
編輯配額信息
在這一部分就是編輯我們要限制的配額信息,包括配額的大小,配額文件數量,我們有兩種方式可以對磁盤進行配額。
直接編輯:
命令:edquota username
參數:
-u:設置用戶的quota,這是預設的參數;
-g:設置羣組的quota;
-p<源用戶名稱>:將源用戶的quota設置套用至其他用戶或羣組;
-t:設置寬限期限。
Disk quotas for user Tom (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 1150980 1048576 2097152 1 200 250
如上所示就是我們針對於某用戶或者組需要進行的配額信息:
(默認單位是K,可以設置單位爲M,G)
blocks就是該用戶或組實際的文件大小總和,無需改動
soft是警告會產生的容量,當該用戶或組的文件總量到達這個值就會給出警告信息
hard是限制,當總量到達這個值後,就無法在添加文件
inodes是指文件數量,無需改動
soft指文件數量的警告值
hard是指實際限制值
[root@CT6 ~]# edquota Tom Disk quotas for user Tom (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 8G 10G 0 200 220 ~
在shell中編輯:
格式:
setquota usename ##M|G ##M|G n1 n2 掛載目錄
例如:setquota usename 35G 50G 40 50 /test
這四個參數對應的就是上面的soft hard soft hard
[root@CT6 ~]# setquota mage 6G 8G 100 120 /test [root@CT6 ~]#
查看配額狀態
當我們想查看用戶的配額使用情況時,我們可以使用一些命令來查看,我們在這裏說兩個命令:
查看單用戶:
命令:quota [option] username
參數:
-g:列出羣組的磁盤空間限制;
-q:簡明列表,只列出超過限制的部分;
-u:列出用戶的磁盤空間限制;
-v:顯示該用戶或羣組,在所有掛入系統的存儲設備的空間限制;
-V:顯示版本信息。
[root@CT6 ~]# quota -vu Tom Disk quotas for user Tom (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 0 8388608 10485760 0 200 220
查看所有用戶:
命令:repquota [option] mount_point
參數:
-a:列出在/etc/fstab文件裏,有加入quota設置的分區的使用狀況,包括用戶和羣組;
-g:列出所有羣組的磁盤空間限制;
-u:列出所有用戶的磁盤空間限制;
-v:顯示該用戶或羣組的所有空間限制。
[root@CT6 ~]# repquota -vu /test *** Report for user quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 2 0 0 Tom -- 0 8388608 10485760 0 200 220 mage -- 0 6291456 8388608 0 100 120 Statistics: Total blocks: 7 Data blocks: 1 Entries: 3 Used average: 3.000000
發送警告信息
當磁盤到達警告範圍,我們可以使用命令發郵件告訴用戶及時清理自己的文件,以便可以持續使用該空間
命令:warnquota [option]
參數:
-u 給所有超過限制的用戶發郵件
-g 當組的限制超出時,給組管理員發郵件,管理員需在/etc/quotagrpadmins 中指定
格式: groupname: username
[root@CT6 ~]# warnquota -u
[root@CT6 ~]#