- RAID:(Redundant Array of Independent Disk )独立冗余磁盘阵列
- RAID最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
- RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。
- RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
1.2 常见RAID级别 1.2.1 RAID0
- 至少需要两块磁盘
- 数据条带化分布到磁盘(如果说需要存储的数据是12345678,那么可能是1357存储在disk1上面,2468存储在disk2上面)
- 高的读写性能,100%高存储空间利用率
- 没有数据冗余性,一块磁盘故障,数据将无法恢复
- 应用于:对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储
- 至少需要两块磁盘
- 数据镜像备份写到磁盘上(工作盘和镜像盘)
- 可靠性高,磁盘利用率为50%
- 一块磁盘故障,不会影响数据的读写
- 读性能可以,但写性能不佳
- 应用于:对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。
- 至少需要3块磁盘
- 数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
- 以奇偶校验(分散)做数据冗余
- 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
- 是目前综合性能最佳的数据保护解决方案,兼顾了存储性能、数据安全和存储成本等各方面因素
- 适用于大部分的应用场景
- 至少需要4块磁盘
- 数据条带化存储在磁盘,读取性能好,容错能力强
- 采用双重校验方式保证数据的安全性
- 如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
- 成本要比其他等级高,并且更复杂
- 一般用于对数据安全性要求非常高的场合
- RAID10是raid1+raid0的组合
- 至少需要4块磁盘
- 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
- 磁盘利用率为50%,成本较高
- RAID10是raid0+raid1的组合
- 至少需要4块磁盘
- 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
- 磁盘利用率为50%,成本较高
| 类型 | 读性能 | 写性能 | 可靠性 | 磁盘利用率 | 成本 |
|---|---|---|---|---|---|
| RAID0 | 最好 | 最好 | 最低 | 100% | 较低 |
| RAID1 | 正常 | 两份数据 | 高 | 50% | 高 |
| RAID5 | 近似RAID0 | 多了校验 | 介于RAID0和RAID1之间 | (n-1)/n | 介于RAID0和RAID1之间 |
| RAID6 | 近似RAID0 | 多了双重校验 | 大于RAID5 | (n-2)/n | 大于RAID1 |
| RAID10 | 等于RAID0 | 等于RAID1 | 高 | 50% | 最高 |
| RAID01 | 等于RAID0 | 等于RAID1 | 高 | 50% | 最高 |
1.3 软硬RAID 1.3.1 软RAID
-
软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。
-
软RAID有以下特点:
-
占用内存空间
-
占用CPU资源
-
如果程序或者操作系统故障就无法运行
-
现在企业很少用软RAID。
-
- 通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。
- RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
- 不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID5、RAID10不等。
1.4 组件RAID阵列 1.4.1 环境准备
- 添加一块磁盘(或者直接添加多块磁盘,不分区,直接使用)
- 将一个大容量磁盘(20G)分区,形成多个小分区
[root@server1 ~]# fdisk /dev/sdc [root@server1 ~]# partprobe /dev/sdc [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 5G 0 disk └─sdb1 8:17 0 2G 0 part sdc 8:32 0 20G 0 disk ├─sdc1 8:33 0 2G 0 part ├─sdc2 8:34 0 2G 0 part ├─sdc3 8:35 0 2G 0 part ├─sdc4 8:36 0 1K 0 part ├─sdc5 8:37 0 2G 0 part ├─sdc6 8:38 0 2G 0 part ├─sdc7 8:39 0 2G 0 part ├─sdc8 8:40 0 2G 0 part ├─sdc9 8:41 0 2G 0 part ├─sdc10 8:42 0 2G 0 part └─sdc11 8:43 0 2G 0 part sr0 11:0 1 973M 0 rom
- 安装mdadm工具
[root@server1 ~]# yum install -y mdadm
| 参数 | 作用 |
|---|---|
| -a | 检测设备名称 |
| -n | 指定设备数量 |
| -l | 指定RAID级别 |
| -C | 创建 |
| -v | 显示过程 |
| -f | 模拟设备损坏 |
| -r | 移除设备 |
| -Q | 查看摘要信息 |
| -D | 查看详细信息 |
| -S | 停止RAID磁盘阵列 |
| -x | 指定热备盘数量 |
# 创建raid0
[root@server1 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdc1 /dev/sdc2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Sep 2 23:25:16 2021
Raid Level : raid0
Array Size : 4188160 (3.99 GiB 4.29 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Sep 2 23:25:16 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : server1:0 (local to host server1)
UUID : 2e5a48fa:87654810:3460dfd6:1d4951d5
Events : 0
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 34 1 active sync /dev/sdc2
# 格式化
[root@server1 ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=8, agsize=130944 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1047040, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 挂载
[root@server1 ~]# mkdir /mnt/mnt_md0
[root@server1 ~]# mount /dev/md0 /mnt/mnt_md0/
# 测试
#复制终端,用于监测
[root@server1 ~]# yum install -y sysstat
[root@server1 ~]# iostat -m -d /dev/sdc[12] 3
[root@server1 ~]# dd if=/dev/zero of=/mnt/mnt_md0/bigfile bs=1M count=1024
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdc1 156.00 0.00 77.84 0 233
sdc2 155.67 0.00 77.83 0 233
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdc1 140.33 0.00 70.17 0 210
sdc2 140.33 0.00 70.17 0 210
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdc1 45.33 0.00 22.67 0 68
sdc2 45.33 0.00 22.67 0 68
# 永久保存RAID0信息
[root@server1 ~]# echo "/dev/md0 /mnt/mnt_md0 xfs defaults 0 0" >> /etc/fstab
1.4.3 组建RAID1
# 创建raid1
[root@server1 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdc3 /dev/sdc5
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y #输入y,同意即可
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
# 查看状态信息
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1] sdc3[0]
2094080 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc2[1] sdc1[0]
4188160 blocks super 1.2 512k chunks
unused devices:
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Sep 2 23:43:43 2021
Raid Level : raid1
Array Size : 2094080 (2045.00 MiB 2144.34 MB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Sep 2 23:43:54 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : server1:1 (local to host server1)
UUID : bc67728d:e1c60a3c:8d445c5d:67a55444
Events : 17
Number Major Minor RaidDevice State
0 8 35 0 active sync /dev/sdc3
1 8 37 1 active sync /dev/sdc5
# 格式化
[root@server1 ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=130880 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523520, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 挂载
[root@server1 ~]# mkdir /mnt/mnt_md1
[root@server1 ~]# mount /dev/md1 /mnt/mnt_md1
[root@server1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.9G 16G 11% /
/dev/sda1 xfs 1014M 194M 821M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md0 xfs 4.0G 33M 4.0G 1% /mnt/mnt_md0
/dev/md1 xfs 2.0G 33M 2.0G 2% /mnt/mnt_md1
# 测试(热插拔)
# 模拟数据
[root@server1 ~]# touch /mnt/mnt_md1/file{1..5}
# 模拟故障
[root@server1 ~]# mdadm /dev/md1 -f /dev/sdc3
mdadm: set /dev/sdc3 faulty in /dev/md1
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1] sdc3[0](F) F表示失效
2094080 blocks super 1.2 [2/1] [_U] _表示有一块盘失效
md0 : active raid0 sdc2[1] sdc1[0]
4188160 blocks super 1.2 512k chunks
unused devices:
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Sep 2 23:43:43 2021
Raid Level : raid1
Array Size : 2094080 (2045.00 MiB 2144.34 MB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Sep 2 23:57:53 2021
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : server1:1 (local to host server1)
UUID : bc67728d:e1c60a3c:8d445c5d:67a55444
Events : 19
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 37 1 active sync /dev/sdc5
0 8 35 - faulty /dev/sdc3
# 移除失效盘
[root@server1 ~]# mdadm /dev/md1 -r /dev/sdc3
mdadm: hot removed /dev/sdc3 from /dev/md1
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1]
2094080 blocks super 1.2 [2/1] [_U]
md0 : active raid0 sdc2[1] sdc1[0]
4188160 blocks super 1.2 512k chunks
unused devices:
# 不影响读写数据
[root@server1 ~]# touch /mnt/mnt_md1/test1
[root@server1 ~]# ls /mnt/mnt_md1
file1 file2 file3 file4 file5 test1
# 加入新磁盘(热插)
[root@server1 ~]# mdadm /dev/md1 -a /dev/sdc6
mdadm: added /dev/sdc6
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc6[2] sdc5[1]
2094080 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc2[1] sdc1[0]
4188160 blocks super 1.2 512k chunks
unused devices:
# 永久保存RAID1信息
[root@server1 ~]# echo "/dev/md1 /mnt/mnt_md1 xfs defaults 0 0" >> /etc/fstab
1.4.4 组建RAID5
# 创建RAID5(预留一块热备盘)
[root@server1 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdc{7,8,9,10}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3](S) sdc8[1] sdc7[0]
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md1 : active raid1 sdc6[2] sdc5[1]
2094080 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc2[1] sdc1[0]
4188160 blocks super 1.2 512k chunks
unused devices:
[root@server1 ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Sep 3 00:11:41 2021
Raid Level : raid5
Array Size : 4188160 (3.99 GiB 4.29 GB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Sep 3 00:11:54 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1 热备盘
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : server1:5 (local to host server1)
UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2
Events : 18
Number Major Minor RaidDevice State
0 8 39 0 active sync /dev/sdc7
1 8 40 1 active sync /dev/sdc8
4 8 41 2 active sync /dev/sdc9
3 8 42 - spare /dev/sdc10
# 格式化
[root@server1 ~]# mkfs.ext4 /dev/md5
# 挂载
[root@server1 ~]# mount /dev/md5 /mnt/mnt_md5
[root@server1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.9G 16G 11% /
/dev/sda1 xfs 1014M 194M 821M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md0 xfs 4.0G 33M 4.0G 1% /mnt/mnt_md0
/dev/md1 xfs 2.0G 33M 2.0G 2% /mnt/mnt_md1
/dev/md5 ext4 3.9G 16M 3.7G 1% /mnt/mnt_md5
# 测试
#模拟故障
[root@server1 ~]# mdadm /dev/md5 -f /dev/sdc7
mdadm: set /dev/sdc7 faulty in /dev/md5
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] sdc7[0](F)
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[root@server1 ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Sep 3 00:11:41 2021
Raid Level : raid5
Array Size : 4188160 (3.99 GiB 4.29 GB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Sep 3 00:19:14 2021
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : server1:5 (local to host server1)
UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2
Events : 37
Number Major Minor RaidDevice State
3 8 42 0 active sync /dev/sdc10
1 8 40 1 active sync /dev/sdc8
4 8 41 2 active sync /dev/sdc9
0 8 39 - faulty /dev/sdc7
# 移除失效盘
[root@server1 ~]# mdadm /dev/md5 -r /dev/sdc7
mdadm: hot removed /dev/sdc7 from /dev/md5
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1]
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1]
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
# 添加热备盘
[root@server1 ~]# mdadm /dev/md5 -a /dev/sdc3
mdadm: added /dev/sdc3
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc3[5](S) sdc9[4] sdc10[3] sdc8[1]
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
# 永久保存RAID1信息
[root@server1 ~]# echo "/dev/md5 /mnt/mnt_md5 ext4 defaults 0 0" >> /etc/fstab
1.4.5 RAID停止与启动
# 停止(以RAID0为例) [root@server1 ~]# umount /mnt/mnt_md0 [root@server1 ~]# mdadm --stop /dev/md0 mdadm: stopped /dev/md0 # 启动 [root@server1 ~]# mdadm -A /dev/md0 /dev/sdc[12] mdadm: /dev/md0 has been started with 2 drives.1.4.6 RAID删除
# 以RAID1为例 # 解挂 [root@server1 ~]# umount /dev/md1 # 停止运行 [root@server1 ~]# mdadm --stop /dev/md1 mdadm: stopped /dev/md1 # 删除/etc/fstab中的相关内容 [root@server1 ~]# vim /etc/fstab #/dev/md1 /mnt/mnt_md1 ext4 defaults 0 0 # 删除元数据 [root@server1 ~]# mdadm --zero-superblock /dev/sdc[56]
二、磁盘管理-逻辑卷 2.1 逻辑卷简介
-
LVM逻辑卷管理,在物理设备上进行一层抽象,允许生成逻辑存储卷,相比物理存储管理更加灵活
- LVM将存储虚拟化,不受限于物理存储,屏蔽硬件相关存储参数,不需要卸载文件系统进行调整卷大小或数据迁移
-
逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制
-
理论性较强,创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。
-
建立在物理存储设备之上的一个抽象层,优点在于灵活管理
-
特点:
- 动态在线扩容(重点)
- 离线裁剪
- 数据条带化
- 数据镜像
- 灵活的容器可伸缩的存储池
- 方便的设备命令
2.2 工作原理
- 物理卷:Physical Volume (PV),处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列
- 卷组:Volume Group (VG),建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。一个LVM系统中可以只有一个卷组,也可以包含多个卷组
- 逻辑卷:Logical Volume (LV),逻辑卷建立在卷组之上,并且逻辑卷在建立后可以动态地扩展或缩小空间,是最终用户使用的逻辑设备
- 物理区域 :physical extent (PE),一个物理卷可被划分为多个PE,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。
- 逻辑区域:logical extent (LE),一个逻辑卷可被划分为多个LE,也是LVM寻址的最小单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
2.3 逻辑卷管理 2.3.1 常用命令
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
|---|---|---|---|
| 扫描 | pvscan | vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示 | pvs | vgs | lvs |
| 详细显示 | pvdisplay | vgdisplay | lvdisplay |
| 删除 | pvremove | vgremove | lvremove |
| 扩展 | vgextend | lvextend | |
| 缩小 | vgreduce | lvreduce |
- 物理设备——>物理卷(pv)——>卷组(vg)——>逻辑卷(lv)——>逻辑卷格式化——>挂载
# 物理设备:硬盘分区 [root@server1 ~]# fdisk /dev/sdb [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 5G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 2G 0 part sr0 11:0 1 973M 0 rom [root@server1 ~]# partprobe /dev/sdb # 创建物理卷 [root@server1 ~]# pvcreate /dev/sdb1 /dev/sdb2 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. [root@server1 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb1 lvm2 --- 1.00g 1.00g /dev/sdb2 lvm2 --- 2.00g 2.00g [root@server1 ~]# pvdisplay /dev/sdb* "/dev/sdb2" is a new physical volume of "2.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 2.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID ogYeQh-kmXp-SguX-IE5I-VY1T-HFSE-mgVzh2 "/dev/sdb1" is a new physical volume of "1.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID O0FhDl-4USu-DBGD-skhu-zFVA-rEiZ-JVC3T3 # 创建卷组 [root@server1 ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2 Volume group "vg01" successfully created [root@server1 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg01 2 0 0 wz--n- 2.99g 2.99g # 创建逻辑卷 [root@server1 ~]# lvcreate -n lv01 -L 2.5G vg01 选项说明: -n:指定逻辑卷名称 -L:直接指定逻辑卷大小 -l:间接指定逻辑卷大小(加PE个数/卷组剩余空间(VFree)百分比) [root@server1 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g lv01 vg01 -wi-a----- 2.50g # 查看映射关系 [root@server1 ~]# ll /dev/vg01/lv01 lrwxrwxrwx 1 root root 7 8月 21 12:17 /dev/vg01/lv01 -> ../dm-2 [root@server1 ~]# ll /dev/mapper/vg01-lv01 lrwxrwxrwx 1 root root 7 8月 21 12:17 /dev/mapper/vg01-lv01 -> ../dm-2 # 格式化 [root@server1 ~]# mkfs.ext4 /dev/vg01/lv01 [root@server1 ~]# blkid /dev/vg01/lv01 /dev/vg01/lv01: UUID="acc1fc83-a64c-4d60-9f32-955169625ac1" TYPE="ext4" # 挂载 [root@server1 ~]# mkdir /mnt/lv01 [root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01/ [root@server1 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 899M 0 899M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 1.9G 16G 11% / /dev/sda1 xfs 1014M 194M 821M 20% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/vg01-lv01 ext4 2.4G 7.5M 2.3G 1% /mnt/lv012.3.3 逻辑卷删除
# 解挂 [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 5G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─vg01-lv01 253:2 0 2.5G 0 lvm /mnt/lv01 └─sdb2 8:18 0 2G 0 part └─vg01-lv01 253:2 0 2.5G 0 lvm /mnt/lv01 sr0 11:0 1 973M 0 rom [root@server1 ~]# umount /dev/vg01/lv01 # 删除逻辑卷 [root@server1 ~]# lvremove /dev/vg01/lv01 Do you really want to remove active logical volume vg01/lv01? [y/n]: y Logical volume "lv01" successfully removed # 删除卷组 [root@server1 ~]# vgremove vg01 Volume group "vg01" successfully removed # 删除物理卷 [root@server1 ~]# pvremove /dev/sdb[12] Labels on physical volume "/dev/sdb1" successfully wiped. Labels on physical volume "/dev/sdb2" successfully wiped. [root@server1 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 5G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 2G 0 part sr0 11:0 1 973M 0 rom
- 逻辑卷动态扩容
# 准备0.5G的逻辑卷 [root@server1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@server1 ~]# vgcreate vg01 /dev/sdb1 Volume group "vg01" successfully created [root@server1 ~]# lvcreate -n lv01 -L 0.5G vg01 Logical volume "lv01" created. [root@server1 ~]# ll /dev/vg01/lv01 lrwxrwxrwx 1 root root 7 8月 21 13:10 /dev/vg01/lv01 -> ../dm-2 [root@server1 ~]# ll /dev/mapper/vg01-lv01 lrwxrwxrwx 1 root root 7 8月 21 13:10 /dev/mapper/vg01-lv01 -> ../dm-2 [root@server1 ~]# mkfs.ext4 /dev/vg01/lv01 [root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01/ [root@server1 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 899M 0 899M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 1.9G 16G 11% / /dev/sda1 xfs 1014M 194M 821M 20% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/vg01-lv01 ext4 488M 780K 452M 1% /mnt/lv01 # 查看/mnt/lv01属于哪个卷组 [root@server1 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g lv01 vg01 -wi-ao---- 512.00m # 查看vg01的剩余空间 [root@server1 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg01 1 1 0 wz--n- 1020.00m 508.00m #卷组空间不够:先扩容卷组,再扩容逻辑卷 #卷组空间够用,只需要扩容逻辑卷 # 扩容卷组:直接将其他物理卷加入该卷组(如果没有空闲物理卷,可以通过物理设备创建物理卷) [root@server1 ~]# vgextend vg01 /dev/sdb2 Physical volume "/dev/sdb2" successfully created. Volume group "vg01" successfully extended [root@server1 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg01 2 1 0 wz--n- 2.99g 2.49g # 扩容逻辑卷 [root@server1 ~]# lvextend /dev/vg01/lv01 -L +2G Size of logical volume vg01/lv01 changed from 512.00 MiB (128 extents) to 2.50 GiB (640 extents). Logical volume vg01/lv01 successfully resized. [root@server1 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 899M 0 899M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 1.9G 16G 11% / /dev/sda1 xfs 1014M 194M 821M 20% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/vg01-lv01 ext4 488M 780K 452M 1% /mnt/lv01 # 同步文件系统 [root@server1 ~]# resize2fs /dev/vg01/lv01 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vg01/lv01 is mounted on /mnt/lv01; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg01/lv01 is now 655360 blocks long. [root@server1 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 899M 0 899M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 1.9G 16G 11% / /dev/sda1 xfs 1014M 194M 821M 20% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/vg01-lv01 ext4 2.5G 1.5M 2.4G 1% /mnt/lv012.3.4 逻辑卷实现条带化
- 条带化:把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。
# 创建分区
[root@server1 ~]# fdisk /dev/sdb
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 2G 0 part
sr0 11:0 1 973M 0 rom
# 刷新分区表(不成功,可以尝试重启)
[root@server1 ~]# partprobe /dev/sdb
# 创建物理卷
[root@server1 ~]# pvcreate /dev/sdb[12]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
[root@server1 ~]# pvs /dev/sdb[12]
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
# 创建卷组
[root@server1 ~]# vgcreate vg01 /dev/sdb[12]
Volume group "vg01" successfully created
[root@server1 ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 0 0 wz--n- 3.99g 3.99g
# 创建逻辑卷,实现条带化
[root@server1 ~]# lvcreate -n lv01 -l 100%free vg01 -i 2 /dev/sdb[12]
Using default stripesize 64.00 KiB.
Logical volume "lv01" created.
# 选项说明: -i:指定条带化的数量
[root@server1 ~]# pvs /dev/sdb[12]
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- <2.00g 0
/dev/sdb2 vg01 lvm2 a-- <2.00g 0
# 格式化
[root@server1 ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=8, agsize=130800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1046400, imaxpct=25
= sunit=16 swidth=32 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 挂载
[root@server1 ~]# mkdir /mnt/lv01
[root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01
# 测试
# 复制会话,用于监控
[root@server1 ~]# yum install -y sysstat.x86_64
[root@server1 ~]# iostat -m -d /dev/sdb[12] 3
# 选项说明:
# -d:查看磁盘
# -m:以什么速度显示,M/s
# 3:每隔3s显示一次
[root@server1 ~]# dd if=/dev/zero of=/mnt/lv01/dd_file bs=1M count=1000
#监控显示
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdb1 181.33 0.00 11.29 0 33
sdb2 180.33 0.00 11.27 0 33
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdb1 731.33 0.00 45.58 0 136
sdb2 729.33 0.00 45.58 0 136
2.3.5 逻辑卷快照
- 快照大小远远小于逻辑卷实例大小,快照的空间也来自于卷组,当卷组的可用空间为0时,快照不能创建
# 环境:现打算为vg01-lv01逻辑卷拍摄快照,但卷组可用空间为0,拟采用sdb3扩容
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
├─sdb1 8:17 0 2G 0 part
│ └─vg01-lv01 253:2 0 4G 0 lvm /mnt/lv01
├─sdb2 8:18 0 2G 0 part
│ └─vg01-lv01 253:2 0 4G 0 lvm /mnt/lv01
└─sdb3 8:19 0 1023M 0 part
sr0 11:0 1 973M 0 rom
创建物理卷
[root@server1 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
# sdb3加入vg01卷组
[root@server1 ~]# vgextend vg01 /dev/sdb3
Volume group "vg01" successfully extended
[root@server1 ~]# dmsetup ls --tree
vg01-lv01 (253:2)
├─ (8:18)
└─ (8:17)
centos-swap (253:1)
└─ (8:2)
centos-root (253:0)
└─ (8:2)
# 拍摄快照
[root@server1 ~]# lvcreate -n lv01_snap -L 50M -s /dev/vg01/lv01
Logical volume "lv01_snap" created.
[root@server1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv01 vg01 owi-aos--- 3.99g
lv01_snap vg01 swi-a-s--- 50.00m lv01 0.15
[root@server1 ~]# dmsetup ls --tree
vg01-lv01_snap (253:5)
├─vg01-lv01_snap-cow (253:4) #保存原卷改变前的数据
│ └─ (8:19)
└─vg01-lv01-real (253:3) #真实的逻辑卷(原卷)
├─ (8:18)
└─ (8:17)
vg01-lv01 (253:2)
└─vg01-lv01-real (253:3)
├─ (8:18)
└─ (8:17)
centos-swap (253:1)
└─ (8:2)
centos-root (253:0)
└─ (8:2)
# 快照自动扩容
[root@server1 ~]# vim /etc/lvm/lvm.conf
snapshot_autoextend_threshold = 75#快照空间使用率(值设置为100,表示关闭自动扩容)
snapshot_autoextend_percent = 20 #快照使用率达到上述要求,自动扩容20%
- 生产环境下常使用快照备份
- 锁表–>创建快照–>解锁–>挂载快照–>备份到指定地方–>删除快照
三、扩容swap空间 3.1 添加磁盘扩容
- 流程:新建分区–>刷新分区表–>格式化–>激活
# 查看信息
[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 147M 1.2G 9.6M 410M 1.5G
Swap: 2.0G 0B 2.0G
[root@server1 ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 0 -2
#新建分区(使用sdb2作为交换空间)
[root@server1 ~]# fdisk /dev/sdb
#欢迎使用 fdisk (util-linux 2.23.2)。
# 更改将停留在内存中,直到您决定将更改写入磁盘。
# 使用写入命令前请三思。
#命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
#分区号 (2-4,默认 2):
#起始 扇区 (4196352-10485759,默认为 4196352):
#将使用默认值 4196352
#Last 扇区, +扇区 or +size{K,M,G} (4196352-10485759,默认为 10485759):+2G
#分区 2 已设置为 Linux 类型,大小设为 2 GiB
#命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
#正在同步磁盘。
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 2G 0 part
sr0 11:0 1 973M 0 rom
# 刷新分区表
[root@server1 ~]# partprobe /dev/sdb
# 格式化
[root@server1 ~]# mkswap /dev/sdb2
#正在设置交换空间版本 1,大小 = 2097148 KiB
#无标签,UUID=ce1f363b-a131-41d0-9123-345978b1e95e
[root@server1 ~]# blkid /dev/sdb2
/dev/sdb2: UUID="ce1f363b-a131-41d0-9123-345978b1e95e" TYPE="swap"
# 临时激活swap分区(swapoff临时关闭)
[root@server1 ~]# swapon /dev/sdb2
[root@server1 ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 0 -2
/dev/sdb2 partition 2097148 0 -3
# 永久激活
[root@server1 ~]# vim /etc/fstab
# 追加
/dev/sdb2 swap swap defaults 0 0
3.2 模拟大文件来扩容 3.2.1 dd命令
- 语法:dd if=源文件 of=目标文件 bs=复制数据的大小 count=复制的个数
- 功能:一般结合吐零机生成一定大小的块设备文件
- 常用示例
# 1.备份设备文件 [root@server1 ~]# dd if=/dev/sr0 of=/centos7.6.iso 记录了1992704+0 的读入 记录了1992704+0 的写出 1020264448字节(1.0 GB)已复制,31.5341 秒,32.4 MB/秒 # 2.模拟大文件 #/dev/zero 特殊设备,一般用来模拟一个大文件,源源不断的二进制的bit流; [root@server1 ~]# dd if=/dev/zero of=/tmp/swap_file bs=1M count=1024 记录了1024+0 的读入 记录了1024+0 的写出 1073741824字节(1.1 GB)已复制,2.74676 秒,391 MB/秒 # 3.损坏系统盘(不要作死) [root@server1 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=5123.2.2 模拟大文件扩容
# 模拟大文件
[root@server1 ~]# dd if=/dev/zero of=/tmp/swap_file bs=1M count=1024
#记录了1024+0 的读入
#记录了1024+0 的写出
#1073741824字节(1.1 GB)已复制,2.74676 秒,391 MB/秒
# 格式化
[root@server1 ~]# mkswap /tmp/swap_file
#正在设置交换空间版本 1,大小 = 1048572 KiB
#无标签,UUID=b2d34da8-3388-4094-9a83-af6a6fe40cf3
# 激活
[root@server1 ~]# swapon -p 1 /tmp/swap_file
swapon: /tmp/swap_file:不安全的权限 0644,建议使用 0600。
[root@server1 ~]# chmod 0600 /tmp/swap_file
# 查看
[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 149M 72M 9.6M 1.6G 1.5
Swap: 5.0G 0B 5.0G
四、磁盘配额
-
作用:限制用户或组对磁盘空间的使用,例如文件服务器,邮件服务器…
-
案例要求:
- 创建3个用户user1,user2,user3,密码和用户名相同,初始组为usergrp组。
- 3个用户都可以取得500M的磁盘使用空间,超过400M,给予提示。文件数量不能多于5个,超过3个,给予提示
-
准备工作
# 创建分区sdb1
[root@server1 ~]# fdisk /dev/sdb
#命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
#分区号 (1-4,默认 1):
#起始 扇区 (2048-10485759,默认为 2048):
#将使用默认值 2048
#Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
#分区 1 已设置为 Linux 类型,大小设为 2 GiB
#命令(输入 m 获取帮助):w
Calling ioctl() to re-read partition table.
#正在同步磁盘。
# 刷新分区表
[root@server1 ~]# partprobe /dev/sdb
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 2G 0 part
sr0 11:0 1 973M 0 rom
# 格式化
[root@server1 ~]# mkfs.ext4 /dev/sdb1
# 挂载
[root@server1 ~]# mkdir /mnt/mount_sdb1
[root@server1 ~]# mount /dev/sdb1 /mnt/mount_sdb1/
[root@server1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.9G 16G 11% /
/dev/sda1 xfs 1014M 194M 821M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /mnt/mount_sdb1
# 创建用户
[root@server1 ~]# groupadd usergrp
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user01
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user02
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user03
# 确保文件系统支持配额
[root@server1 ~]# mount |grep mount_sdb1
/dev/sdb1 on /mnt/mount_sdb1 type ext4 (rw,relatime,data=ordered
[root@server1 ~]# mount -o remount,usrquota,grpquota /mnt/mount_sdb1/
[root@server1 ~]# mount |grep mount_sdb1
/dev/sdb1 on /mnt/mount_sdb1 type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
# 永久支持
[root@server1 ~]# vim /etc/fstab
/dev/sdb1 /mnt/mount_sdb1 ext4 defaults,usrquota,grpquota 0 0
- quotacheck命令
- 主要参数
- -a:扫描所有在/etc/mtab内含有quota参数的文件系统
- -u:针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
- -g:针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
- -v:显示扫描过程的信息
- 主要参数
# 启动quota磁盘配额 [root@server1 ~]# yum install -y quota [root@server1 ~]# quotacheck -avug [root@server1 ~]# ll /mnt/mount_sdb1/ 总用量 44 -rw------- 1 root root 7168 8月 21 12:12 aquota.group -rw------- 1 root root 7168 8月 21 12:12 aquota.user drwx------ 2 root root 16384 8月 21 12:06 lost+found drwx------ 2 user01 usergrp 4096 8月 21 12:07 user01 drwx------ 2 user02 usergrp 4096 8月 21 12:07 user02 drwx------ 2 user03 usergrp 4096 8月 21 12:07 user03 [root@server1 ~]# quotaon -a # 编辑限额配置 [root@server1 ~]# edquota -u user01 Disk quotas for user user01 (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 16 409600 512000 4 8 10 # 注:空间限制是以k为单位的。 [root@server1 ~]# edquota -p user01 -u user02 [root@server1 ~]# edquota -p user01 -u user03
-
soft:又称软限制,当用户到达这个限制以后,系统会给予警告,但仍可写入。
-
hard:又称硬限制,到达这个限制,就完全禁止任何写入
-
以下三个为磁盘空间的限制设置:
- blocks:已使用空间,无需要设置
- soft:用户空间使用限制,为软限制,需要设置
- hard:用户空间使用限制,为硬限制,需要设置
-
以下三个为总文件个数的限制:
- inodes:已有文件总数,无需要设置
- soft:文件总数限制,为软限制,需要设置
- hard:文件总数限制,为硬限制,需要设置
-
查看和测试
# 查看限制情况
[root@server1 ~]# repquota -as
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20K 0K 0K 2 0 0
user01 +- 451M 400M 500M 7days 5 8 10
user02 -- 16K 400M 500M 5 8 10
user03 -- 16K 400M 500M 4 8 10
# 测试
[user01@server1 ~]$ dd if=/dev/zero of=bigfile bs=1M count=450
sdb1: warning, user block quota exceeded.
记录了450+0 的读入
记录了450+0 的写出
471859200字节(472 MB)已复制,7.2745 秒,64.9 MB/秒
[user02@server1 ~]$ touch file{1..6}
sdb1: warning, user file quota exceeded.
[user02@server1 ~]$ touch file7
sdb1: write failed, user file limit reached.
touch: 无法创建"file7": 超出磁盘限额



