『学了就忘』Linux文件系统管理 — 64、磁盘配额的配置步骤
上一篇文章已经做了磁盘配额实践的大概规划,下面我们就开始一步一步的来实践一下。
1、手工建立一个5GB的分区
手工建立一个5GB的分区/dev/sdb2
,挂载到/disk
目录下。
手工建立分区看之前使用fdisk命令进行手工分区文章可解决。
查看系统分区,可以看到/dev/sdb2
分区已经挂载。
查看/dev/sdb2
分区大小,约为5GB。
如下图所示:
2、建立需要做限制的三个用户
如下所示:
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2
[root@localhost ~]# passwd user3
3、在分区上开启磁盘配额功能
重新挂载/disk
分区,并加入用户和用户组的磁盘配额功能,执行下面命令:
[root@localhost ~]# mount -o(开启) remount(重新挂载),usrquota(用户配额),grpquota(组配额) /disk
查看系统分区,我们可以看到命令生效了,/dev/sdb2
分区已经增加了磁盘配额权限。
以上操作只是临时生效,要想永久生效,则需要修改/etc/fstab
文件,改成如下:
[root@localhost ~]# vi /etc/fstab
/dev/sdb1 /disk ext4 defaults,usrquota,grpquota 0 0
注意:
修改配置文件如果想要生效,必须重启系统,否则需要把分区重新挂载一遍。
执行命令:[root@localhost ~]# mount -o remount /disk
4、建立磁盘配额的配置文件
需执行如下命令:
[root@localhost ~]# quotacheck [选项] [分区名]
选项:
-a
:扫描/etc/mtab
文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面就不需要加入分区名了。-c
:不管原有的配置文件,重新扫描并建立新的配置文件。-u
:建立用户配额的配置文件,也就是生成aquota.user
文件。-g
:建立组配额的配置文件,会生成aquota.group
文件。-v
:显示扫描过程。-m
:强制以读写的方式扫描文件系统,和-M
类似。一般扫描根分区时使用。-f
:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用
常用选项:[root@localhost ~]# quotacheck -avug
提示:执行quotacheck
命令前,需要关闭SELinux,否则会报错。
执行命令:[root@localhost ~]# getenforce
getenforce
命令是查询当前系统下SELinux的状态,Enforcing
表示强制生效中。
- 关闭方式一(临时)
[root@localhost ~]# getenforce 0(关)/1(开)
- 关闭方式二(永久)
[root@localhost ~]# vim /etc/selinux/config
(修改配置文件)
把Enforcing
换成disabled
,就是永久生效了。但是永久生效需要重启系统。
使用临时关闭方式,再次查看SELinux状态
执行命令:[root@localhost ~]# getenforce
显示Permissive
,宽容的意思,就是我不会在管你,但是有危险操作会提醒你。
关闭SELinux,就可以执行quotacheck
命令了,因为不用组配额,
执行命令:[root@localhost ~]# quotacheck -avu
结果如下:
出现了很多内容,但是命令已经生效了,Scanning /dev/sdb2 [/disk] done
说明磁盘已扫描完成。其他内容说的是没有找到一些旧文件。
我们进入/disk
目录,如果看到aquota.user
文件,就说明用户配额配置文件已经建立。(同理aquota.group
代表组配额配置文件)
注意:如果需要给根分区开启配额功能,需要进行如下操作:
# 开启分区的配额功能
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,usrquota,grpquota 1 1
# 重新挂载分区
[root@localhost ~]# mount -o remount /
# 建立磁盘配额的配置文件的时候多加一个m选项
[root@localhost ~]# quotacheck -avum
说明:
如果我们自动扫描/分区建立配额配置文件时,因为/分区已经挂载成读写系统,而quotacheck
需要把分区先挂载成只读分区,然后建立配置文件,最后再挂载回来,所以不能直接在/分区建立配置文件。这时就需要使用-m
强制以读写方式扫描文件系统。
5、开始设置用户和组的配额限制
实现磁盘配的命令如下:
[root@localhost ~]# edquota [选项] [用户名或组名]
选项:
-u
用户名:设定用户配额。-g
组名:设定组配额。-t
:设定宽限时间。-p
:复制配额限制。如果已经设定好某个用户的配额限制,其他用户的配额限制如果和这个用户相同,那么可以直接复制配额限制,而不用都手工指定。
需求:我们给
user1
用户设定的配额限制是:磁盘空间软限制是40MB,硬限制是50MB;文件个数的软限制是8个,硬限制是11个(稍微小一点,一会测试时方便测试)。
执行命令:[root@localhost ~]# edquota -u user1
edquota
命令进入之后,就是标准的vim
操作方法,内容如下:
#磁盘配额是设定用户user1(UID是500)
Disk quotas for user user1(uid 500):
#分区名 已占用容量 软限制 硬限制 己占用文件数 软限制 硬限制
Filesystem blocks soft hard inodes soft hard
/dev/sdb2 0 0 0 0 0 0
说明:
- 进入
edquota
命令后的内容说明:针对user1
用户的磁盘配额,user1
的用户ID是500。user1
针对/dev/sdb2
分区进行磁盘配额,之后就是6项就是针对容量和文件数的配额设置。 - 特别注意:
blocks
和inodes
两个选项一定不能手动修改,这两项是系统检测出来user1
用户在/dev/sdb2
分区上所占用的空间和所占用的文件数。需要我们手动配置的是后两项soft
软限制和hard
硬限制。 - 提示:
[root@localhost ~]# edquota -u user1
命令直接写用户名就可以,后边不用接任何参数,不用你再指定哪个分区,因为哪些分区开启了磁盘配额,再上面/etc/fstab
文件中写的很清楚。还有我们进入到edquota
命令之后,开启磁盘配额的分区情况都写的很清楚,如上面内容。
开始进行配置,按照上面的需求配置如下:
Disk quotas for user user1(uid 500):
#分区名 已占用容量 软限制 硬限制 己占用文件数 软限制 硬限制
Filesystem blocks soft hard inodes soft hard
/dev/sdb2 0 40000 50000 0 8 11
# 注意:容量默认单位是KB。还有在修改文件的时候不用对齐,是七列就行。
退出方式和vim
编辑器一样。
6、启动和关闭配额
(1)启动配额
配额的配置完成,接下来只需要启动配额就大功告成了。
启动命令如下:
[root@localhost ~]# quotaon [选项] [分区名]
选项:
-a
:依据/etc/mtab
文件启动所有的配额分区。如果不加-a
,后面就一定要指定分区名。-u
:启动用户配额。-g
:启动组配额。-v
:显示启动过程的信息。
#启动/disk 分区的配额
[root@localhost ~]# quotaon -avu /disk/
/dev/sdb2[/disk]:user quotas turned on(意思是针对/dev/sdb2分区的用户配置已经开启)
# 如果有组,还会有一条提示:/dev/sdb2[/disk]:group quotas turned on
(2)关闭配额
命令如下:
[root@localhost ~]# quotaoff [选项] [分区名]
选项
-a
:依据/etc/mtab
文件,关闭所有的配额分区。如果不加-a
,后面就一定要指定分区名。-u
:关闭用户配额。-g
:关闭组配额。
例如:依据/etc/mtab
文件关闭配额分区。
执行命令:[root@localhost ~ ] # quotaoff -a
7、磁盘配额的查询
(1)quota
命令查询用户或用户组配额:
[root@localhost ~]# quota [选项] [用户名或组名]
选项:
-u
用户名:查询用户配额。-g
组名:查询组配额。-v
:显示详细信息。-s
:以习惯单位显示容量大小,如M,G。
执行命令:[root@localhost ~]# quota -uvs user1
结果如下图:
(2)repquota
命令查询分区的文件系统配额
[root@localhost ~]# repquota [选项] [分区名]
选项:
-a
:依据/etc/mtab
文件查询配额。如果不加-a选项,就一定要加分区名。-u
:查询用户配额。-g
:查询组配额。-v
:显示详细信息。-s
:以习惯单位显示容量大小。
执行命令:[root@localhost ~]# repquota -auvs
结果如下图:
可以看到上图,在哪一个分区上,所有用户的配额情况。
两个命令,习惯用哪个都行。
8、对配置的磁盘配额进行测试
测试的前提,用user1
用户,进入到/disk
目录进行测试,user1
用户对/disk
目录要有读写权限。
执行命令:建立test
文件,指定大小60MB。
[user1@localhost disk]$ dd if=/dev/zero of=/disk/test bs=1M count=60
命令说明:dd
命令是做磁盘对拷的。其实可以把dd
命令看成是cp
命令,dd
命令功能更多一些,比如可以指定复制文件的大小等。if
表示源文件,of
是目标文件,就是说要把if
的文件复制到of
的位置。bs
是一次复制1MB,执行60次。这就是上边命令的意思。
执行命令结果如下:
查看test
文件的大小,可以看到test
文件并没有超过50MB。
我们再来查看一下user1
用户的磁盘配额
可以看到用户的容量配额已经被占满了。
文件个数的测试就不记录了。
自己创建文件测试一下即可。
9、配额复制(扩展1)
user2
用户的配额值和user1
用户完全一样,我们就可以使用user1
用户作为模板进行复制。这样我们如果需要建立大量的配额值一致的用户时,就会非常方便,不用一个个手工建立了。
配额复制命令如下:
# 命令 -p 源用户 -u 目标用户
[root@localhost ~]# edquota -p user1 -u user2
再来查看一下user2
用户的磁盘配额,发现user2
用户的磁盘配额已经被改变,和user1
用户的一样了。
注意:
如果需要批量配置用户的磁盘配额,这种方式也不太好用,因为你需要先有一个用户配额模板,才可以批量配额给用户。但是这个用户模板需要手动创建,因为执行
edquota
命令,进入磁盘配额编辑的时候是和vim
操作一样的,不能通过命令执行的,这点需要注意一下。下面的非交互设定用户磁盘配额可以很好的解决上面问题。
10、非交互设定用户磁盘配额(扩展2)
命令格式如下:
[root@localhost ~]# setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名
执行命令如下:
# 建立用户
[root@localhost ~]#useradd user3
[root@localhost ~]#passwd user3
#设定用户在/disk 分区的容量软限制为40MB,硬限制50MB。文件个数软限制8个,硬限制10个。
[root@localhost ~]#setquota -u user3 40000 50000 8 10 /disk
再来查看一下user3
用户的磁盘配额,已经生效了。
如下图所示:
这个命令在写脚本批量设置时更加方便。当然写脚本时也可以先建立一个模板的用户,设定好磁盘配额,再进行配额复制,也是可以的。
来个小总结:配置磁盘配额的方式有三种
edquota
命令方式,基本方式。- 配额复制的方式。
- 非交互设定用户磁盘配额。
11、修改宽限时间
很简单的,我们要求把宽限时间改为8天。
修改命令:[root@localhost ~]# edquota -t
和vim
编辑器的操作模式一样进行修改,如下图所示: