Linux入门之磁盘管理(6)磁盘配额
admin
2023-06-06 17:01:26
0次

Linux入门之磁盘管理(6)磁盘配额

在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入数据大小的限制,linux中提供了一种磁盘配额的功能来实现。

 

初始化:

添加分区挂载选项:usrquota、grpquota

初始化数据库:quotacheck 命令

使用命令

开启或取消配额:quotaon、quotaoff

直接编译配额:edquota  [username]

 

案例说明:

创建配额数据库

#/home目录会存放不同用户的文件,大小会相互受影响,因此需要将/home目录变成分区,这里准备好一个创建好文件系统的分区。

[root@mzf ~]# blkid /dev/sda5
/dev/sda5: LABEL="myhome" UUID="97f71277-7b31-4bb6-ae0f-949cf8c18e6f" TYPE="ext4"

#对其进行挂载使用

[root@mzf ~]# mkdir /mnt/myhome
[root@mzf ~]# mount  /dev/sda5  /mnt/myhome/
[root@mzf ~]# df | grep 'myhome'
/dev/sda5             2004852    3096   1896584   1% /mnt/myhome

#先将/home下文件的文件进行迁移

[root@mzf ~]# ls /home/
hadoop  mzf  tom  u1  u2
[root@mzf ~]# mv /home/* /mnt/myhome/
[root@mzf ~]# ls /mnt/myhome/
hadoop  lost+found  mzf  tom  u1  u2

#然后将/dev/sda5再次挂载到/home目录下,并添加用户和组的磁盘配额功能

[root@mzf ~]# mount -L myhome -o usrquota,grpquota /home/
[root@mzf ~]# df | grep 'home'
/dev/sda5             2004852    3288   1896392   1% /mnt/myhome
/dev/sda5             2004852    3288   1896392   1% /home

#卸载掉在/mnt/myhome下的挂载点

[root@mzf ~]# umount /mnt/myhome/

#这里我们再次挂载指定的用户磁盘配额和组磁盘配合选项以及添加

[root@mzf ~]# mount | grep 'home'
/dev/sda5 on /home type ext4 (rw,usrquota,grpquota)

#当然也可以写入/etc/fstab文件进行重新挂载。如,加入内容:

[root@mzf home]# cat /etc/fstab | grep '/home'

Linux入门之磁盘管理(6)磁盘配额 

#然后检查分区并创建配额数据库文件

[root@mzf home]# quotacheck -cgu /dev/sda5
quotacheck: Cannot create new quotafile /home/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /home/aquota.group.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied

解析:这里提示没有权限,可能是linux内核中默认开启的selinux安全机制控制导致的,这里我们可以先将其关闭:

#查看当前setlinux是否开启

[root@mzf home]# getenforce
Enforcing#表示已经启用
[root@mzf home]# setenforce 0          #设置参数为0表示禁用
[root@mzf home]# getenforce          #再次查看已经显示为禁用
Permissive

#再次进行磁盘配额数据库文件创建

[root@mzf home]# quotacheck -cug /dev/sda5

#查看指定分区单独挂载点目录下是否生成了磁盘配额数据库文件

[root@mzf home]# ls /home  | grep '^aquota\.\<\(user\|group\)\>' 
aquota.group
aquota.user

说明:如果要开启磁盘配额,内核模块必须检查该挂载点中是否有磁盘配额数据库文件的存在,否则无法开启或设置成功。

 

启用磁盘配额:

#开启指定分区的磁盘配额

[root@mzf home]# quotaon /dev/sda5

#添加默认磁盘配额成员

[root@mzf home]# edquota -p mzf tom hadoop

#设置指定成员配额

[root@mzf home]# edquota hadoop

#进入vim编辑界面

Linux入门之磁盘管理(6)磁盘配额 

解析:其中第一行表示为哪个用户设置磁盘配额,下面分为多列,第一列为指定的文件系统,后面6列每3列为一组,blocks表示已经存放的文件大小,默认为k,indodes表示为已经创建了多少个文件,soft表示为软限制,存放大小超过soft指定将出现警报,hard为硬限制,如果达到此限制,将无法再次写入数据。


#按文件所占大小设置配额,软限制为5M,硬限制为10M

Linux入门之磁盘管理(6)磁盘配额 

#切换到设置配额的成员hadoop用户

[root@mzf home]# su - hadoop

#此目录已经用了64K,这里我们添加 5M数据

[hadoop@mzf ~]$ dd if=/dev/zero of=/home/hadoop/temp.log bs=5M  count=1
sda5: warning, user block quota exceeded.
1+0 records in
1+0 records out
5242880 bytes (5.2 MB) copied, 0.130323 s, 40.2 MB/s

注意:这里soft已经超过,开始了警报,显示用户块数据配额,但是如果使用echo进行一些小规模数据追加,磁盘配额是不会警报的:

#显示出文件多少个字节

[hadoop@mzf ~]$ ls -l /home/hadoop/temp.log 
-rw-rw-r--. 1 hadoop hadoop 5242912 Aug 17 23:51 /home/hadoop/temp.log

#追加字节

[hadoop@mzf ~]$ echo "***************" >> /home/hadoop/temp.log

#再次显示大小已经增加,但是磁盘配额没有警报

[hadoop@mzf ~]$ ls -l /home/hadoop/temp.log 
-rw-rw-r--. 1 hadoop hadoop 5242928 Aug 17 23:51 /home/hadoop/temp.log

解析:如果再用dd命令对temp.log文件写入5M是无法写入的,那么再写一个5M的新文件进行测试:

#再创建一个5M,那么应该已经达到了10M

[hadoop@mzf ~]$ dd if=/dev/zero of=/home/hadoop/temp2.log bs=5M  count=1
sda5: write failed, user block limit reached.
dd: writing `/home/hadoop/temp2.log': Disk quota exceeded
1+0 records in
0+0 records out
5185536 bytes (5.2 MB) copied, 0.00903 s, 574 MB/s

解析:这里已经显示了写入数据错误,数据块配额已经被使用完

#这时写入一个字节内容的文件都写入不了了。

[hadoop@mzf ~]$ echo "1" > file1
-bash: echo: write error: Disk quota exceeded

 

其它磁盘配额管理工具

quota   查看配额信息

[root@mzf home]# quota hadoop
Disk quotas for user hadoop (uid 502): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
   /dev/sda5   10240*  5120   10240  6days   17   0    0

解析:grace表示为宽限期,及文件大小到到soft指定大小6天后,soft将变成硬限制,将再也无法创建文件和写入数据了。

requota  #查看指定信息

warnquota  #检查警告

 

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...