恢复已删除的 LVM 签名

恢复已删除的 LVM 签名

我猜我已经删除了 LVM 分区。我在 vmware 中扩展了数据存储(从 70 GB 到 90 GB),然后运行echo 1> /sys/class/block/sdb/device/rescan

之后我运行fdisk /dev/sdb。它显示我的 sdb 是 90 GB,但出现了以下警告: The old LVM2_member signature will be removed by a write command. 我确实输入了 w,但我觉得这不是一个好主意。现在这些命令都没有显示任何内容:lvs, vgs, pvs

blkid看到我的 sdb UUID 已经改变:

/dev/sda1: UUID="b96e5429-d28e-4102-9085-4f303642a26e" TYPE="ext4" PARTUUID="0ab90198-01"
/dev/mapper/vg00-vol_db: UUID="4ed1927e-620a-4bf9-b656-c208f31e6ea3" TYPE="ext4"
/dev/sdb: PTUUID="d6c28699" PTTYPE="dos"

我运行的vgcfgrestore vg00 --test -f vg00_00001-2029869851.vg是今天更改之前的最后一个文件。(这是我 2 个月前创建 LVM 时的文件)但它返回了

  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  Couldn't find device with uuid 4deOKh-FeJz-8JqG-SAyX-KviL-UGu4-PtJ138.
  Cannot restore Volume Group vg00 with 1 PVs marked as missing.
  Restore failed.

我该如何挽回这一混乱局面?非常感谢

答案1

我知道这是一个老话题,但我认为它对其他人会很有用,因为我刚刚犯了同样的错误,但我设法让它(相当)轻松地工作。下载 gparted cd,启动它。打开终端并

sudo hexedit /dev/sda3

(其中 sda3 是损坏的分区)使用箭头滚动到 00000200

那里应该有类似这样的行:

00000200  4c 41 42 45 4c 4f 4e 45  01 00 00 00 00 00 00 00  |LABELONE........|
00000210  fe b5 f2 9a 20 00 00 00  00 00 00 00 00 00 00 00  |.... ...........|
00000220  42 32 42 4e 66 78 44 54  41 79 55 67 57 65 77 41  |B2BNfxDTAyUgWewA|
00000230  70 4e 32 42 57 4e 4f 64  52 36 6e 74 55 6f 44 4d  |pN2BWNOdR6ntUoDM|

将第 210 行替换为以下代码:

00000210  fe b5 f2 9a 20 00 00 00  4c 56 4d 32 20 30 30 31  |.... ...LVM2 001|

按 F2 保存,按 CTRL + X 退出并重新启动。瞧!

答案2

开始记录您的终端会话以记录您所做的事情。

启动备份恢复程序以防数据丢失。请求磁带或存档存储。不要立即开始复制数据。

考虑对损坏的 PV 块设备进行映像处理,以防止修复后无法恢复。尤其是如果操作简单,例如使用存储阵列快照。

按照程序恢复 LVM 物理卷上的元数据。用损坏的 PV 填写命令,注意错误的值可能会丢失数据。特别是,仔细检查块设备是否是整个磁盘/dev/sdb,或者是某个分区,如/dev/sdb1。您没有打印分区表,所以我不能确定。

 pvcreate --uuid 4deOKh-FeJz-8JqG-SAyX-KviL-UGu4-PtJ138 --restorefile vg00_00001-2029869851.vg blockdevice
 vgcfgrestore vg00
 lvchange --activate y 
 fsck

抽查数据令您满意。


在某种形式的行动后审查中,研究如何改进数据保护。

检查备份是否满足恢复时间目标。假设您有一项能够恢复到昨晚的策略。如果没有夜间备份,或者没有记录,请修复它。

考虑在整个磁盘上创建未来的 LVM PV。避免分区复杂化,跳过fdisk步骤。Linux LVM 完全可以胜任 PV /dev/sdb

相关内容