这篇文章将为大家详细讲解有关LVM中怎么恢复已删除的物理卷,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
系统环境
Centos8
现有的文件系统
下面使用了/dev/sd[a-c]
三块磁盘,将他们划入一个卷组,创建两个逻辑卷:
# Create pv[root@localhost ~]# pvcreate /dev/sda[root@localhost ~]# pvcreate /dev/sdb[root@localhost ~]# pvcreate /dev/sdc# Create VG[root@localhost ~]# vgcreate vg_data /dev/sd[a-c]# Create LV[root@localhost ~]# lvcreate -L 25G -n lv_data vg_data[root@localhost ~]# lvcreate -L 25G -n lv_log vg_data
下面列出逻辑卷的分配使用信息:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/nvme0n1p2 cl lvm2 a-- # vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- # lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root cl -wi-ao---- 15.00g /dev/nvme0n1p2(512) swap cl -wi-ao---- 2.00g /dev/nvme0n1p2(0) lv_data vg_data -wi-a----- 25.00g /dev/sda(0) lv_data vg_data -wi-a----- 25.00g /dev/sdb(0) lv_log vg_data -wi-a----- 25.00g /dev/sdc(0) lv_log vg_data -wi-a----- 25.00g /dev/sdb(1281)
在根目录创建两个文件夹/data和/log,格式化逻辑卷,挂载逻辑卷,并存放一些数据:
[root@localhost ~]# mkdir /data /logs[root@localhost ~]# mkfs.xfs /dev/vg_data/lv_data[root@localhost ~]# mkfs.xfs /dev/vg_data/lv_log[root@localhost ~]# mount /dev/vg_data/lv_data /data[root@localhost ~]# mount /dev/vg_data/lv_log /data[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 880M 0 880M 0% /devtmpfs 897M 0 897M 0% /dev/shmtmpfs 897M 8.7M 888M 1% /runtmpfs 897M 0 897M 0% /sys/fs/cgroup/dev/mapper/cl-root 15G 1.9G 14G 13% //dev/nvme0n1p1 976M 183M 726M 21% /boottmpfs 180M 0 180M 0% /run/user/0/dev/mapper/vg_data-lv_log 25G 211M 25G 1% /data[root@localhost ~]# touch /data/file{1..10}.txt[root@localhost ~]# touch /logs/text{1..10}.log
将磁盘设置为故障或删除磁盘
这两种情况是意外删除的物理卷或发生故障的磁盘,通过运行pvremove命令删除了任何一个物理卷,或者从虚拟机中移除某一块物理磁盘。
下面从虚拟机中移除一块物理磁盘:
重启系统之后,发现不能挂载lv_data和lv_log逻辑卷了,/dev目录中找不到vg_data
卷组。
如果该逻辑卷设置为开机自动启动了,磁盘发生故障后,由于两个逻辑卷无法挂载文件系统,因此重新引导不能进入系统。只能通过进入单用户模式,并注释fstab
配置文件里面和该逻辑卷相关的条目。
添加新物理硬盘
下面从虚拟机中添加一个新的物理磁盘,新添加的磁盘会变成/dev/sdc
[root@localhost ~]# lsblk -SNAME HCTL TYPE VENDOR MODEL REV TRANsda 6:0:0:0 disk VMware, VMware Virtual S 1.0 spisdb 6:0:2:0 disk VMware, VMware Virtual S 1.0 spisdc 6:0:3:0 disk VMware, VMware Virtual S 1.0 spisr0 3:0:0:0 rom NECVMWar VMware SATA CD01 1.00 sata
恢复已删除物理卷的元数据
现在让我们开始为已删除的物理卷恢复元数据。当使用pvs,vgs,lvs命令时,它将警告缺少xxxxx UUID的设备之一。
只需复制UUID并使用grep查看存档和备份。在进行重新引导之前,报告的UUID指的是/dev/sdb设备。
[root@localhost ~]# cat /etc/lvm/archive/vg_data_00002-1587647360.vg |grep -B 2 -A 9 "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD"pv1 {id = "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD"device = "/dev/sdb" # Hint onlystatus = ["ALLOCATABLE"]flags = []dev_size = 41943040 # 20 Gigabytespe_start = 2048pe_count = 5119 # 19.9961 Gigabytes}[root@localhost ~]# cat /etc/lvm/backup/vg_data |grep -B 2 -A 9 "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD"pv1 {id = "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD"device = "/dev/sdb" # Hint onlystatus = ["ALLOCATABLE"]flags = []dev_size = 41943040 # 20 Gigabytespe_start = 2048pe_count = 5119 # 19.9961 Gigabytes}
让我们先使用pvcreate --test
进行试运行:
[root@localhost ~]# pvcreate --test --uuid "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD" --restorefile /etc/lvm/archive/vg_data_00002-1587647360.vg /dev/sdc TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated. Couldn't find device with uuid l5rSrt-SRfc-KQNw-Tm29-gx4D-ihBw-Xzum3L. Couldn't find device with uuid v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD. Couldn't find device with uuid UYyDyH-vc6D-XbQ7-ga1X-DKeM-ObLe-tdBLxR. Physical volume "/dev/sdc" successfully created.
–test 试运行 –uuid 用于指定新创建的物理卷的uuid值。如果没有此选项,将生成随机UUID。在本实验中指定的uuid值是之前删除物理卷的uuid值。 –restorefile 读取由vgcfgbackup生成的存档文件
去掉--test
选项,正式创建物理卷:
[root@localhost ~]# pvcreate --uuid "v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD" --restorefile /etc/lvm/archive/vg_data_00002-1587647360.vg /dev/sdc Couldn't find device with uuid l5rSrt-SRfc-KQNw-Tm29-gx4D-ihBw-Xzum3L. Couldn't find device with uuid v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD. Couldn't find device with uuid UYyDyH-vc6D-XbQ7-ga1X-DKeM-ObLe-tdBLxR. Physical volume "/dev/sdc" successfully created.[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/nvme0n1p2 cl lvm2 a--
恢复卷组
然后使用lvm的备份还原卷组。首先加入--test
试运行一下:
[root@localhost ~]# vgcfgrestore --test -f /etc/lvm/backup/vg_data vg_data TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated. Volume group vg_data has active volume: lv_log. Volume group vg_data has active volume: lv_data. WARNING: Found 2 active volume(s) in volume group "vg_data". Restoring VG with active LVs, may cause mismatch with its metadata.Do you really want to proceed with restore of volume group "vg_data", while 2 volume(s) are active? [y/n]: y Restored volume group vg_data.
下面正式运行一下,去掉--test
选项:
[root@localhost ~]# vgcfgrestore -f /etc/lvm/backup/vg_data vg_data Volume group vg_data has active volume: lv_log. Volume group vg_data has active volume: lv_data. WARNING: Found 2 active volume(s) in volume group "vg_data". Restoring VG with active LVs, may cause mismatch with its metadata.Do you really want to proceed with restore of volume group "vg_data", while 2 volume(s) are active? [y/n]: y Restored volume group vg_data.
如果卷组和逻辑卷未激活,请使用下面命令激活:
# 扫描卷组[root@localhost ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "cl" using metadata type lvm2 Found volume group "vg_data" using metadata type lvm2# 激活卷组vg_data[root@localhost ~]# vgchange -ay vg_data 2 logical volume(s) in volume group "vg_data" now active# 扫描逻辑卷[root@localhost ~]# lvscan ACTIVE '/dev/cl/swap' [2.00 GiB] inherit ACTIVE '/dev/cl/root' [15.00 GiB] inherit ACTIVE '/dev/vg_data/lv_data' [25.00 GiB] inherit ACTIVE '/dev/vg_data/lv_log' [25.00 GiB] inherit
关于“LVM中怎么恢复已删除的物理卷”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。