linux磁碟配額限制方式
最近研究docker的磁碟配額限制,貌似官方最新版本的docker已經支援,底層用的是linux的quota,於是自己對quota進行了簡單的嘗試,記錄於此。本文將演示如何建立一個gquota的使用者組,並對這個使用者組下的使用者進行磁碟配額限制。
檢視核心是否支援
# grep CONFIG_QUOTA /boot/config-[version]
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTA和CONFIG_QUOTACTL兩個y,恭喜,你的核心支援quota,否則就要升級或是重新編譯核心了,貌似2.4以上的版本核心都支援
修改核心fstab,對根目錄開啟磁碟配額限制
# vim /etc/fstab
標出來的地方就是需要新增的地方,這個表示是對根目錄進行磁碟配額限制,當然,也可以加在其他行,則是對其他的目錄進行磁碟配額限制。
檢視目錄掛載位置
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 11G 4.4G 71% /
tmpfs 938M 72K 938M 1% /dev/shm
/dev/sda1 190M 32M 148M 18% /boot
重新掛載根目錄分割槽,核心重新讀取/etc/fstab檔案
# mount -o remount /
# mount | grep quota
/dev/sda3 on / type ext4 (rw,usrquota,grpquota)
通過quotacheck命令在根目錄下生成quota配置檔案
# quotacheck -cugm /dev/sda3
# ll / | grep quota
-rw-------. 1 root root 8192 Oct 27 12:01 aquota.group
-rw-------. 1 root root 7168 Oct 27 11:43 aquota.user
啟動磁碟配額
# quotaon /dev/sda3
建立一個使用者組gquota,用來測試
# groupadd gquota
配置對使用者組gquota的磁碟配額限制
# edquota -g gquota
設定使用者組gquota的軟限制為480M,硬限制為500M(使用者超過軟限制會得到報警,超不過硬限制)
新建使用者並加入gquota使用者組
# useradd -m temp
# passwd temp
# usermod -g gquota temp
# su - temp
模擬大檔案寫入
# dd if=/dev/zero of=/home/temp/file1 bs=1M count=450
大小沒有超過軟限制,沒有告警
再次寫入
# dd if=/dev/zero of=/home/temp/file3 bs=1M count=40
此時已經出現告警
再次寫入
# dd if=/dev/zero of=/home/temp/file3 bs=1M count=40
顯示寫入失敗
檢視磁碟分配使用情況
說明
需要說明的一點是,對組的限制指的是這個組下面的所有使用者加起來使用的磁碟總額,假設有個temp2使用者也加入了gquota這個組,那麼如果temp使用者已經寫入了400M,那麼留給temp2使用者的軟限制則只剩80M,磁碟配額限制是可以針對單個使用者的,即執行下面的命令,依然以新建一個temp使用者為例,temp使用者不用加入gquota組
[root@centos66-3 ~]# useradd -m temp
[root@centos66-3 ~]# passwd temp
[root@centos66-3 ~]# edquota -u temp
配置temp使用者的磁碟配額軟限制和硬限制依然可以採用上面的方式進行寫入測試。