配额的两个维度
配额限制的是两样东西:块数量(容量)与 inode 数量(文件个数)。只设容量时,一个用户仍然可以用几百万个空文件把文件系统的 inode 耗尽,导致所有使用者都无法新建文件。落地配额一定要同时给出容量上限与文件数上限,并按「谁占用」选择粒度:按用户、按组,或按目录(目录配额通常由项目配额或文件服务器软件的目录配额实现)。
基本信息
| 适用平台 | Linux ext4/XFS 文件系统、Windows 文件服务器、NAS 设备 |
|---|---|
| Linux 用户配额 | usrquota/grpquota 挂载选项、repquota、setquota、edquota |
| XFS 目录配额 | xfs_quota 的项目配额(project) |
| Windows 侧 | 文件服务器资源管理器中的目录配额 |
| 配合使用 | 与导出、共享与权限策略一起规划 |
配额类型对照
| 类型 | 粒度 | 典型工具 |
|---|---|---|
| 用户配额 | 单账号 | setquota、edquota、repquota |
| 组配额 | 用户组 | 同上,配合 grpquota |
| 项目配额 | 指定目录树 | xfs_quota 的 project 模式 |
| 目录配额 | 单个共享目录 | 文件服务器资源管理器的目录配额 |
| 软限与硬限 | 阈值行为 | 软限有宽限期,硬限立即拒绝 |
Linux 侧配额操作
Linux 侧配额操作
# 挂载时启用配额(示例为 XFS 项目配额)
mount -o uquota,gquota /dev/sdb1 /srv/data
# 设置软限与硬限:容量 50G/60G,文件数 10 万/12 万
setquota -u svc 52428800 62914560 100000 120000 /srv/data
# 查看所有用户的占用
repquota -s /srv/data
# XFS 项目配额:把某个目录树纳入统计
xfs_quota -x -c 'project -s -p /srv/data/team_a 100' /srv/dataWindows 侧目录配额
Windows 侧目录配额
# 查看现有配额
Get-FsrmQuota | Select-Object Path,Size,SoftLimit
# 新建硬限配额(超出即拒绝写入)
New-FsrmQuota -Path D:\data\team_a -Size 100GB -SoftLimit $false
# 新建带告警阈值的软限配额
New-FsrmQuota -Path D:\data\team_b -Size 200GB -SoftLimit $true -Threshold (New-FsrmQuotaThreshold -Percentage 85)服务端配额不会自动传递给客户端:通过 NFS 或 SMB 访问时,客户端看到的往往是整个文件系统的容量而不是自己被限额的部分。要让使用者感知配额,需在管理界面或门户里另行展示,否则用户只会遇到莫名的写入失败。
配额是容量治理工具,不是性能工具。给用户设置配额既不会加快访问,也不能阻止其用小文件与随机写造成 IO 压力;这类问题要靠在共享层做使用规范与容量规划解决。