linux磁盘配置

               作用:限制磁盘资源的使用

 应用场景:
   1.网络储空间有限的 网盘
   2.邮件服务器
   3.公司的共享服务器
限制对象:
1.普通用户 2.用户组

两个限制方面
inode  -限制用户创建的文件个数
block--- 限制用创建文件的的磁盘空间
    ----soft软限制:超过软限制只警告,不影响使用
    ----hard硬限制:是不可逾越的限制
grance time 时间限制:宽限时间,当超越软限制则,限制时间则自动倒计时,默认为七天,逾期自动转换为硬限制
 

查看设置配额的条件

grep -i quota /boot/config-3.10.0-693.el7.x86_64 
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y     #默认支持
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y

xfs 文件系统设置磁盘配额

mkfs.xfs /dev/sdb1

创建磁盘配额的语法:

xfs_quota -x -c  "limit -u/g  bsoft=N bhard=N username/prgname"  quota path

案例:

1.对用户设置磁盘限额

# 前提是文件系统支持磁盘配额的属性uquota gquota

# 将文件系统挂载到系统中的目录
 mount /dev/sdb1  /data
# 查看文件系统是否支持磁盘配额

mount |grep data
umount /data

# 让文件系统支持磁盘配额

mount -o uquo,gquota /dev/sdb1 /data
mount |grep /data
/dev/sdc1 on /data type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
###设置分区开机自挂载
vim /etc/fstab
/dev/sdb1 /data xfs defaults,uquota,gquota 0 0
###创建用户

useradd quoat1

#查看配额信息
 xfs_quotaq -x -c 'report -ubih'

# xfs_quota 选项
-x 专家模式 只有使用了-x后面才可以使用-c的指令
-c 后接指令
report 列出目前的quota项目
-i inode
-b block
-h 人性化显示
-u 只显示用户的配额
-g 只显示用户组的配额
limit 设置配额
state 显示状态 
timer 设置宽限时间


案例:针对用户做限额
# 限制quota1用户只能在/data目录内创建10个文件
 xfs_quota -x -c 'limit -u isoft=7 ihard=10 quota1 '  /data

给目录设置权限然后进行测试
chmod 777 /data
chmod  o+t /data
su -quota1
cd /data

创建文件,如果目录文件超过10个文件则会弹出超出限额提醒,仍会创建,但一部分文件不能创建


二.针对组做限额

groupadd ops
useradd -g ops quota1
 usermod -g ops quota2
xfs_guota -x -c 'limit -g  isoft=20 ihard=40 osp ' /data
xfs_quota -x -c "report  -gihn " /data
su -quota1
cd /data
创建文件,如果目录文件超过10个文件则会弹出超出限额提醒,仍会创建,但一部分文件不能创建
touch: 无法创建"test11": 超出磁盘限额
touch: 无法创建"test12": 超出磁盘限额
touch: 无法创建"test13": 超出磁盘限额
touch: 无法创建"test14": 超出磁盘限额
touch: 无法创建"test15": 超出磁盘限额
touch: 无法创建"test16": 超出磁盘限额
touch: 无法创建"test17": 超出磁盘限额
touch: 无法创建"test18": 超出磁盘限额
touch: 无法创建"test19": 超出磁盘限额
touch: 无法创建"test20": 超出磁盘限额

 

三 对目录设置磁盘限额

umount /data
mount -o usrquota,prjquota grpquota /dev/sdb1 /data   ###添加挂载属性
mount |grep /data

# 对项目配置配额
 xfs_quota -x -c "limit bsoft=100M bhard=200M -p aa" /data/
 xfs_quota -x -c "report -pbih" /data

echo 1:/data >> /etc/projects   # 指定项目ID"1"与目录"/data"对应在/etc/projects
 echo aa:1 >> /etc/projid        # 指定项目名称"aa"与项目ID"1"对应在/etc/projid
初始化项目
xfs_quota -x -c "project -s aa"
# 对项目配置配额
xfs_quota -x -c "limit bsoft=100M bhard=200M -p aa" /data

xfs_quota -x -c "report -pbih" /data/

cd /data
dd if=/dev/zero of=/data/big1 bs=1M count=300
超出限额则会提示没有空间,但仍会创建


ext4 文件系统(yum -y install quota(需要单独下载)
磁盘限额只对普通用户生效(root为特殊用户,再怎么做限制也不会生效)
 

查看是否开启quota
mount |grep /data

开启对/dev/sdb1的磁盘配额


临时开启
 mount -o remount,usrquota,grpquota /dev/sdb1 /data
永久修改
vim /etc/fstab
/dev/sdb1       /data           ext4    defaults,usrquota,grpquota 0 0

查看
mount |grep /dev/sdb1


生产磁盘配额数据库
  quotacheck -acgu

-a 所有分区(已支持配额)
-c 创建
-u 用户
-g 组

启动磁盘配额数据库
quota on -avgu
编辑用户的磁盘配额   与xfs不同的是ext4只能在指定为文件中修改限额
edquota quota1

 Disk quotas for user quota1 (uid 1005):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0      10M        20M        0        0        0

 

  注意:这里设置的限制大小单位要大写,可以写M,G,K

quota -uvs uguota1 查看指定用户磁盘配额
dd if=/dev/zero of=/data/test bs=1M count=15
再创建一个
可以看到是出现了失败,说明用户的磁盘配置是成功的

 

针对组进行配额

groupadd group1
useradd -g group1 user2
usermod -g group1 user1
从用户 user1 复制磁盘配额设置并应用到用户 user2 上
edquota -p user1 user2

针对group1组进行配额管理
edquota -g group1

quota -gvs group1

Disk quotas for group group1 (gid 1001): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1      0K    100M    200M               0       0       0  
然后用组用户测试

登录user1和user2进行测试

su -user1

cd /data

dd if=/dev/zero of=/data/test bs=1M count=150

data: warning, group block quota exceeded.
记录了150+0 的读入
记录了150+0 的写出
157286400字节(157 MB)已复制,0.507608 秒,310 MB/秒

su - user2

dd if=/dev/zero of=/data/test2 bs=1M count=100

data: write failed, group block limit reached.
dd: 写入"/data/test2" 出错: 超出磁盘限额
记录了51+0 的读入
记录了50+0 的写出
52428800字节(52 MB)已复制,0.435193 秒,120 MB/秒

以上我们不难看出,用户组的用户创建大小文件,当超过硬限制,则会弹出出错信息

针对新建文件数进行限制

针对user1用户的新建文件数进行配额限制

quota -uvs user1

Disk quotas for user user1 (uid 1000): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1    150M      0K      0K               1      10      20    

登录user1测试

touch file{1..12}

touch file1{1..25}

data: warning, user file quota exceeded.
data: write failed, user file limit reached.
touch: 无法创建"file120": 超出磁盘限额
touch: 无法创建"file121": 超出磁盘限额
touch: 无法创建"file122": 超出磁盘限额
touch: 无法创建"file123": 超出磁盘限额
touch: 无法创建"file124": 超出磁盘限额
touch: 无法创建"file125": 超出磁盘限额

以上我们不难看出超出指定数量仍会弹出限额信息

修改宽限时间,默认是7天(当超出硬限额之后,有七天喘息时间,超过七天限额默认为硬限制,期间只能做删除,不能添加)

edquota -t

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sdb1                     5days                  7hours

touch file{1..12}

data: warning, user file quota exceeded.

quota

Disk quotas for user user1 (uid 1000): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdc1       4       0       0              13*     10      20   07:00

以上我们创建12个文件后,有提示告警,并且限制时间现在变成了7个小时

quota 常用命令

1)    临时禁用quota
xfs_quota -x -c "disable -up" /data
xfs_quota -x -c "state" /data    检查quota状态

2)    临时启用quota
xfs_quota -x -c "enable -up" /data

3)    完全关闭quota
xfs_quota -x -c "off -up" /data

4)    删除quota限制(无法恢复)
xfs_quota -x -c "off -up" /data
xfs_quota -x -c "remove -p" /data
xfs_quota -x -c "limit -u isoft=0 ihard=0 quota1" /data   将配额值设为0(无配额限制)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值