RAID(独立磁盘冗余阵列)
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。
RAID 0
RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
RAID 1
RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。工作原理如图 3 所示。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
RAID 5
RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。
RAID5的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
RAID 10
RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。
虽然Raid10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。
当我们需要恢复RAID10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。
部署磁盘阵列(RAID10)
首先在虚拟机上添加4块硬盘设备,用来制作RAID 10
使用mdadm命令常用参数表:
参数 | 作用 |
---|---|
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID级别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID磁盘阵列 |
[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20955136K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# -C创建一个RAID阵列卡 -v显示创建过程 -a yes 自动创建设备文件 -n 4 使用4块硬盘来部署RAID磁盘阵列 -l RAID等级为10
把制作好的RAID磁盘阵列格式化为ext4格式
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477568 blocks
523878 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 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, 7962624
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
创建挂载点把硬盘设备进行挂载操作,查看可用空间为40GB
[root@localhost ~]# mkdir /raid10
[root@localhost ~]# mount /dev/md0 /raid10/
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 18G 4.7G 13G 27% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 84K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 497M 142M 356M 29% /boot
tmpfs 199M 16K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/md0 40G 49M 38G 1% /raid10
把挂载信息写入配置文件中,使其永久生效
[root@localhost ~]# echo "/dev/md0 /raid10 ext4 defaults 0 0" >> /etc/fstab
查看/dev/md0磁盘阵列的详细信息
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 17 17:50:53 2018
Raid Level : raid10
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 17 17:58:41 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 5d4db171:d80f5d83:80542e05:c51f8853
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync set-A /dev/sdb
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
损坏磁盘阵列及修复
先模拟损坏一块磁盘,查看/dev/md0信息
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 17 17:50:53 2018
Raid Level : raid10
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 17 18:03:56 2018
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 5d4db171:d80f5d83:80542e05:c51f8853
Events : 19
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
0 8 16 - faulty /dev/sdb
重启系统后,重新添加一块磁盘到RAID阵列中,查看/dev/md0信息
[root@localhost ~]# umount /dev/md0
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@localhost ~]# mdadm /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 1 spare. Use mdadm --detail for more detail.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 17 17:50:53 2018
Raid Level : raid10
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 17 18:10:09 2018
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Rebuild Status : 19% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 5d4db171:d80f5d83:80542e05:c51f8853
Events : 30
Number Major Minor RaidDevice State
4 8 16 0 spare rebuilding /dev/sdb
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
磁盘阵列+备份盘(RAID5)
部署RAID5至少需要用到3块硬盘,还需要一块备份盘,所以在虚拟机中添加4块硬盘设备
[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20955136K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
-n 3 创建这个RAID5需要的硬盘数 -l 5 RAID的级别 -x 1 有一块备份盘
查看创建好的/dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 17 18:17:22 2018
Raid Level : raid5
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 17 18:18:55 2018
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 87% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d7ba0d2e:a2f24a1d:67022218:d86a52d3
Events : 15
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 spare rebuilding /dev/sdd
3 8 64 - spare /dev/sde
将部署好的RAID5格式化为ext4格式,然后挂在到目录上
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477568 blocks
523878 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 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, 7962624
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# echo "/dev/md0 /raid5 ext4 defaults 0 0" >> /etc/fstab
[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mount -a
移除/dev/sdb,发现备份盘开始工作并开始数据同步
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 17 18:17:22 2018
Raid Level : raid5
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 17 18:22:20 2018
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 7% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d7ba0d2e:a2f24a1d:67022218:d86a52d3
Events : 21
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
LVM(逻辑卷管理器)
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
部署逻辑卷
常用部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
在虚拟机中添加两块磁盘,对两块磁盘进行创建物理卷操作(让两块设备支持LVM技术)
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
把两块硬盘设备加入storage卷组中,查看卷组状态
[root@localhost ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name rhel
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.51 GiB
PE Size 4.00 MiB
Total PE 4994
Alloc PE / Size 4984 / 19.47 GiB
Free PE / Size 10 / 40.00 MiB
VG UUID BPVZ2Z-JGY3-4RkL-Eudz-qeMb-8pbX-6mdAyq
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID 9fE9GZ-ynOp-1ZJO-2dSm-rXaU-P7eo-aeidpe
切割出一个约为150M的逻辑卷设备
[root@localhost ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created.
-L 150M 直接生成一个150M的逻辑卷
-l 37 生成37个基本单元大小的逻辑卷,每个基本单元大小默认为4M,也是就37x4M=148M的逻辑卷
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/rhel/swap
LV Name swap
VG Name rhel
LV UUID UD79LC-KpnA-yEUm-yrFu-vKtE-IAAx-UA1R9w
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/rhel/root
LV Name root
VG Name rhel
LV UUID AcBfKM-vJFV-6ejF-5GdC-8NOD-9zyh-nOZRRN
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 1
LV Size 17.47 GiB
Current LE 4472
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID jrIqWJ-z2qa-Qt8e-lA3x-64RM-lHCF-byzTCB
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-12-17 18:53:36 +0800
LV Status available
# open 0
LV Size 148.00 MiB
Current LE 37
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
把生成好的逻辑卷进行格式化,然后挂载使用
[root@localhost ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38000 inodes, 151552 blocks
7577 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# mkdir /lvm
[root@localhost ~]# mount /dev/storage/vo /lvm
查看挂载,并写入配置文件中,使其永久生效
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 18G 4.7G 13G 27% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 84K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 497M 142M 356M 29% /boot
tmpfs 199M 12K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 140M 1.6M 128M 2% /lvm
[root@localhost ~]# echo "/dev/storage/vo /lvm ext4 defaults 0 0" >> /etc/fstab
扩容逻辑卷
首先卸载设备和挂载点的关联
[root@localhost ~]# umount /lvm
把上一个实验的vo扩展至290M
[root@localhost ~]# lvextend -L 290M /dev/storage/vo
Rounding size to boundary between physical extents: 292.00 MiB
Size of logical volume storage/vo changed from 148.00 MiB (37 extents) to 292.00 MiB (73 extents).
Logical volume vo successfully resized.
检查硬盘完整性,并重置硬盘容量
[root@localhost ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
[root@localhost ~]# resize2fs /dev/storage/vo
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.
The filesystem on /dev/storage/vo is now 299008 blocks long.
重新挂载硬盘设备并查看挂载状态
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 18G 4.7G 13G 27% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 84K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 497M 142M 356M 29% /boot
tmpfs 199M 16K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 279M 2.1M 259M 1% /lvm
缩小逻辑卷
首先卸载设备和挂载点的关联
[root@localhost ~]# umount /lvm
检查文件系统的完整性
[root@localhost ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks
把逻辑卷vo的容量减小到120M
[root@localhost ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks
[root@localhost ~]# resize2fs /dev/storage/vo 120M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks.
The filesystem on /dev/storage/vo is now 122880 blocks long.
[root@localhost ~]# lvreduce -L 120M /dev/storage/vo
WARNING: Reducing active logical volume to 120.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo? [y/n]: y
Size of logical volume storage/vo changed from 292.00 MiB (73 extents) to 120.00 MiB (30 extents).
Logical volume vo successfully resized.
重新挂载文件系统并查看系统状态
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 18G 4.7G 13G 27% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 84K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 497M 142M 356M 29% /boot
tmpfs 199M 16K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 113M 1.6M 103M 2% /lvm
逻辑卷快照
快照卷的容量必须等同于逻辑卷的容量
快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除
首先查看卷组的信息
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name rhel
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.51 GiB
PE Size 4.00 MiB
Total PE 4994
Alloc PE / Size 4984 / 19.47 GiB
Free PE / Size 10 / 40.00 MiB
VG UUID BPVZ2Z-JGY3-4RkL-Eudz-qeMb-8pbX-6mdAyq
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 30 / 120.00 MiB
Free PE / Size 10208 / 39.88 GiB #发现已经使用了120M容量,空闲39.88G
VG UUID 9fE9GZ-ynOp-1ZJO-2dSm-rXaU-P7eo-aeidpe
用重定向往逻辑卷设备所挂载的目录中写入一个文件
[root@localhost ~]# echo "this is rhcsa" >> /lvm/readme.txt
[root@localhost ~]# ll /lvm
总用量 14
drwx------. 2 root root 12288 12月 17 18:54 lost+found
-rw-r--r--. 1 root root 14 12月 17 19:24 readme.txt
创建快照卷
[root@localhost ~]# lvcreate -L 120M -s -n snap /dev/storage/vo #-s 生成一个快照卷 -L 指定切割大小
Logical volume "snap" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/rhel/swap
LV Name swap
VG Name rhel
LV UUID UD79LC-KpnA-yEUm-yrFu-vKtE-IAAx-UA1R9w
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/rhel/root
LV Name root
VG Name rhel
LV UUID AcBfKM-vJFV-6ejF-5GdC-8NOD-9zyh-nOZRRN
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 1
LV Size 17.47 GiB
Current LE 4472
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID jrIqWJ-z2qa-Qt8e-lA3x-64RM-lHCF-byzTCB
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-12-17 18:53:36 +0800
LV snapshot status source of
snap [active]
LV Status available
# open 1
LV Size 120.00 MiB
Current LE 30
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/storage/snap
LV Name snap
VG Name storage
LV UUID wWtAYj-oH5b-640F-W022-nF74-S5ci-pOo8h7
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-12-17 19:26:53 +0800
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
在逻辑卷所挂载的目录中创建一个100M的垃圾文件,然后查看快照状态。发现占用空间量上升
[root@localhost ~]# dd if=/dev/zero of=/lvm/files count=1 bs=100M
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,4.31925 秒,24.3 MB/秒
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/rhel/swap
LV Name swap
VG Name rhel
LV UUID UD79LC-KpnA-yEUm-yrFu-vKtE-IAAx-UA1R9w
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/rhel/root
LV Name root
VG Name rhel
LV UUID AcBfKM-vJFV-6ejF-5GdC-8NOD-9zyh-nOZRRN
LV Write Access read/write
LV Creation host, time localhost, 2018-08-18 22:58:31 +0800
LV Status available
# open 1
LV Size 17.47 GiB
Current LE 4472
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID jrIqWJ-z2qa-Qt8e-lA3x-64RM-lHCF-byzTCB
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-12-17 18:53:36 +0800
LV snapshot status source of
snap [active]
LV Status available
# open 1
LV Size 120.00 MiB
Current LE 30
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/storage/snap
LV Name snap
VG Name storage
LV UUID wWtAYj-oH5b-640F-W022-nF74-S5ci-pOo8h7
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-12-17 19:26:53 +0800
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 83.71%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
先卸载掉逻辑卷设备于目录的挂载,然后对逻辑卷进行还原操作
[root@localhost ~]# umount /lvm
[root@localhost ~]# lvconvert --merge /dev/storage/snap #lvconvert 转换指定LV的属性,从线性转化为镜像或者快照
Merging of volume snap started.
vo: Merged: 43.9%
vo: Merged: 100.0%
快照卷会自动删除,并且在刚刚设备执行快照操作后再创建出来的100M文件也被清除了
[root@localhost ~]# mount -a
[root@localhost ~]# ll /lvm
总用量 14
drwx------. 2 root root 12288 12月 17 18:54 lost+found
-rw-r--r--. 1 root root 14 12月 17 19:24 readme.txt
删除逻辑卷
取消逻辑卷于目录的挂载关联,删除配置文件中永久生效的设备参数
[root@localhost ~]# umount /lvm
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Aug 18 22:58:33 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=8bf3a76e-4d13-43e5-815f-907efc4d2927 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
删除逻辑卷设备,需要输入y来确认操作
[root@localhost ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
删除卷组,只用写卷名,不需要设备的绝对路径
[root@localhost ~]# vgremove storage
Volume group "storage" successfully removed
删除物理卷设备
[root@localhost ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped
Labels on physical volume "/dev/sdc" successfully wiped