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
相關文章
相關標籤/搜索