目的,限制用戶磁盤空間占用,例如給用戶限制100-150G容量
1.安裝磁盤配額工具
sudo apt-get install -y quota
2.備份并修改/etc/fstab文件,使能支持quota
sudo cp /etc/fstab /etc/fstab.bak
vim /etc/fstab #寫入如下,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1
UUID=911f7120-b32c-49f2-a6e3-d71880c10ef0 / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1 0 0
#保存退出
#重新掛載,你是應用在home目錄就重新掛載home,其他的一樣,因為這里磁盤空間是掛在在home下的,那么我就在fstab中寫在home下,這里的uuid就是我的home的掛載uuiid
sudo mount -o remount /home
3生成或更新相關的配額文件。這些文件用于跟蹤用戶的磁盤使用情況,并實施磁盤配額限制
sudo quotacheck -cugm /home
ls -l /home 查看home下,已經生成了兩個文件 [aquota.user 和 aquota.group]
4. 設置空間配額
sudo setquota -u admin 104857600 157286400 0 0 /home # 100 -150GB 單位是KB,自己可以換算
復制現有用戶 lison 的磁盤配額設置給新用戶,這樣比較方便
sudo edquota -p lison -u 用戶名
5.查看配額
sudo repquota /home # 查看所有用戶配額
sudo quota -uvs admin # 查看單個用戶配額,人類可讀
============================================
6.立即生效(無需重啟)
sudo quotaon -u /dev/sda1
測試用戶操作(以admin用戶身份)
touch test_file # 應能成功創建
dd if=/dev/zero of=test.img bs=1G count=200 # 應在150GB時被阻斷
常用的硬盤配額命令主要有:
quotaon,quotaoff——啟動或關閉一個分區的配額服務
quotaon -u /home # 啟動
quotaoff -u /home # 關閉
可以通過更改/etc/fstab文件的條目來啟動和關閉硬盤配額服務
quota -v(用戶可以查詢自己的硬盤配額情況)
查看所有超限用戶
sudo repquota -a | grep +
方案A:提高硬限制(臨時放寬)
sudo setquota -u zack 104857600 200000000 0 0 /dev/sda1
方案B:寬限時間延長(爭取處理時間)
sudo setquota -T 14 -u zack /dev/sda1 # 14天寬限期
方案C:豁免特定用戶(緊急情況下)
sudo setquota -u zack 0 0 0 0 /dev/sda1 # 完全解除限制
1. 通知用戶清理建議
echo “請立即清理超出150GB的數據,否則無法保存新文件” | write zack
2. 提供清理工具
sudo -u zack ncdu /home/zack # 交互式磁盤分析工具
3. 設置自動清理(可選)
find /home/zack -type f -user zack -size +1G -mtime +30 -exec rm -f {} ;
#磁盤配額的寬限期設置詳解
#在磁盤配額系統中,寬限期(grace period)是指用戶超過軟限制(soft limit)后還能繼續使用資源的緩沖時間
設置塊配額寬限期為14天,文件數配額寬限期為14天,默認的是7天(方法1:全局設置(影響所有用戶))
sudo setquota -t 1209600 1209600 /dev/sda1
參數解釋:
1209600 = 14天 × 24小時 × 60分鐘 × 60秒 = 14天的秒數
只設置zack用戶的寬限期(方法2:針對特定用戶設置)
sudo setquota -T -u zack 14d 14d /dev/sda1
參數解釋:
14d = 14天(支持單位:d=天, h=小時, m=分鐘, s=秒)