手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

磁盘配额设置及使用

[日期:2016-07-19] 来源:Linux社区  作者:maweijun [字体: ]

当Linux根分区的磁盘空间耗尽时,Linux系统将无法再建立新的文件,从而出现服务程序崩溃、系统无法启动等故障现象,为了避免此问题,我么可以设置磁盘配额功能,对用户在指定文件系统中使用磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持我们的系统存储空间可以稳定使用。

一、磁盘配额术语介绍:
磁盘配额对象式硬盘分区,并且要求Linux内核支持磁盘配额技术。

磁盘配额只对一般用户有效,对管理员来说是没有任何作用效果的。
软限制:soft:最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。
硬限制:hard:不能被超过限制条件。
宽限时间:当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限                  以下,(默认是7天),当宽限时间到期,系统将自动清除超过的数据。

一、检查我们系统中是否已经安装了quota程序

[root@linuxidc.com ~]# rpm -q quota 
quota-4.01-11.el7.x86_64
[root@linuxidc.com ~]# rpm -ql quota 
/usr/bin/quota
/usr/bin/quotasync
/usr/sbin/convertquota
/usr/sbin/edquota
/usr/sbin/quot
/usr/sbin/quotacheck
/usr/sbin/quotaoff
/usr/sbin/quotaon
/usr/sbin/quotastats
/usr/sbin/repquota
/usr/sbin/rpc.rquotad
/usr/sbin/setquota
/usr/sbin/xqmstats
/usr/share/doc/quota-4.01
/usr/share/doc/quota-4.01/Changelog
/usr/share/man/man1/quota.1.gz
/usr/share/man/man1/quotasync.1.gz
/usr/share/man/man8/convertquota.8.gz
/usr/share/man/man8/edquota.8.gz
/usr/share/man/man8/quot.8.gz
/usr/share/man/man8/quotacheck.8.gz
/usr/share/man/man8/quotaoff.8.gz
/usr/share/man/man8/quotaon.8.gz
/usr/share/man/man8/quotastats.8.gz
/usr/share/man/man8/repquota.8.gz
/usr/share/man/man8/rpc.rquotad.8.gz
/usr/share/man/man8/setquota.8.gz
/usr/share/man/man8/xqmstats.8.gz

二、以支持配额功能的方式挂载文件系统
[root@linuxidc.com ~]# mount /dev/sdd1 /quotadir/###将我的分区挂载到了一个目录下方便使用
[root@linuxidc.com ~]# chmod 777 /quotadir/###改变目录的权限方便后面我们写入测试
[root@linuxidc.com ~]# 
[root@linuxidc.com ~]# mount -o remount,usrquota,grpquota /dev/sdd1 /quotadir/
##这是临时的挂载,我们也可以使用开机自动挂载方式:
 
[root@linuxidc.com ~]# vim /etc/fstab 
/dev/sdd1                      /quotadir      ext4    defaults,usrquota,grpquota 0 0
 
[root@linuxidc.com ~]# mount -a 
[root@linuxidc.com ~]# mount 
 
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700)
/dev/mapper/vg0-lv0 on /tmp/backup type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdd1 on /quotadir type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)##此处可以看到我们已经挂载成功了

三、创建磁盘配额的配置文件
quotacheck:
    -v:显示扫描过程
    -u:针对扫描用户的情况建立aquota.user

    -g:针对扫描组的情况建立aquota.group

    -c:创建新的配额文件

    -a:扫描所有分区

 [root@linuxidc.com ~]# quotacheck -ugc /dev/sdd1 
[root@linuxidc.com ~]# ls -l /quotadir/
total 32
-rw-------. 1 root root  6144 Jun  4 18:25 aquota.group
-rw-------. 1 root root  6144 Jun  4 18:25 aquota.user
drwx------. 2 root root 16384 Jun  4 18:11 lost+found
##看到我们分区所挂载的目录自动会生成两个配置文件即可

四、实现磁盘配合限制:
edquota
        -u 用户 :指定某用设置配额
        -t:改变宽限时间

在这我需要创建一个普通的用户来做测试使用
[ root@linuxidc.com ~]# useradd ma
[root@linuxidc.com ~]# passwd ma 
Changing password for user ma.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

12345 [root@linuxidc.com ~]# edquota -u ma###设置用户ma的配额
Disk quotas for user ma (uid 1001):
  Filesystem                  blocks      soft      hard    inodes    soft    hard
  /dev/sdd1                        0      10      20          0          3      5
~

五、启用配额功能
[root@linuxidc.com ~]# quotaon /quotadir/
好的,那我么来测试下看看
 
[ma@linuxidc.com ~]$ dd if=/dev/zero of=/quotadir/test1  bs=1k count=8
8+0 records in
8+0 records out
8192 bytes (8.2 kB) copied, 0.000230902 s, 35.5 MB/s
#写入8k的数据时候正常被写入了,没有任何报错
 
 
[ma@linuxidc.com ~]$ dd if=/dev/zero of=/quotadir/test1  bs=1k count=10
sdd1: warning, user block quota exceeded.###写入10k的时候写入了,但是给我们提示警告
10+0 records in
10+0 records out
10240 bytes (10 kB) copied, 0.0009096 s, 11.3 MB/s
 
[ma@linuxidc.com quotadir]$ ll -h /quotadir/
total 44K
-rw-------. 1 root root 7.0K Jun  4 18:38 aquota.group
-rw-------. 1 root root 7.0K Jun  4 18:38 aquota.user
drwx------. 2 root root  16K Jun  4 18:11 lost+found
-rw-rw-r--. 1 ma  ma    10K Jun  4 18:47 test1##此处可以看到我们test1文件的大小为10k
 
 
###我们在写入了10k的数据进去,看看会有什么样变化呢?
[ma@linuxidc.com quotadir]$ dd if=/dev/zero of=/quotadir/test2  bs=1k count=10
sdd1: write failed, user block limit reached.
dd: error writing ‘/quotadir/test2’: Disk quota exceeded
9+0 records in
8+0 records out#只写入了8k
8192 bytes (8.2 kB) copied, 0.000170428 s, 48.1 MB/s
 
#接下来我们测试下我们写入文件个数:
[ma@linuxidc.com quotadir]$ mkdir a1
mkdir: cannot create directory ‘a1’: Disk quota exceeded##报错了创建失败了

六、查看下我们用户具体配额情况:

[ma@linuxidc.com root]$ quota -ugv 
Disk quotas for user ma (uid 1001): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
      /dev/sdd1      20*    10      20  6days      2      3      5       
Disk quotas for group ma (gid 1001): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
      /dev/sdd1      20      0      0              2      0      0

七、关闭磁盘配额
[root@linuxidc.com ~]# quotaoff /quotadir/###关闭单个磁盘的磁盘配额
[root@linuxidc.com ~]# quotaoff -a ###关闭系统所有已经开启的配额
[root@linuxidc.com ~]# 
[root@linuxidc.com ~]# rm -rf /quotadir/aquota.*##如果不在使用可以将配置文件也删除了
[root@linuxidc.com ~]# 然后删除/etc/fstab中的自动挂载即可

 

linux
相关资讯       磁盘配额  磁盘配额设置 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款