LVM综合实验

实验目标

  • 创建并管理一个 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)

创建两个逻辑卷:mylv1mylv2

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 的基本管理和操作技巧。请确保在实验过程中记录下重要的输出结果和观察到的现象,以便于后续分析和学习。