磁盘配额--对磁盘容量文件数量进行限制

quota配额

1、磁盘配额的概念

磁盘配额
限制用户对磁盘的使用空间。
软限制:可以限制使用空间和文件数量,允许在规定时间内超出限制。
硬限制:可以限制使用空间和文件数量,不允许超出限制。
配置步骤:
第一步:挂载分区时启用配额选项
(1)vim /etc/fstab
/dev/sdb1 /mnt/sdb1 ext4 defaults, usrquota, grpquota 0 0
(2) mount -o remount /mnt/ sdb1
(3)生成配额文件: 
setenforce 0
quotacheck - cvug / mnt/sdb1
(4)编辑配额项:
用户限制edquota -u stul
组(基本组)限制:quota  -g d1z
filesystem  blocks  soft   hard   inodes  soft   hard
挂载点       已使用空间软件限制   硬限制   已有文件个数软件限制    硬限制
(5)激活磁盘配额:
quotaon -ugv /mnt/ sdb1
(6)关闭磁盘配额: quotaoff /mnt/ sdb1

quota 磁盘配额功能只在指定的文件系统(分区)内有效,未设置配额的文件系统不受限制。

quota :限制用户账号、组账号的磁盘使用空间,其他用户或组不受影响。

(1)磁盘配额的限制方面:

1-磁盘容量:

限制用户能够使用的磁盘数据块(block)大小,也就是限制磁盘空间大小,默认单位为 KB。

2-文件数量:

限制用户能够拥有的文件个数。

(2)磁盘配额的限制方法:

1-软限制:

指设定一个软性的配额数值(如 500MB 磁盘空间、200 个文件),在固定的宽限期(默认为 7 天)内允许暂时超过这个限制,但系统会给出警告信息。

2-硬限制:

指设定一个硬性的配额数值(如 1GB 磁盘空间、500 个文件),而且绝对禁止用户超过该限值

硬限制的配额值应大于相应的软限制值,否则软限制值将失效。

正确举例:
软限制为:2G 
硬限制为:3G 

2、设置磁盘配额

下面以硬盘分区“/dev/sdb1”为例,先将其挂载到“/data”目录下,然后在文件系统中实现磁盘配额:

(0)分区,挂载到/data

分区:
fdisk /dev/sdb
    n
    p
    1
    默认
    默认
    w保存
格式化
mkfs -t ext4 /dev/sdb1
挂载
mount /dev/sdb1 /mnt/data

(1)启用磁盘配额 --/etc/fstab

1–首先要通过修改配置文件“/etc/fstab”的方式启用 quota 磁盘配额。
[root@localhost var]# vim /etc/fstab 

/dev/sdb1   /data ext4  defaults,usrquota,grpquota 0 0 
2–将该文件系统重新挂载
[root@localhost ~]# mount -o remount /data 
3–执行 mount 命令查看已经挂载的文件系统,检查是否已经启用了 usrquota 和 grpquota 功能
[root@localhost ~]# mount | grep sdb1 

结果:/dev/sdb1 on /data type ext4 (rw,usrquota,grpquota) 

(2)生成配额文件

保护机制selinux

getenforce:查看安全机制是否开启
Eforcing 表值为1: 开启状态
将安全机制设置为0
 setenforce 0

quotacheck 命令可以对文件系统进行磁盘配额检测,发现哪些文件系统启用了

磁盘配额功能,并在这些文件系统中生成配额文件 aquota.user 和 aquota.group。

[root@localhost ~]# quotacheck -cvug /data 
cd /mnt/data
里面会有配额文件aquota.user aquota.group

相关选项的作用:

-c,创建配额文件。 
-v,显示详细信息。 
-u,检查用户配额信息,创建 aquota.user 文件。 
-g,检查组配额信息,创建 aquota.group 文件。

将 SELinux 设为许可模式

[root@localhost ~]# setenforce 0 

再次执行 quotacheck 命令

[root@localhost ~]# quotacheck -cvug /data 

查看生成的配额文件

[root@localhost ~]# ls /data 
aquota.group aquota.user lost+found 

(3)编辑用户和组配额项-edquota

1-编辑用户的配额设置 -u

使用 edquota 命令结合“-u”、“-g”选项可用于编辑用户或组的配额设置。

创建 financial 组,创建用户 jerry,将 financial 指定为 jerry 的基本组。

设置用户 jerry 的磁盘配额

[root@localhost ~]# edquota -u jerry 
Filesystem   blocks   soft     hard      inodes        soft         hard
设备点/挂载点 已使用容量 软限制容量 硬限制容量 已使用文件个数 软限制文件个数 硬限制文件个数
  • Filesystem:第1列表示本行配置对应的文件系统(分区),即配额的作用范围。
  • blocks:第2列表示当前已使用的磁盘容量,默认单位为 KB。该值由 edquota 程序自动计算生成。
  • soft:第 3 列中的 soft 对应为磁盘容量的软限制数值,默认单位为 KB;
  • hard:第 4 列中的 hard 对应为磁盘容量的硬限制数值,默认单位为 KB;必须大于软限制
  • inodes:第5列表示当前已拥有的文件数量。该值由 edquota 程序自动计算生成。
  • soft:第 6 列中的 soft 对应为文件数量的软限制数值位为个。
  • hard: 第 7 列中的 hard 对应为文件数量的硬限制数值,默认单位为个;
2-编辑组的配额设置 —(基本组)-g
[root@localhost ~]# edquota -g financial 

注:配额设置仅对基本组生效。如用户 jerry 所属的基本组是“financial”,所属的附加组是“technology”, 那么只有针对“financial”组设置的配额才对 jerry 有效,而针对“technology”组设置的配额则对 jerry 没有限制。

(4)激活磁盘配额

’激活“/data”文件系统的用户、组配额

[root@localhost ~]# quotaon -ugv /data  

/dev/sdb1 [/data]: group quotas turned on 

/dev/sdb1 [/data]: user quotas turned on 

相关选项的作用:

-u,激活用户磁盘配额。 
-g,激活组磁盘配额。 
-v,显示详细信息。 

(5)验证并查看磁盘配额

验证磁盘配额功能:

下面使用受配额限制的用户帐号(jerry)登录 Linux 系统,并向应用了配额的文 件系统进行复制文件等写操作,测试所设置磁盘配额项是否有效。为了方便测试,将 用户 jery 的基本组设为 financial,对用户和组的磁盘配额功能一并进行测试。

用 dd 命令生成指定大小的测试文件

从设备文件/dev/zero 中复制数据到/home/jerry/test 文件,读取 210 个大小为 1MB的数据块。

[root@localhost ~]# dd if=/dev/zero of=/mnt/data/xx bs=1KB count=120 

记录了 210+0 的读入 
记录了 210+0 的写出 
220200960 字节(220 MB)已复制,13.3504 秒,16.5 MB/
[root@localhost ~]# ll -h /home/jerry 

总用量 211M 
-rw-r--r--. 1 root root 210M 116 10:49 test 

开放 data/的写入权限

[root@localhost ~]#chmod 777 /data 

切换到 jerry 用户的身份进行测试,磁盘配额功能验证成功

查看用户(quota -u user)或分区(repquota /data)的配额使用情况

使用 quota 命令结合“-u”、“-g”选项分别查看指定用户和组的配额使用情况。 
quota -u student
quota -g student

执行 repquota /data 查看/data 文件系统的配额使用情况报告 
repqupta /data

(6)关闭磁盘配额

quotaoff -vug 

(7)磁盘配额小结

​ 通过 quota 磁盘配额可以方便地对单个用户或用户组的可用磁盘空间进行限制,使磁盘管理工作具有 更大的灵活性。

​ 在生产环境中具体应用时还应注意,quota 是以每一个使用者,每一个文件系统为基础的,它不能跨

文件系统对用户做出限制,如果使用者可能在超过一个以上的系统中建立文件,那么必须在每一个文 件系统上分别设定 quota 配额。

另外,由于 root 用户在 Linux 环境中具有至高无上的权限,所以无法对 root 用户设置配额。

例-磁盘配置

1)永久挂载文件系统并启用磁盘配额

vim /etc/fstab
	/dev/md0 /mnt/md0 ext4 defaults,usrquota,grpquota 0 0 #usr/grpquota表用户/组配额
mount -a

2)生成配额文件

getenforce  查看安全系统是否开启
	Enforcoing  表示启用状态 值为1 (保护)
setenforce  0.SElinux设为许可模式
	permissive  表示关闭状态 值为0
	
quotacheck -cvug /mnt/md0 生成配置文件

3)编辑配额设置

edquota -u  stu1

4)激活配额

quotaon -ugv /mnt/md0
将stu1提权  chmod 777 stu1 
切换到stu1用户
su stu1

5)验证并查看配额

dd if=/dev/zero of=/mnt/md0/aa bs=1KB count=120

例2-FTP卷将提供给公司内部员工上传文件使用,目前公司有5个员工,这个5个员工都属于groups01用户组,请通过磁盘配额限制每个员工使用的磁盘空间为500MB,不能超过500MB

//1)新建用户和组:
useradd yg1
useradd yg2
useradd yg3
useradd yg4
useradd yg5
groupadd groups01


//2)将用户加入groups01组:
[ root@localhost home] # gpasswd -a yg1 groups01 
正在将用户Vyg1”加入到groups01”组中
[ root@locathost home] # gpasswd -a yg2 groups01 
正在将用户yg2"加入到groups01”组中
[ root@locathost home] # gpasswd -a yg3 groups01
正在将用户yg3”加入到groups01”组中
[ root@locathost home] # gpasswd -a yg4 groups01 
正在将用户yg4”加入到groups01”组中
[ root@locathost home] # gpasswd -a yg5 groups01 
正在将用户Vyg5”加入到groups01”组中

//3)新建分区并格式化并挂载
fdisk /dev/sdb  n p 1   //新建分区
mkfs -t ext4 /dev/sdb1  //格式化分区
mount /dev/sdb1 /mnt/data  //挂载到mnt/data

//5)启动配额
//5.1)修改配置文件“/etc/fstab”的方式启用 quota 磁盘配额
vim /etc/fstab
/dev/sdb1   /data ext4  defaults,usrquota,grpquota 0 0 
:wq   //保存并退出


//5.2)将文件系统重新挂载,查看是否成功
mount -o remount /mnt/data
mount |grep sdb1
//5.3)关闭安全机制——已开启
setenforce 0

//5.4)设置配额
quotacheck -cvug /mnt/data


//5.5)查看配额
ls data
//结果 aquota.group aquota.user lost+found

//6)编辑用户和组帐号的配额设置不超过500M
[root@locathost mnt] # edquota - u yg1
[root@locathost mnt] # edquota - u yg2
[root@locathost mnt] # edquota - u yg3
[root@locathost mnt] # edquota - u yg4
[root@locathost mnt] # edquota - u yg5

//结果
[root@locathost mnt] # ls data
aquota.group aquota.use lost+found


//7)激活配额
quotaon -ugv /mnt/data
//结果:
// /dev/sdb1 [/mnt/data] :group quotas turned on
// /dev/sdb1 [/mnt/data] :user quotas turned on

//8)验证配额
//切换到用户yg1:
su yg1
//创建一个文件 :
touch 1.txt

//尝试写入超过大小的文件——报错
dd if=/dev/zero of=/mnt/data/1.txt bs=600MB count=1

//9)关闭磁盘配额
quotaoff -vug 

你可能感兴趣的:(Linux)