Linux用戶磁盤配額


 
一:內核中支持QUOTA:
[root@localhost /]# grep  CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y
如果有上列輸出,則表示當前內核已經支持quota。
二:修改/etc/fstab加入QUOTA支持:
[root@localhost /]# vim /etc/fstab 
/dev/sdb1       /dvd    xfs     defaults,usrquota,grpquota    1      2
三:使用quotacheck初始化QUOTA數據庫:
因為quotacheck依據/etc/mtab搜索文件系統,所以要將剛剛修改的/dev/sdb1重新掛載
[root@localhost /]# mount /dvd -o remount       
[root@localhost /]# mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=926912k,nr_inodes=231728,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
sunrpc on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdb1 on /dvd type ext2 (rw,relatime,seclabel,quota,usrquota,grpquota)

[root@localhost /]# quotacheck -avug
quotacheck: Quota for users is enabled on mountpoint /dvd so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.
-a : 掃描所有在/etc/mtab中開啟quota的文件系統
-v : 顯示掃描過程
-u : 掃描所有user quotas   (usrquota)
-g : 掃描所有group quotas  (grpquota)

四:啟動QUOTA:(quotaon 為啟動 quotaoff 為關閉)
[root@localhost /]# quotaon -avug
/dev/sdb1 [/dvd]: group quotas turned on
/dev/sdb1 [/dvd]: user quotas turned on
-a : 開啟所有quota設定,根據/etc/mtab設定
-v : 當開啟quota時顯示信息
五:編輯用戶磁盤限額:
這里設定用戶quota最大使用容量為20M,當使用到10M時會得到警告要求降低到10M最多可以創建10個文件,當創建5個文件時會得到警告要求降低到5個文件
[root@localhost /]# edquota -u redhat(redhat為系統用戶名稱)
Disk quotas for user redhat (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0              0          0           0              0        0
改為
 
 
Disk quotas for user redhat (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0         10240      20480        0         5          10
-u : 編輯user的quota
-g : 編輯group的quota
-t : 編輯寬限時間
-p : 復制quota資料到另一用戶上

blocks :目前使用者(quota:uid=5011)在/dev/hda7所使用的空間,單位:KB (不要修改)
soft   :soft limit 磁盤空間限定值 單位:KB (需要設定)
hard   :hard limit 磁盤空間限定值 單位: KB (需要設定)
inodes :目前使用者使用掉的inodes,由於不容易使用inode控制,所以不要修改它。
soft   :soft limit 文件限制數量  (根據需要修改)
hard   :hard limit 文件限制數量   (根據需要修改)
soft limit :最低限制容量,在寬限期(grace period)之內,使用容量可以超過soft limit,但必須在寬限期之內將使用容量降低到soft limit以下。
hard limit :最終限制容量,如果使用者在寬限期內繼續寫入數據,到達hard limit將無法再寫入。
寬限時間:使用容量超過soft limit,寬限時間自動啟動,使用者將容量降低到soft limit以下,寬限時間自動關閉,如果使用者沒有在寬限時間內將容量降低到soft limit,那么他將無法再寫入數據,即使使用容量沒有到達hard limit 
六.設定寬限時間:
[root@localhost dvd]# 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/sdb1                     7days                  7days

[root@localhost dvd]# quota -uv redhat(-u : 顯示user。-v : 顯示quota值)
Disk quotas for user redhat (uid 1000): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0   10240    20480               0            5       10        
七.使用-p參數復制quota資料到另一個用戶:
[root@localhost dvd]# edquota -p redhat aaa  
[root@localhost dvd]# quota -uv aaa
Disk quotas for user aaa (uid 1001):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0     10240   20480               0          5      10        

同時復制給多個用戶:
[root@localhost dvd]#edquota -p redhat`awk -F: '$3 >499 {print $1}' /etc/passwd`
這樣就將quota的磁盤配額資料復制給所有uid >499的用戶(uid為500以上的用戶通常為真實用戶)
八.系統啟動時自動激活quota:
可以加入到/etc/rc.d/rc.sysinit或/etc/rc.d/rc.local中,在結尾加上一行:/usr/sbin/quotaon -aug
還要記得在系統關機/重啟腳本(/etc/rc.d/rc[0,6]/)中加入關閉quota的語句:/usr/sbin/quotaoff -aug 
九.查詢磁盤配額:
[root@localhost dvd]# repquota -a
*** Report for user quotas on device /dev/sdb1
Block grace time: 24:00; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20         0       0                        2     0     0       
十.計划任務quotcheck:
quotcheck用來掃描文件系統的磁盤用量,更新aquota.user,aquota.group保持quota記錄檔到最新的狀態。因此最好在系統啟動時執行或通過cron定期執行:
每周六早七點執行一次:0 7 * * 6 /sbin/quotacheck -avug

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM