- 磁盘容量配额
- 查看内核是否支持quota功能:
- 修改/etc/fstab添加支持磁盘配额选项
- 卸载、加载/web,并查看/web项
- 创建磁盘配额配置文件
- 对用户实现配额
- 测试用户配额
- 关闭磁盘配额
磁盘容量配额
Unix系统最初设计理念就让许多人一起使用,多任务的操作系统,但是硬件的资源是固定有限的,如果出现个小破坏份子不断的创建文件或下载电影,那么硬盘空间总有一天会被占满的吧,这时就需要quota服务帮助我们为每个用户限制可以使用的硬盘空间,一旦超出预算就不再允许他们使用。
quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:
软限制:当达到软限制时会提示用户,但允许用户在规定期限内继续使用。
硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
查看内核是否支持quota功能:
[[email protected] ~]# dmesg | grep quotaVFS: Disk quotas dquot_6.5.2
查看quota程序包是否已经安装:
[[email protected] ~]# rpm -q quotaquota-3.17-23.el6.x86_64
修改/etc/fstab添加支持磁盘配额选项
首先在系统新建一个用于挂载分区的目录,然后修改/etc/fstab添加一条自动挂载分区条目:
[[email protected] ~]# vim /etc/fstab/dev/sdc1 /web ext4 defaults,usrquota,grpquota 0 0
卸载、加载/web,并查看/web项
[root@localhost ~]# umount /web/; mount -a
为了让其他用户可以使用这个分区,先将这个实验用的分区权限修改成777
[root@localhost ~]# chmod 777 /data/
创建磁盘配额配置文件
[root@localhost ~]# quotacheck -vug /web/
-v 显示扫描过程;
-u 针对扫描情况与目录的使用情况建立aquota.user;
-g 针对用户扫描文件与使用情况建立aquota.group;
接着就能看到分区目录中自动生成了两个配置文件
[[email protected] /]# ll /web/total 3104-rw------- 1 root root 7168 Jul 25 10:40 aquota.group-rw------- 1 root root 7168 Jul 25 10:39 aquota.user
对用户实现配额
[root@localhost ~]# edquota -u zhanghe
输入上面的命令后,会进入一个vi编辑界面
选项解释
Filesystem下显示实现磁盘配额的分区;
blocks下为当前已经使用的大小,不用修改;
soft为软限制,超出后会给出警告,超出的部分默认会保存7天;
hard为硬限制,不可超越的限制(软硬限制默认单位都是KB);
后面的两个相同的soft、hard分别表示分区中这个用户可以创建的文件数目软硬限制;
本例中设置,zhanghe可以使用/dev/sdb1分区的软限制大小10M,硬限制20M,可创建的文件个数软限制是3个,硬限制5个;
Disk quotas for user zhanghe (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdc1 0 10240 20480 0 3 5
修改保存退出后,开启这个分区的磁盘配额
[root@localhost ~]# quotaon /web/
测试用户配额
如果操作无误,现在磁盘配额就已经开始起作用了,使用zhanghe用户登录测试如下:
切换到zhanghe用户
[root@localhost ~]# su - zhanghe
进入/dev/sdc1分区
[zhanghe@localhost ~]$ cd /web/
所以理论上最后写入/web/testfile1的数据应该是1200KB
[[email protected] ~]$ dd if=/dev/zero of=/web/testfile1 bs=100K count=120sdc1: warning, user block quota exceeded.//因为针对zhanghe用户在这个分区的软限制设置是10M,所以这里给出了警告信息记录了120+0 的读入记录了120+0 的写出12288000字节(12 MB)已复制,0.145558 秒,84.4 MB/秒
可以查看到testfile1的大小是12M
[[email protected] ~]$ ll /web/testfile1 -h-rw-rw-r-- 1 zhanghe zhanghe 12M 8月 29 06:51 /web/testfile1//测试向第二个文件/web/testfile2写入10M垃圾数据[[email protected] ~]$ dd if=/dev/zero of=/web/testfile2 bs=100K count=120sdc1: write failed, user block limit reached.dd: 写入"/web/testfile2" 出错: 超出磁盘限额//出现了一个警告,并且下方显示只有8M的数据被复制,这是因为我们设置的硬限制是20M记录了85+0 的读入记录了84+0 的写出8683520字节(8.7 MB)已复制,0.0676851 秒,128 MB/秒
关闭磁盘配额
关闭单个磁盘的磁盘配额
[root@localhost ~]# quotaoff /data/
关闭所有已经开启的磁盘配额
[root@localhost ~]# quotaoff -a
反之,开启所有磁盘配额
[root@localhost ~]# quotaon -a
如果不再使用磁盘配额,可以将配置文件也删除
[[email protected] ~]# rm -rf /sdb1/aquota.*