--
MikeGore - 19 Jan 2011
Quotas
Note: recommend using the quotaset script below - it is way easier to use
Resources
Verify system Quota options available
- Run quotacheck I see we have jurnalled quotas
quotacheck: Your kernel probably supports journaled quota but you are not using
it. Consider switching to journaled quota to avoid running quotacheck after an
unclean shutdown.
quotacheck: Quota for users is enabled on mountpoint / so quotacheck might
damage the file.
Please turn quotas off or use -f to force checking.
- Verify kernel config options for jurnalled quotas * grep QUOTA /boot/config-`uname -r`
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_PRINT_QUOTA_WARNING=y
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_XFS_QUOTA=y
Manual remount with quotas turned on
Notes:
/home /usb /usb_backup
mount /dev/sdd1 /home -o
remount,rw,relatime,errors=remount-ro,usrjquota=aquota.user,jqfmt=vfsv0
mount /dev/sdc1 /usb1 -o
remount,rw,relatime,errors=remount-ro,usrjquota=aquota.user,jqfmt=vfsv0
mount /dev/sdd1 /usb1_backup -o
remount,rw,relatime,errors=remount-ro,usrjquota=aquota.user,jqfmt=vfsv0
How to assign quota inodes
*Notes: setquota want to know the number of inodes to assign a user - directory entries
- Syntax: setquota -u userid blocks_soft blocks_hard files_soft files_hard /mount_pount
- /home
- dumpe2fs /dev/sdb1 | more
Filesystem volume name: home
Inode count: 4481024
Block count: 17920499
Free blocks: 16009141
Free inodes: 4397275
Block size: 4096
Notes
We have 1 inode for every 4 blocks so with quotas we will give the user blocks/4 inodes
So for a 1G quota we have 1G/4096 blocks = 244140.625 and inodes would be 61035
Quota Example
Example:
- setquota -u
userid
1000000 1500000 61035 75000 -a /home
- Set 1G quota on normal users. See Quota section below for description of arguments
- Quick summary: 1000000 = 1G in 1K blocks,1500000 = 1.5G grace
- 61035 = 1G / 4096 / 4
- 4 is the number of blocks per inode as determined from dumpe2fs
- 4096 is the block size as determined from e2fs
- -a /home is the mounted home file system - not the users home directory
Quota script
Simplifies the calulations once they are known for a filesystem
- usage: ./script user size_in_K file_system_mount_point
#!/bin/bash
#
# 3 Dec 2012 Mike Gore
if (($# < 3))
then
echo Usage: $0 user size_in_K file_system_mount_point
exit 1
fi
user=$1
mysize=$2
fs=$3
mygrace=$(($mysize * 3 /2 ))
echo Grace: $mygrace
myinodes=$(($mysize / 4 / 4))
myinodes_grace=$(($myinodes * 3 / 2))
echo setquota -u $user $mysize $mygrace $myinodes $myinodes_grace -a $fs
setquota -u $user $mysize $mygrace $myinodes $myinodes_grace -a $fs
Initializing quotas
- quotaoff -a
- quotacheck -avugm
quotacheck: Your kernel probably supports journaled quota but you are not using
it. Consider switching to journaled quota to avoid running quotacheck after an
unclean shutdown.
quotacheck: Scanning /dev/sda1 [/] done
quotacheck: Checked 25324 directories and 240273 files
quotacheck: Scanning /dev/sdb1 [/home] done
quotacheck: Old group file not found. Usage will not be substracted.
quotacheck: Checked 3998 directories and 79760 files
quotacheck: Scanning /dev/sdc1 [/usb1] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Old group file not found. Usage will not be substracted.
quotacheck: Checked 29309 directories and 320418 files
quotacheck: Old file not found.
quotacheck: Scanning /dev/sdd1 [/usb1_backup] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Old group file not found. Usage will not be substracted.
quotacheck: Checked 29311 directories and 320418 files
quotacheck: Old file not found.
Setting default user quotas example for elora.cs
- Settings: 1G on /home 10G on /usb1 and usb1_backup
- cat /cscf-adm/scripts/update_quota
#!/bin/bash
#
# Mike Gore
# Apr 28, 2009
NOLIMIT="glabahn jorchard jwlwan paforsyt rbsimpso jageorge kvetzal yuying"
USERS="acbelang amemarto aramotar b39wang csbmorle gxshen j27wang jwlwan l8xu lost+found momanovi myakhave nmhelsai polsar t2dravia tbian wjxiao ynzhang yq
huang z4chen"
NOLIMIT="glabahn jorchard jwlwan paforsyt rbsimpso jageorge kvetzal yuying"
USERS="acbelang amemarto aramotar b39wang csbmorle gxshen j27wang jwlwan l8xu lost+found momanovi myakhave nmhelsai polsar t2dravia tbian wjxiao ynzhang yq
huang z4chen"
#turn off quotas
quotaoff -a
#setquota -u userid blocks_1k_max blocks_1k max_grace inodes_max inodes_max_grace
# inodes = files, we have 4096 bytes per inode so we just assign that number
# grace is the ammount they can go over for the grace period
# 1G on /home
for i in $USERS
do
echo $i
setquota -u $i 1000000 1500000 61035 75000 -a /home
done
# 10G on /usb1
for i in $USERS
do
echo $i
setquota -u $i 10000000 15000000 61035 75000 -a /usb1
done
# 10G on /usb1_backup
for i in $USERS
do
echo $i
setquota -u $i 10000000 15000000 61035 75000 -a /usb1_backup
done
#turn on quotas
quotaon -a