1 基础知识
1.1 Disk Quota的概念
Disk Quota用于合理分配有限的磁盘使用空间
1.2 Disk Quota的配置方法
1.2.1 按空间和数量限额
– 用量配额(块配额),即限制可用空间量
– 文件配额(inode配额),即限制创建文件和目录的数量
1.2.2 按软硬限额
– 软配额,达到配额系统给予用户警告并不会采用限额行动
– 硬配额,达到配额系统拒绝用户保存数据
注:某些系统对硬配额有宽限时间(所以并非绝对)
1.2.3 按用户或组限额
– 根据用户ID限额
– 根据用户组限额
1.2.4 项目或目录限额
– ext4、XFS、f2fs、ZFS、Lustre等文件系统支持目录定义块或inode限额
– 管理员首先需要向目录的文件添加项目ID以建立项目标识
– 管理员然后需要定义包含项目标识目录的配额以建立配额限制
1.3 支持配额的系统
– Unix系统,如AIX(使用JFS或JFS2文件系统)
– Linux系统(使用ext3、ext4、ext2、XFS文件系统)
– Solaris(使用UFS或ZFS文件系统)
– Windows 2000以后的系统
1.4 常见的Unix磁盘配额程序
– quota,显示与用户的文件系统用户配额
– edquota,编辑文件系统的用户配额
– setquota,为文件系统设置磁盘配额
– repquota,总览文件系统的配合
– quotacheck,文件系统配额一致性检查器
– /etc/fstab(Linux)或/etc/vfs/tab(Solaris),文件系统默认参数列表(包括配额状态)
2 最佳实践
2.1 按用户和组限额
2.1.1 启用文件系统配额
vim /etc/fstab
加入如下配置,
UUID=71c48e4f-3a23-421c-a9cb-92a4d3717517 /data ext4 defaults,usrquota,grpquota 0 0
配置修改后,请使用如下命令重新挂载文件系统,
mount -o remount /data
2.1.2 初始化配额数据库文件
quotacheck -cug /data/
– 参数“c”声明跳过旧配额文件重新扫描并创建配额数据库文件
– 参数“u”声明统计系统用户的配额数据
– 参数“g”声明统计系统组的配额数据
如果遇到如下错误提示,
quotacheck: Cannot remount filesystem mounted on /data read-only so counted values might not be right. Please stop all programs writing to filesystem or use -m flag to force checking.
请按照以上提示增加“-m”参数声明不要尝试以只读方式重新挂载文件系统,
quotacheck -cugm /data/
2.1.3 启用磁盘配额
quotaon /data/
2.1.4 定义用户配额
edquota -u will
以下命令定义用户“will”的配额,可见如下显示,
Disk quotas for user will (uid 500): Filesystem blocks soft hard inodes soft hard /dev/mapper/ds-data 816 1030000 1031711 102 1030000 1031711
以上配置解析如下,
– 列“Filesystem”声明启用配额的文件系统名称
– 列“blocks”声明当前用户使用的块数目
– 列“soft”声明该用户的blocks软限制(“0”则无限制)
– 列“hard”声明该用户的blocks硬限制(“0”则无限制)
– 列“inodes”声明当前用户使用的块数目
– 列“soft”声明该用户的inodes软限制(“0”则无限制)
– 列“hard”声明该用户的inodes硬限制(“0”则无限制)
另外,快捷的设置方法范例如下,
setquota -u will 1030000 1031711 1030000 1031711 /dev/mapper/ds-data
另外,如果需要查询当前分区的Inode数量,请使用如下命令,
df -i
可见如下显示,
Filesystem Inodes IUsed IFree IUse% Mounted on #... /dev/mapper/ds-data 2621440 13 2621427 1% /data
另外,如果需要查询当前分区的block数量,请使用如下命令,
df -a
可见如下显示,
Filesystem 1K-blocks Used Available Use% Mounted on #... /dev/mapper/ds-data 20634236 176220 19409852 1% /data
另外,如果需要查询当前分区的大小,请使用如下命令,
df -h
可见如下显示,
Filesystem Size Used Avail Use% Mounted on #... /dev/mapper/ds-data 20G 173M 19G 1% /data
所以,根据以上命令的结果,大概1G的block数量是“20634236block/20G=1031711.8block”
2.1.5 定义组配额
edquota -g will
以下命令定义组“will”的配额,可见如下显示,
Disk quotas for group will (gid 500): Filesystem blocks soft hard inodes soft hard /dev/mapper/ds-data 769280 20630000 20634236 95732 2620000 2621440
以上配置解析如下,
– 列“Filesystem”声明启用配额的文件系统名称
– 列“blocks”声明当前组使用的块数目
– 列“soft”声明该组的blocks软限制(“0”则无限制)
– 列“hard”声明该组的blocks硬限制(“0”则无限制)
– 列“inodes”声明当前组使用的块数目
– 列“soft”声明该组的inodes软限制(“0”则无限制)
– 列“hard”声明该组的inodes硬限制(“0”则无限制)
另外,快捷的设置方法范例如下,
setquota -g will 20630000 20634236 2620000 2621440 /dev/mapper/ds-data
2.1.6 查询配额
quota -u will
可见如下显示,
Disk quotas for user will (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/mapper/ds-data 354872 1030000 1031711 44166 1030000 1031711
以上查询用户限额,以下查询组限额,
quota -g will
可见如下显示,
Disk quotas for group will (gid 500): Filesystem blocks quota limit grace files quota limit grace /dev/mapper/ds-data 827200 20630000 20634236 102947 2620000 2621440
2.1.7 测试配额(仅供参考,请根据实际情况修改)
mkdir /data/will cp /var/log/messages /data/will/ chown will:will -R /data/will
以上创建文件后,使用如下命令循环复制测试文件,
su - will cd /data/will for i in `seq -w 1 1000000`; do cp -rp messages copy-test-$i; done
另外,由于创建的文件比较多,可使用如下命令浏览和清除,
cd /data/will find . -name \*copy-test-\* -exec ls -l {} \; find . -name \*copy-test-\* -exec rm -f {} \;
参阅文档
=======================
https://en.wikipedia.org/wiki/Disk_quota
没有评论