磁盘配额
磁盘配额的用处
磁盘配额主要用于以下情况:
- 当多个用户共享同一个文件系统时,可以使用磁盘配额来限制每个用户可以使用的磁盘空间。例如,如果您有一个Web服务器,不同用户在不同的目录下存储Web内容,您可以使用磁盘配额来限制每个用户不能超过一定的磁盘空间。
- 当您需要跟踪用户或用户组对文件系统的使用情况时,可以使用磁盘配额。例如,如果您是一个企业级数据中心,您可能需要跟踪不同部门或项目组对共享文件系统的使用情况,以便进行容量规划和管理决策。
在以上情况下,磁盘配额可以帮助您管理和控制用户对磁盘空间的使用,确保文件系统的健康和稳定运行。
配置
1、添加一个新硬盘,将其分区并格式化为ext4文件系统。
[root@CentOS7 ~]# fdisk -l //看一下设备名
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@CentOS7 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x41014ed2 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@CentOS7 ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
无论如何也要继续? (y,n) y
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
- 安装quotas软件包
[root@CentOS7 ~]# yum -y install quota
- 创建配额文件。
[root@CentOS7 ~]# quotacheck -ug /mnt/disk/
quotacheck: Mountpoint (or device) /mnt/disk not found or has no quota enabled. // quotacheck:挂载点(或设备)/mnt/磁盘未找到或没有启用配额。
quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option. // quotacheck:找不到文件系统检查或文件系统没有挂载配额选项。
[root@CentOS7 ~]# vim /etc/fstab
/dev/sdb /mnt/disk ext4 defaults,usrquota,grpquota 0 0 //加上这一行(注意要开启配额功能),然后重启
[root@CentOS7 ~]# quotacheck -ug /mnt/disk/
[root@CentOS7 ~]# ll /mnt/disk/
总用量 32
-rw-------. 1 root root 6144 6月 22 10:30 aquota.group
-rw-------. 1 root root 6144 6月 22 10:30 aquota.user
drwx------. 2 root root 16384 6月 22 10:13 lost+found
- 编辑用户或组配额。
这里不能直接编辑,否则会显示
[root@CentOS7 disk]# vim aquota.user
^Q^_ÀÙ^@^@^@^@<80>: ^@<80>: ^@^@^@^@^@^F^@^@^@^@^@^@^@^E^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
使用以下命令:edquota -u 用户名或edquota -g 组名。
例如:
[root@CentOS7 disk]# edquota -u it
Disk quotas for user it (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb 0 0 0 0 0
- Disk quotas for user it (uid 1000):表示该用户(用户名为it,uid为1000)的磁盘配额信息。
- Filesystem:表示文件系统。在本例中,它是/dev/sdb,即一个ext4文件系统。
- blocks:表示占用的块数。在本例中,该用户没有占用任何块。
- soft:表示软限制。在本例中,该用户没有达到任何软限制。
- hard:表示硬限制。在本例中,该用户没有达到任何硬限制。
- inodes:表示占用的inode数。在本例中,该用户没有占用任何inode。
- soft和hard:表示inode的软限制和硬限制。在本例中,该用户没有达到任何软限制或硬限制。
aquota.user磁盘配额数据库详解(aquota.groupy一样的)
- blocks:表示用户占用的块数。每个块默认为4KB,因此如果您使用了16个块,则相当于64KB的磁盘空间。对于每个目录和文件,都会计算块数。
- soft:表示用户的软限制。软限制是用户可以使用的最大块数或磁盘空间。如果用户超过了软限制,他们仍然可以在配额之前使用磁盘空间,但是系统会发出警告。
- hard:表示用户的硬限制。硬限制是用户可以使用最大块数或磁盘空间。如果用户超过了硬限制,他们将无法再写入任何数据。硬限制必须大于或等于软限制。
- inodes:表示用户占用的inode数。每个文件和目录都占用一个inode。inode包含文件和目录的元数据,例如文件名、权限和时间戳等。
- soft和hard:表示用户的inode软限制和硬限制。这些限制控制用户可以创建的文件和目录数量。类似于块和磁盘空间的软限制和硬限制,当用户达到了inode软限制或硬限制时,系统会发出警告或阻止用户继续创建文件或目录。
小结:前三个跟空间大小有关,后三个跟文件数量有关
- 启动配额。
使用以下命令:quotaon -ug /mnt/disk。
[root@CentOS7 disk]# quotaon -ug /mnt/disk
- 验证配额是否正常工作。
使用以下命令:quotastats -ug /mnt/disk。
[root@CentOS7 disk]# quotastats -ug /mnt/disk
Kernel quota version: 6.5.1
Number of dquot lookups: 0
Number of dquot drops: 0
Number of dquot reads: 0
Number of dquot writes: 0
Number of quotafile syncs: 8
Number of dquot cache hits: 0
Number of allocated dquots: 0
Number of free dquots: 0
Number of in use dquot entries (user/group): 0
- Kernel quota version::显示了当前系统内核的磁盘配额版本。在这个例子中,版本号为6.5.1。
- Number of dquot lookups::表示磁盘配额数据库(dquot)的查询次数。每次用户访问文件系统中的文件或目录时,都会查询磁盘配额数据库以检查是否超出了限制。
- Number of dquot drops::表示磁盘配额数据库的丢弃次数。这个值通常不会很多,除非有很大量的磁盘配额数据被更改。
- Number of dquot reads::表示从磁盘配额数据库中读取的次数。这个值反映了读取磁盘配额数据库的次数,通常与dquot lookups一起使用。
- Number of dquot writes::表示写入磁盘配额数据库的次数。这个值反映了更新磁盘配额数据库的次数,通常与dquot lookups和dquot drops一起使用。
- Number of quotafile syncs::表示磁盘配额文件的同步次数。这个值反映了为了保持磁盘配额数据库与实际文件系统的一致性,磁盘配额文件被同步的次数。
- Number of dquot cache hits::表示磁盘配额缓存命中次数。这个值反映了在内存中查询磁盘配额数据库的次数。如果这个值比较高,说明磁盘配额数据库已经被缓存到了内存中,查询速度会更快。
- Number of allocated dquots::表示已分配的磁盘配额数据库的数量。这个值反映了已经被分配给特定用户或用户组的磁盘配额数据库的数量。
- Number of free dquots::表示空闲的磁盘配额数据库的数量。这个值反映了当前系统中有多少个空闲的磁盘配额数据库可供使用。
- Number of in use dquot entries (user/group)::表示正在使用的磁盘配额数据库条目的数量。这个值反映了当前系统中有多少个磁盘配额数据库条目已经被分配给特定用户或用户组并且正在被使用。
请注意,要使磁盘配额正常工作,目录必须具有写权限,并且必须使用支持配额的文件系统(如ext4)。
XFS格式硬盘如何配额
1、创建需要进行磁盘配额的文件系统
[root@CentOS7 ~]# mkfs.xfs /dev/sdb
mkfs.xfs: /dev/sdb appears to contain a partition table (dos).
mkfs.xfs: Use the -f option to force overwrite.
// mkfs.xfs: /dev/sdb似乎包含一个分区表(dos)。
// mkfs.xfs:使用-f选项强制覆盖。
[root@CentOS7 ~]# mkfs.xfs -f /dev/sdb
这个命令将强制覆盖现有的分区表并重新格式化您的硬盘为XFS文件系统。请注意,此操作将删除所有数据,因此请在执行之前备份您的数据。
2、挂载文件系统
[root@CentOS7 ~]# mount -o usrquota,grpquota /dev/sdb /mnt/disk/
//临时挂载
3、配置 XFS 磁盘配额
首先,为文件系统创建一个配额文件
[root@CentOS7 ~]# xfs_quota -x -c 'limit -u bsoft=10M bhard=20M isoft=10 ihard=20 it' /mnt/disk/
//这里不像ext4那样会有文件出现
4、查看配额信息
[root@CentOS7 host0]# xfs_quota -c 'quota -bi -uv it' /mnt/disk/
Disk quotas for User it (1000)
Filesystem Blocks Quota Limit Warn/Time Files Quota Limit Warn/Time Mounted on
/dev/sdb 0 10240 20480 00 [--------] 1 10 20 00 [--------] /mnt/disk
[root@CentOS7 host0]# xfs_quota -c 'quota -bi -gv it' /mnt/disk/
不关机识别新添加的SCSI硬盘
1、在开机状态下新增硬盘。
2执行以下命令以在/sys/class/scsi_host/host0/scan文件中添加一个“- - -”字符串,以扫描并识别新添加的SCSI设备:
echo "- - -" > /sys/class/scsi_host/host0/scan |
注意三个“-”之间需要有空格。