实验目标
- 创建并管理一个 LVM 卷组 (VG)。
- 在卷组中创建、扩展和缩小逻辑卷 (LV)。
- 创建和使用快照。
实验环境
- Linux 服务器
- 三个可用的磁盘分区:
/dev/sdb1
,/dev/sdb2
, 和/dev/sdb3
实验步骤
步骤 1: 安装 LVM 工具
确保 LVM 工具已安装。如果没有,请安装它:
bash
yum install lvm2 -y
步骤 2: 创建物理卷 (PV)
使用 /dev/sdb1
, /dev/sdb2
, 和 /dev/sdb3
创建物理卷。
bash
pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
步骤 3: 查看物理卷信息
bash
pvs
pvdisplay
步骤 4: 创建卷组 (VG)
使用所有三个物理卷创建卷组 myvg
。
bash
vgcreate myvg /dev/sdb1 /dev/sdb2 /dev/sdb3
步骤 5: 查看卷组信息
bash
vgs
vgdisplay
步骤 6:卷组的扩容与缩减
bash
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 0 0 wz--n- <14.99g <14.99g
rhel 1 2 0 wz--n- <19.00g 0
[root@localhost ~]# pvcreate /dev/sdb{5,6}
Physical volume "/dev/sdb5" successfully created.
Physical volume "/dev/sdb6" successfully created.
[root@localhost ~]# vgextend myvg /dev/sdb{5,6}
Volume group "myvg" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 5 0 0 wz--n- 18.98g 18.98g
rhel 1 2 0 wz--n- <19.00g 0
[root@localhost ~]# vgreduce myvg /dev/sdb6
Removed "/dev/sdb6" from volume group "myvg"
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 4 0 0 wz--n- 16.98g 16.98g
rhel 1 2 0 wz--n- <19.00g 0
[root@localhost ~]#
步骤 7: 创建逻辑卷 (LV)
创建两个逻辑卷:mylv1
和 mylv2
。
bash
[root@localhost ~]# lvcreate -l 10 -n mylv1 myvg
Logical volume "mylv1" created.
[root@localhost ~]# lvcreate -L 100M -n mylv2 myvg
Logical volume "mylv2" created.
步骤 8: 查看逻辑卷信息
bash
lvs
lvdisplay
步骤 9: 格式化逻辑卷
格式化新创建的逻辑卷为 ext4
文件系统。
bash
mkfs.ext4 /dev/myvg/mylv1
mkfs.ext4 /dev/myvg/mylv2
步骤 10: 挂载逻辑卷
创建挂载点并挂载逻辑卷。
bash
[root@localhost ~]# mkdir -p /mydir/mylv1
[root@localhost ~]# mkdir -p /mydir/mylv2
[root@localhost ~]# mount /dev/myvg/mylv1 /mydir/mylv1
[root@localhost ~]# mount /dev/myvg/mylv2 /mydir/mylv2
步骤 11: 验证挂载情况
bash
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root xfs 17G 3.8G 14G 22% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
tmpfs tmpfs 183M 20K 183M 1% /run/user/0
/dev/mapper/myvg-mylv1 ext4 35M 782K 32M 3% /mydir/mylv1
/dev/mapper/myvg-mylv2 ext4 93M 1.6M 85M 2% /mydir/mylv2
步骤 12: 扩展逻辑卷 (LV)
扩展 mylv1
的大小。
bash
[root@localhost ~]# lvextend -L +60M /dev/myvg/mylv1
[root@localhost ~]# resize2fs /dev/myvg/mylv1
步骤 13: 缩减逻辑卷 (LV)
先卸载逻辑卷,然后检查并调整文件系统大小,最后调整逻辑卷大小。
bash
[root@localhost ~]# umount /mydir/mylv1
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1
[root@localhost ~]# resize2fs /dev/myvg/mylv1 50M
[root@localhost ~]# lvreduce -L -50M /dev/myvg/mylv1
[root@localhost ~]# mount /dev/myvg/mylv1 /mydir/mylv1
[root@localhost ~]# lvs
步骤 14: 创建快照
创建 mylv2
的快照 mysnop
。
bash
[root@localhost ~]# echo "test data" > /mydir/mylv2/newfile
[root@localhost ~]# lvcreate -L 20M -s -n mysnop /dev/myvg/mylv2
[root@localhost ~]# lvs
步骤 15: 使用快照恢复数据
假设在 mylv2
中写入了一些数据,现在需要恢复到快照时的状态。
bash
[root@localhost ~]# ls /mydir/mylv2/
[root@localhost ~]# rm -rf /mydir/mylv2/newfile
[root@localhost ~]# umount /mydir/mylv2
[root@localhost ~]# lvconvert --merge /dev/myvg/mysnop
[root@localhost ~]# mount /dev/myvg/mylv2 /mydir/mylv2
[root@localhost ~]# ls /mydir/mylv2/
[root@localhost ~]# lvs
步骤 16: 逻辑卷卷组删除
当实验完成后,清理创建的所有资源。
bash
umount /mydir/mylv1
umount /mydir/mylv2
lvremove /dev/myvg/mylv1
lvremove /dev/myvg/mylv2
vgremove myvg
pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
注意事项
- 在进行任何涉及数据的操作之前,请确保备份重要数据。
- 在进行逻辑卷的扩展或缩小操作时,务必先卸载逻辑卷。
- 在缩小逻辑卷之前,确保先执行文件系统的检查 (
e2fsck
) 并调整文件系统大小 (resize2fs
)。
完成上述步骤后,您应该能够掌握 LVM 的基本管理和操作技巧。请确保在实验过程中记录下重要的输出结果和观察到的现象,以便于后续分析和学习。