磁盘容量配额
前面章节讲到的Linux系统的设计初衷理念就让许多人一起使用,成为多用户、多任务的操作系统,但是硬件的资源是固定有限的,如果出现个小破坏份子不断的创建文件或下载电影,那么硬盘空间总有一天会被占满的吧.这时就需要磁盘配额服务帮助管理员限制某用户或某个用户组对特定文件夹可以使用的最大硬盘空间,一旦超出预算就不再允许他们继续使用。quota服务做磁盘配额可以限制用户的硬盘可用量或最大创建文件数量,并且还有软、硬限制的功能。详情请关注《linux就该这么学》。
操作方法
- 01
在红帽RHEL7系统中已经默认安装了quota磁盘配额服务程序包,但是硬盘设备默认是没有支持的,需要手动的编辑一下配置文件让对应的/boot目录能够支持了quota磁盘配额技术,对于学习过早期Linux系统或有红帽RHEL6系统使用经验的同学可能会犯一个小错误,因为早期Linux系统想让设备支持quota磁盘配额服务的是usrquota参数,而在本系统中则是uquota参数,然后重启系统后就能使用mount命令看到/boot目录已经支持了quota磁盘配额技术啦: [root@linuxprobe ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 4 19:26:23 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/rhel-root / xfs defaults 1 1 UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults,uquota 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 /dev/sdb1 /newFS xfs defaults 0 0 /dev/sdb2 swap swap defaults 0 0 [root@linuxprobe ~]# reboot [root@linuxprobe ~]# mount | grep boot /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota) 接下来创建一个用于检查磁盘配额效果的用户,并对/boot目录增加其他人的写权限,保证用户能够正常的写入数据: [root@linuxprobe ~]# useradd tom [root@linuxprobe ~]# chmod -Rf o+w /boot
- 02
xfs_quota命令用于管理XFS文件系统的quota硬盘配额,格式为:“quota [参数] 配额 文件系统”。 这是一个专门针对于XFS文件系统管理quota磁盘配额服务而设计的命令,其中-c参数用于以参数的形式设置要执行的命令,-x参数是专家模式,让运维人员能够对quota服务做更多复杂的配置。那么就来用xfs_quota命令设置tom用户对/boot目录的磁盘配额吧,具体的限额控制包括有硬盘使用软限制为3M,硬盘使用硬限制为6M,创建文件数量软限制为3个,创建文件硬限制为6个。 [root@linuxprobe ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot [root@linuxprobe ~]# xfs_quota -x -c report /boot User quota on /boot (/dev/sda1) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 95084 0 0 00 [--------] tom 0 3072 6144 00 [--------] 当配置好quota磁盘配额服务对tom用户在/boot目录上的各种限制后,就可以尝试切换到这个普通用户的身份上,然后分别尝试创建一个体积为5M和8M的文件,很明显第二次就会受到了系统限制: [root@linuxprobe ~]# su - tom [tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1 1+0 records in 1+0 records out 5242880 bytes (5.2 MB) copied, 0.123966 s, 42.3 MB/s [tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1 dd: error writing ‘/boot/tom’: Disk quota exceeded 1+0 records in 0+0 records out 6291456 bytes (6.3 MB) copied, 0.0201593 s, 312 MB/s
- 03
edquota命令用于编辑用户的quota配额限制,格式为:“edquota [参数] [用户]”。 在为用户设置了quota磁盘配额限制后可以用edquota来随着需求的变化而进一步修改限额的数值,其中-u参数代表要针对那个用户进行的设置,-g参数则代表要针对那个用户组进行的设置,edquota命令会调用vi或vim编辑器来让用户修改要限制的项目,比如把tom用户的硬盘使用量限额从5M提升到8M来试一试吧: [root@linuxprobe ~]# edquota -u tom Disk quotas for user tom (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sda1 6144 3072 8192 1 3 6 [root@linuxprobe ~]# su - tom Last login: Mon Sep 7 16:43:12 CST 2017 on pts/0 [tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1 1+0 records in 1+0 records out 8388608 bytes (8.4 MB) copied, 0.0268044 s, 313 MB/s [tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=10M count=1 dd: error writing ‘/boot/tom’: Disk quota exceeded 1+0 records in 0+0 records out 8388608 bytes (8.4 MB) copied, 0.167529 s, 50.1 MB/s