当Linux根分区的磁盘空间耗尽时,Linux系统将无法再建立新的文件(包括程序运行的临时文件),从而出现服务程序崩溃、系统无法启动等故障现象。为了避免在服务器中出现类似的磁盘空间不足的问题,可以设置启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行设置,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要。
需要Linux内核支持
安装xfsprogs与quota软件包
##Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区)
限制对象:用户账号、组账号
限制类型:磁盘容量、文件数量
限制方法:软限制(可允许超限额,有时间限制,超出规定时间将直接把超出内容直接删除)、硬限制
以支持配额功能的方式挂载文件系统
编辑用户和组账号的配额设置
验证磁盘配额功能
查看磁盘配额使用情况
安装xfsprogs与quota软件包
1、先开启支持磁盘配额的功能
2、编辑用户和组账号的配额设置
3、验证磁盘配额功能
4、查看磁盘配额使用情况
方法一:在配置文件中永久设置开机自动挂载(推荐)
[root@localhost ~]#vim /etc/fstab //进入配置文件
…………//省略部分信息
/dev/kgc/ky02 /zb xfs defaults,usrquota,grpquota 0 0 //启动配额支持
方法二:使用命令挂载,重启后需重新挂载
[root@localhost ~]#mount -o usrquta,grpquota /dev/kgc/ky02 /zb //挂载
[root@localhost ~]#mount //查询挂载内容是否启动配额支持
…………//省略部分信息
/dev/kgc/ky02 on /zb type xfs (rw,relatime,atte2,inose64,usrquota,grpquta) //已启动
[root@localhost ~]#chmod 777 /zb //设置/zb权限为777(可读可写可执行)
使用xfs_quota命令编辑配额设置
xfs_quota -x -c ‘limit -u bsoft=N bhard=N isoft=N ihard=N 用户名’ 挂载点
limit 上限
常用选项
-x 开启专家模式
-g 指定组
-u 指定用户
-c 命令
限制字段
容量软限制:bsoft
容量硬限制:bhard
数量软限制:isoft
数量硬限制:ihard
软限制<=硬限制
软限制在硬限制的范围内允许超额,但有时间限制
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=6 ml' /zb //编辑配额设置
xfs_quota -x -c 'report选项 '挂载点
report常用选项
-a 所有
-i inode 限制数量
-b block 限制大小
-u 用户
-g 组
-p proj 对象
方法一:
[root@localhost ~]# xfs_quota -x -c 'report -ib' /zb //对所有用户和组查看数量及容量限制
User quota on /zb (/dev/mapper/kgc-ky02)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
------
root 0 0 0 00 [--------] 3 0 0 00 [--------]
ml 0 51200 102400 00 [--------] 0 4 6 00 [--------]
Group quota on /zb (/dev/mapper/kgc-ky02)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
------
[root@localhost ~]# xfs_quota -x -c 'quota -iuv ml' /zb //查看对ml用户容量的限制
Disk quotas for User ml (1000)
Filesystem Files Quota Limit Warn/Time Mounted on
/dev/mapper/kgc-ky02 0 4 6 00 [--------] /zb
[root@localhost ~]# xfs_quota -x -c 'quota -uv ml' /zb //查看对ml用户节点数量的限制
Disk quotas for User ml (1000)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/mapper/kgc-ky02 0 51200 102400 00 [--------] /zb
切换到设置配额的分区(挂载目录)
创建指定数量的文件:使用touch命令,或cp命令
创建指定容量的文件:使用dd命令,或cp命令
验证数量限制:
[ml@localhost ~]$ cd /zb //切换ml用户到/zb目录下
[ml@localhost zb]$ ls //目录无内容
[ml@localhost zb]$ touch test{1..4}.txt //创建4个文件
[ml@localhost zb]$ ls
test1.txt test2.txt test3.txt test4.txt
[ml@localhost zb]$ touch test5.txt //创建第5个文件
[ml@localhost zb]$ touch test6.txt //创建第6个文件
[ml@localhost zb]$ touch test7.txt //上限6个,尝试创建第7个文件
touch: 无法创建"test7.txt": 超出磁盘限额 //创建失败,提示超出限额
[ml@localhost zb]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt
验证容量限制:
[ml@localhost zb]$ ls
test1.txt test2.txt //目录下仅有两个文件
[ml@localhost zb]$ dd if=/dev/zero of=/zb/test1.txt bs=1M count=80 //复制80M内容进来
记录了80+0 的读入
记录了80+0 的写出
83886080字节(84 MB)已复制,0.0357496 秒,2.3 GB/秒
[ml@localhost zb]$ dd if=/dev/zero of=/zb/test2.txt bs=1M count=50 //再次复制50M
dd: 写入"/zb/test2.txt" 出错: 超出磁盘限额 //提示超出限额
记录了21+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0482307 秒,435 MB/秒 //但有写入20M
[ml@localhost zb]$ cd
[ml@localhost ~]$ ls -lh /zb
总用量 100M //统计容量,共100M
-rw-rw-r--. 1 ml ml 80M 11月 5 09:38 test1.txt
-rw-rw-r--. 1 ml ml 20M 11月 5 09:39 test2.txt
[ml@localhost ~]$ cd /zb
[ml@localhost zb]$ touch test3.txt //目前仅有2个文件,但容量以达限制,尝试创建文件3
touch: 无法创建"test3.txt": 超出磁盘限额 //提示超出限额
当容量达到上限后,即使文件未达限制,也无法继续创建文件