概述:
我们都知道linux是多用户的操作系统,而用户使用操作系统是为了更好的使用资源,比如磁盘,网络,但是一台主机所拥有的资源是有限的,不能让某些用户自己独占掉,这时操作系统就需要出面做一些规定了,对于磁盘来说,操作系统就有一个叫做磁盘配额的东西来规定用户对磁盘资源的占有情况。
前面讲了这么多磁盘相关的操作,但是一直没提到一个问题,就是如果我们的磁盘分区好了,格式化好了,也挂载,到一个目录上面了,但是突然有一天,我发现这个挂载的目录不够我使用了,我扩大怎么办,这就是逻辑卷(LVM)就要登场了。
1.磁盘配额
磁盘配额到底是对用户限制的还是对文件系统限制的呢?如果是EXT系列的文件系统那么这个quota只能针对整个文件系统来设计,但如果是XFS文件系统,那么quota就可以支持对很多东西进行限制了,比如针对用户,用户组,甚至是目录。
下面我们先来简单的对一个student用户限制配额。
再做之前我们首先创建好实验环境
[root@station ~]# mount | grep /mnt
/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
我们想在/mnt目录下做这个配额实验,但首先要看下这个目录被挂载的时候支持quota吗,根据上面结果发现并不支持。
[root@station ~]# umount /mnt/
[root@station ~]# mount -o usrquota /dev/vdb1 /mnt/
[root@station ~]# mount | grep /mnt/
[root@station ~]# mount | grep /mnt
/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)
我选择重新挂载,并且加上-o参数添加上挂载参数usrquota,有的小伙伴可能感觉我做的有点繁琐了,是不是可以直接一条命令解决如下:
[root@station ~]# mount | grep /mnt
/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@station ~]# mount -o remount,usrquota /dev/vdb1 /mnt/
[root@station ~]# mount | grep /mnt
/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
我一开始也是使用的-o加上remount参数,在加需要添加的usrquota,但是发现我需要的参数并没有添加上,才出此下策,至于解决方法,会在我查明原因后第一时间发布。
<span style="font-size:18px;">[root@station /]# quotaon -uv /dev/vdb1
quotaon: Enforcing user quota already on /dev/vdb1
</span>
现在启用这个
盘的quota功能
[root@station ~]# edquota -u student
对student设置权限
Disk quotas for user student (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 256 0 256 1 0 0
[student@station ~]$ dd if=/dev/zero of=/mnt/a bs=1K count=300
<span style="color:#ff0000;">dd: error writing ‘/mnt/a’: Disk quota exceeded</span>
257+0 records in
256+0 records out
262144 bytes (262 kB) copied, 0.000966842 s, 271 MB/s
向他复制300block的数据发现超出额度了。提出了警告
[student@station ~]$ du /mnt/a
256 /mnt/a
发现只赋值过去了256K的数据
对xfs的磁盘限额还有一个更专业的命令就是xfs_quota。