Linux(Centos)磁盘配额

关于磁盘配额
磁盘配额:限制某个用户能够使用的磁盘空间,例如linux中的某个用户,不断的上传垃圾文件,占用磁盘空间
磁盘配额针对对一般身份用户和用户组有效,对root权限用户无效
centos6只能作用在分区上,centos7不仅能作用在分区上,还能作用在目录上
磁盘配额的记录文件保存在开启磁盘配额分区的根目录下面,它们是aquota.user和aquota.group

软限制soft(最低限制):超过该限制容量,会出现警告,超过的部分会保存到宽限时间到期
硬限制hard(最高限制):不能被超越的限制,超过及报错
宽限时间(默认7天):超过soft但还没达到hard,到期自动清除超出soft的数据。所以尽量在宽限期内将数据优化到小于soft
查看内核是否支持磁盘配额
[root@www boot]# grep CONFIG_QUOTA /boot/config-2.6.32-431.el6.x86_64 
[root@mail ~]# grep CONFIG_QUOTA /boot/config-3.10.0-514.el7.x86_64
CONFIG_QUOTA=y        
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y

###########################完美的分割线#####################

Xfs文件系统
#针对用户

[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jan  4 16:42:41 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=2bcfa690-4957-4c27-bdaf-f5146a1c01c4 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
/dev/sdb1       /local  xfs     defaults,usrquota,grpquota,prjquota     0 0

[root@localhost ~]# xfs_quota -x -c 'limit bsoft=1m bhard=2m jack' /local


[jack@localhost local]$ dd if=/dev/zero of=/local/123 bs=1024
dd: 写入"/local/123" 出错: 超出磁盘限额
记录了2049+0 的读入
记录了2048+0 的写出
2097152字节(2.1 MB)已复制,1.41298 秒,1.5 MB/秒

用户mike没有限制
[mike@localhost local]$ dd if=/dev/zero of=/local/456 bs=1024
^C记录了8373+0 的读入
记录了8373+0 的写出
8573952字节(8.6 MB)已复制,5.7863 秒,1.5 MB/秒

# 针对目录
[root@localhost local]# mkdir testdir

[root@localhost local]# echo 11:/local/testdir >> /etc/projects     #将一个项目ID(自定义)和被限制的目录绑定并放到/etc/projects 配置文件中
[root@localhost local]# echo baby:11 >> /etc/projid                 #自定义项目名称(即baby)并与项目ID绑定并放到/etc/projid配置文件中
[root@localhost local]# xfs_quota -x -c 'project -s baby' /local/   #初始化
Setting up project baby (path /local/testdir)...
Processed 1 (/etc/projects and cmdline) paths for project baby with recursion depth infinite (-1).


[root@localhost local]# xfs_quota -x -c 'limit -p bsoft=1m bhard=2m baby' /local/  #配置限额
[root@localhost testdir]# xfs_quota -x -c 'report /local/testdir'                  #打印当前所有的配额报告

Project quota on /local (/dev/sdb1)
                               Blocks
Project ID       Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
#0              27756          0          0     00 [--------]
baby                0       1024       2048     00 [--------]


[root@localhost testdir]# dd if=/dev/zero of=/local/testdir/999 bs=1024            #测试
dd: 写入"/local/testdir/999" 出错: 设备上没有空间
记录了2049+0 的读入
记录了2048+0 的写出
2097152字节(2.1 MB)已复制,0.0367911 秒,57.0 MB/秒

目录aadir没有限制
[root@localhost aadir]# dd if=/dev/zero of=/local/aadir/888 bs=1024
^C记录了433661+0 的读入
记录了433661+0 的写出
444068864字节(444 MB)已复制,4.0149 秒,111 MB/秒


###########################完美的分割线#####################
Ext4 / 根分区(如果是为如/dev/sdb1分区这样的单独分区配置磁盘配额步骤相同)

#<1> 安装磁盘配额工具quota
[root@mail ~]# yum -y install quota

#<2> 新建测试账号
[root@mail ~]# useradd cipanpeie
[root@mail ~]# passwd cipanpeie
更改用户 cipanpeie 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。


# <3>/etc/fstab挂载文件添加支持quota的选项
[root@mail ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 15 01:21:06 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults,usrquota,grpquota        1 1
UUID=195f01a8-8d60-4094-9937-79499f1c99c5 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/cdrom      /mnt    iso9660 defaults 0 0 

[root@localhost /]# useradd jack
[root@localhost /]# passwd jack
更改用户 jack 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。


[root@localhost /]# xfs_quota -x -c 'limit bsoft=1m bhard=2m jack' /local
[root@localhost /]# chmod -R 777 /local/

# <4> 重新挂载分区
[root@localhost ~]# mount -o remount /
[root@localhost ~]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw,usrquota,grpquota)

# <5> 建立quota的数据库(即磁盘配额的配置文件)
[root@localhost ~]# quotacheck -vug
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/mapper/VolGroup-lv_root [/] done
quotacheck: Cannot stat old user quota file //aquota.user: 没有那个文件或目录. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //aquota.group: 没有那个文件或目录. Usage will not be substracted.
quotacheck: Cannot stat old user quota file //aquota.user: 没有那个文件或目录. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //aquota.group: 没有那个文件或目录. Usage will not be substracted.
quotacheck: Checked 3332 directories and 23912 files
quotacheck: Old file not found.
quotacheck: Old file not found.


#-v 显示扫描过程
#-u 建立quota.user配置文件
#-g 建立quota.group配置文件

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

# <6> 配置磁盘配额
# 分给用户 cipanpeie总共1M的磁盘空间
[root@localhost ~]# edquota -u cipanpeie
Disk quotas for user cipanpeie (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/VolGroup-lv_root         16          0       1024          5        0        0

#Filesystem 磁盘配额作用的分区 
#blocks 当前已经使用的大小
#soft 软限制; 
#hard硬限制。软硬限制默认单位都是KB
#inodes 当前已经使用的inode大小,不用修改
#后面的两个的soft、hard分别表示分区中这个用户可以创建的文件数目软硬限制


[root@localhost ~]# quota -uvs cipanpeie
Disk quotas for user cipanpeie (uid 500): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup-lv_root
                     16       0    1024               5       0       0    
					 
 # <7>开启磁盘配额
[root@localhost ~]# quotaon /
/dev/mapper/VolGroup-lv_root [/]: group quotas turned on
/dev/mapper/VolGroup-lv_root [/]: user quotas turned on

# <8> 测试:
[cipanpeie@localhost /]$ dd if=/dev/zero of=/home/cipanpeie/123 bs=1024
dm-0: write failed, user block limit reached.
dd: 正在写入"/home/cipanpeie/123": 超出磁盘限额
记录了1009+0 的读入
记录了1008+0 的写出
1032192字节(1.0 MB)已复制,0.0563879 秒,18.3 MB/秒

quotaoff 关闭磁盘配额
-a 开启或关闭所有

猜你喜欢

转载自blog.csdn.net/cql08e/article/details/81410234