远程系统上发生物理磁盘故障时的 LVM 恢复

远程系统上发生物理磁盘故障时的 LVM 恢复

类似这样的问题在这里被问了很多,但我没有发现任何与我情况相同的人。我的系统的 LVM 卷组出现故障,并且我无法对其进行物理访问。更多详细信息如下。

我有一台 Debian 10 Linux 服务器,有两个物理卷,一个 4TB HDD 和一个 750GB SSD。 SSD 包含启动卷。 HDD 配置为 LVM 卷组,具有单个物理卷(/dev/sda,4 TB HDD)和多个逻辑卷。

HDD 显然出现故障。似乎无法进行诊断,因为 /dev/sda 根本不再存在,并且任何从磁盘读取的尝试都会导致 I/O 错误。

磁盘上的数据并不重要,而且我有系统备份。问题在于,该系统是一个无头 Linux 盒子,位于我位于瑞士的房子的地窖里,那是在半个地球之外。我担心的是,如果我重新启动它,它很可能在启动过程中失败并进入诊断模式,并且我将无法通过网络访问它。在这种情况下,我必须请朋友来收集它并将其邮寄给我 - 这是我真正想要避免的,因为它会停机数月。我可以在没有 /dev/sda 的情况下生活,直到下次我访问这所房子并更换它为止。

我从 LVM 得到的输出如下:

sudo /sbin/pvdisplay -vd /dev/sda
  Error reading device /dev/Webcams/Birch-Snapshot at 0 length 512.
  Error reading device /dev/Webcams/Birch-Snapshot at 0 length 4096.
  Error reading device /dev/Webcams/Birch-Video at 0 length 512.
  Error reading device /dev/Webcams/Birch-Video at 0 length 4096.
  Error reading device /dev/Webcams/Roof-Snapshot at 0 length 512.
  Error reading device /dev/Webcams/Roof-Snapshot at 0 length 4096.
  Error reading device /dev/Webcams/Roof-Video at 0 length 512.
  Error reading device /dev/Webcams/Roof-Video at 0 length 4096.
  Error reading device /dev/Webcams/Tree-Snapshot at 0 length 512.
  Error reading device /dev/Webcams/Tree-Snapshot at 0 length 4096.
  Error reading device /dev/Webcams/Tree-Video at 0 length 512.
  Error reading device /dev/Webcams/Tree-Video at 0 length 4096.
  Error reading device /dev/Webcams/Archive at 0 length 512.
  Error reading device /dev/Webcams/Archive at 0 length 4096.
  Error reading device /dev/Webcams/Video2 at 0 length 512.
  Error reading device /dev/Webcams/Video2 at 0 length 4096.
  Error reading device /dev/Webcams/Backup at 0 length 512.
  Error reading device /dev/Webcams/Backup at 0 length 4096.
  Failed to find device for physical volume "/dev/sda".

vgs -vd 和 lvs -vd 都只执行和打印一行:

sudo /sbin/vgs -vd
    No volume groups found.

/etc/fstab 挂载各个逻辑卷,如下所示:

# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
/dev/Webcams/Archive            /mnt/Webcams/Archive        ext4    defaults,nofail         1 2

/dev/Webcams 看起来像这样:

ls -l /dev/Webcams
total 0
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Archive -> ../dm-6
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Backup -> ../dm-8
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Birch-Snapshot -> ../dm-0
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Birch-Video -> ../dm-1
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Roof-Snapshot -> ../dm-2
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Roof-Video -> ../dm-3
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Tree-Snapshot -> ../dm-4
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Tree-Video -> ../dm-5
lrwxrwxrwx 1 root root 7 Aug 25 08:05 Video2 -> ../dm-7

还有一个 /dev/mapper 目录:

ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 Aug  3 10:44 control
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Archive -> ../dm-6
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Backup -> ../dm-8
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Birch--Snapshot -> ../dm-0
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Birch--Video -> ../dm-1
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Roof--Snapshot -> ../dm-2
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Roof--Video -> ../dm-3
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Tree--Snapshot -> ../dm-4
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Tree--Video -> ../dm-5
lrwxrwxrwx 1 root root       7 Aug 25 08:05 Webcams-Video2 -> ../dm-7

因此 /dev/Webcams 和 /dev/mapper 都有指向 /dev 中文件的符号链接:

ls -l /dev/*dm-*
brw-rw---- 1 root disk 253, 0 Aug 25 08:05 /dev/dm-0
brw-rw---- 1 root disk 253, 1 Aug 25 08:05 /dev/dm-1
brw-rw---- 1 root disk 253, 2 Aug 25 08:05 /dev/dm-2
brw-rw---- 1 root disk 253, 3 Aug 25 08:05 /dev/dm-3
brw-rw---- 1 root disk 253, 4 Aug 25 08:05 /dev/dm-4
brw-rw---- 1 root disk 253, 5 Aug 25 08:05 /dev/dm-5
brw-rw---- 1 root disk 253, 6 Aug 25 08:05 /dev/dm-6
brw-rw---- 1 root disk 253, 7 Aug 25 08:05 /dev/dm-7
brw-rw---- 1 root disk 253, 8 Aug 25 08:05 /dev/dm-8

我的问题:我应该采取哪些步骤来确保系统在重新启动期间不会进入诊断模式?只需注释掉 /etc/fstab 中的相关行就足够了,还是我还需要做其他事情?

我担心的是 lvm 本身可能会在启动期间进行检查并抛出阻止启动完成的错误。我没有将 lvm 用于任何其他卷,因此理论上至少我认为我可以删除该软件包,尽管考虑到系统所处的状态,我不确定这样做是否明智。

非常感谢任何帮助。

答案1

注释掉/etc/fstab提到的每一行/dev/Webcams。这应该足够了,除非系统还有属于同一卷组的其他磁盘。

Linux LVM(因为它存在于内核版本 2.6 及更高版本中)通常不会将任何 VG 配置存储到/etc.所有配置信息都存储在各个 PV 的 LVM 标头中。如果根文件系统位于 LVM 上,则 initramfs 通常仅尝试激活包含根文件系统的特定 LV(可能还有交换区域,在/etc/initramfs-tools/conf.d/resumeDebian 中引用)。

如果该sda磁盘是网络摄像头 VG 中唯一的磁盘,那么现在它已经发生故障,重新启动后 LVM 甚至不会知道该 VG 的存在。在注释掉 中引用它的行之后/etc/fstab,不应有任何会中断引导过程的失败安装尝试。

但是,如果网络摄像头 VG 还包含一些仍然存在且正在工作的其他磁盘,LVM 将检测到部分 VG,并可能因此在启动时进入紧急 shell。您可以通过在vgreduce --removemissing --force启动前运行来防止这种情况发生。这将有效地更新该 VG 剩余磁盘上的 VG 配置,以忘记丢失的磁盘;该--force选项将导致它忘记/销毁任何可能导致部件丢失的 LV。

相关内容