磁盘配额
注意事项:确定好你的磁盘设备路径(/dev/sdx)。
xfs_quota
xfs_quota 参数:
xfs_quota [系统] <文件系统>
-x, --expert 以专家模式运行,允许执行所有命令。
-c, --cmd=命令 执行指定的配额命令。
-p, --print=命令 执行指定的打印命令。
-d, --no-dquot 不显示配额信息。
-l, --human-readable 以人类可读的格式显示数值。
-v, --verbose 显示详细信息。
-f, --foreground 在前台运行,不作为守护进程。
-u, --user=用户名 指定要操作的用户。
-g, --group=组名 指定要操作的组。
-i, --interval=秒数 设置报告间隔时间。
-t, --timeout=秒数 设置命令执行的超时时间。
-n, --noheadings 不显示标题行。
-j, --json 以 JSON 格式输出。
-S, --state=文件 从指定文件加载配额状态。
-V, --version 显示版本信息并退出。
<文件系统> 指定要操作的 XFS 文件系统。
xfs_quota 示例:
xfs_quota -x -c 'limit -u bsoft=100m bhard=200m user1' /mnt/xfs
# 设置用户 user1 的磁盘空间软限制为 100MB,硬限制为 200MB。
xfs_quota -x -c 'report' /mnt/xfs
# 显示当前所有用户和组的配额状态。
xfs_quota -x -c 'warn -u 90m user1' /mnt/xfs
# 设置用户 user1 的磁盘空间使用警告阈值为 90MB。
xfs_quota -x -c 'limit -g bsoft=500m bhard=1g group1' /mnt/xfs
# 设置组 group1 的磁盘空间软限制为 500MB,硬限制为 1GB。
xfs_quota -x -c 'off -u user1' /mnt/xfs
# 关闭用户 user1 的磁盘空间配额限制。
xfs_quota -x -c 'on -u user1' /mnt/xfs
# 启用用户 user1 的磁盘空间配额限制。
注意:
- 在执行 xfs_quota 命令之前,确保你有足够的权限,通常需要 root 权限。
- 修改配额设置后,需要重新挂载文件系统才能生效。
- 请谨慎使用配额设置,错误的配额可能会导致用户无法正常使用文件系统。
工作场景示例:例如我有两个用户一个user1用户一个user2用户,需要给 两个用户各分配8G的磁盘配额,而我现在有一块20G的磁盘该如何用xfs_quota做配额?
首先使用fdisk查看磁盘位置,这里我的是/dev/sda,大家以自己的磁盘位置为主
[root@nekohashizuku ~]# fdisk -l
Disk /dev/nvme0n1:30 GiB,32212254720 字节,62914560 个扇区
磁盘型号:VMware Virtual NVMe Disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x68f46797
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/nvme0n1p1 * 2048 2099199 2097152 1G 83 Linux
/dev/nvme0n1p2 2099200 62914559 60815360 29G 8e Linux LVM
Disk /dev/mapper/cs_bogon-root:26.98 GiB,28970057728 字节,56582144 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cs_bogon-swap:2.02 GiB,2164260864 字节,4227072 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3f39375f
使用fdisk创建磁盘分区(里面的内容我就不详细解读了详细步入Linux磁盘管理 | 喵喵的小窝 (maojiu.site))
[root@nekohashizuku ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +19G
创建了一个新分区 1,类型为“Linux”,大小为 19 GiB。
分区
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@nekohashizuku ~]# fdisk -l /dev/sda
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3f39375f
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 39847935 39845888 19G 83 Linux
使用mkfs命令对两个分区进行格式化(里面的内容我就不详细解读了详细步入Linux磁盘管理 | 喵喵的小窝 (maojiu.site))
[root@nekohashizuku ~]# mkfs -t xfs -f /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=524288 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=2097152, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
将usrquota和grpquota挂在参数写入/etc/fstab文件,这里我直接用echo命令写入了,不熟悉的也可以使用vim或nano编辑器写入。
[root@nekohashizuku ~]# echo "/dev/sda1 /user xfs defaults,uqota,gquota 0 0" >> /etc/fstab
使用systemctl daemon-reload这个命令重载fstab配置文件
[root@nekohashizuku ~]# systemctl daemon-reload
以支持磁盘配额的方式挂载磁盘,并且查看是否完成支持(查看是否存在usrquota,grpquota字样)
[root@nekohashizuku ~]# mount -o usrquota,grpquota /dev/sda1 /user
[root@nekohashizuku ~]# mount | grep /user
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=178500k,nr_inodes=44625,mode=700,uid=1000,gid=1000,inode64)
/dev/sda1 on /user type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquota)
设置user1和user2用户的配额参数
[root@nekohashizuku ~]# xfs_quota -x -c 'limit -u bsoft=8G bhard=8G user1' /user
[root@nekohashizuku ~]# xfs_quota -x -c 'limit -u bsoft=8G bhard=8G user2' /user
切入user1用户进行测试配额是否生效
[root@nekohashizuku ~]# su user1
[user1@nekohashizuku root]$ cd /user
[user1@nekohashizuku user]$ touch test
[user1@nekohashizuku user]$ dd if=/dev/zero of=test bs=4M status=progress
7335837696字节(7.3 GB,6.8 GiB)已复制,4 s,1.8 GB/s
dd: 写入 'test' 出错: 超出磁盘限额
记录了2049+0 的读入
记录了2048+0 的写出
8589934592字节(8.6 GB,8.0 GiB)已复制,4.67902 s,1.8 GB/s
至此完成
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 NachoMao
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果