我正在尝试使用 Debian Live 恢复 RAID1 上的 LVM(无加密)。
显然,RAID1 可以毫无问题地组装,但 LVM 已损坏。您可以跳至 LVM 部分。保留 RAID 部分以备不时之需。
RAID
# aptitude install mdadm
# mdadm --assemble --scan
消息:
[ 617.036709] md: md0 stopped.
[ 617.038099] md: bind<sdc1>
[ 617.038302] md: bind<sda1>
[ 617.214903] md: raid1 personality registered for level 1
[ 617.215534] md/raid1:md0: active with 2 out of 2 mirrors
[ 617.215694] created bitmap (8 pages) for device md0
[ 617.215956] md0: bitmap initialized from disk: read 1 pages, set 0 of
14903 bits
[ 617.682354] md0: detected capacity change from 0 to 1000068874240
[ 617.693821] md0:
这是 RAID:
# ls -l /dev/md0
brw-rw---- 1 root disk 9, 0 Jan 21 19:34 /dev/md0
# mdadm --examine /dev/md0
/dev/md0:
MBR Magic : aa55
# file -s /dev/{md0,sda,sdc}
/dev/md0: DOS/MBR boot sector
/dev/sda: DOS/MBR boot sector
/dev/sdc: DOS/MBR boot sector
恐怕这DOS/MBR boot sector
就是问题所在。稍后会详细介绍这一点。
附加信息,以防万一
这可能不相关。
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 21 18:04:33 2015
Raid Level : raid1
Array Size : 976629760 (931.39 GiB 1000.07 GB)
Used Dev Size : 976629760 (931.39 GiB 1000.07 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed Jan 20 22:28:23 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : bouzin:0
UUID : 102b07b8:703e4597:574b2ecf:880a1aee
Events : 4349
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 33 1 active sync /dev/sdc1
# fdisk -l /dev/md0
Disk /dev/md0: 931.4 GiB, 1000068874240 bytes, 1953259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x9c0ff432
# sfdisk -l /dev/md0
Disk /dev/md0: 244157440 cylinders, 2 heads, 4 sectors/track
Units: cylinders of 4096 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/md0p1 0 - 0 0 0 Empty
/dev/md0p2 0 - 0 0 0 Empty
/dev/md0p3 0 - 0 0 0 Empty
/dev/md0p4 0 - 0 0 0 Empty
# sfdisk -l /dev/sda
Disk /dev/sda: 121601 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 121601- 121602- 976760832 fd Linux raid
autodetect
/dev/sda2 0 - 0 0 0 Empty
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
# sfdisk -l /dev/sdc
Disk /dev/sdc: 121601 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdc1 0+ 121601- 121602- 976760832 fd Linux raid
autodetect
/dev/sdc2 0 - 0 0 0 Empty
/dev/sdc3 0 - 0 0 0 Empty
/dev/sdc4 0 - 0 0 0 Empty
# cat /proc/mdstat
Personalities : [raid1]
md0 : active (auto-read-only) raid1 sda1[0] sdc1[1]
976629760 blocks super 1.2 [2/2] [UU]
bitmap: 0/8 pages [0KB], 65536KB chunk
编辑 8:RAID 被安装为自动只读。与我最初在这里写的相反,我不必将其设置为读写,它会在需要时自动进行读写,如所解释的这里。
LVM
# aptitude install lvm2
# pvscan
No matching physical volumes found
# lvscan
No volume groups found
恢复配置文件
我没有 lvm 配置文件的任何备份(我不知道我需要)。
下列的使用 Knoppix Linux LiveCD 从 RAID1 LVM 分区恢复数据。
这个想法是读取 LVM 分区的开头来查找 LVM 配置文件。
# dd if=/dev/md0 bs=512 count=4096 skip=1 of=/tmp/md0-raw-start
# vi /tmp/md0-raw-start
在那里找到配置文件。摆脱二进制文件和旧的配置版本。
这是我得到的结果(vg、lv……确实是我在配置 LVM 时使用的名称):
# Generated by LVM2 version 2.02.111(2) (2014-09-01): Sun Jun 21 18:12:39 2015
contents = "Text Format Volume Group"
version = 1
description = ""
creation_host = "bouzin" # Linux bouzin 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64
creation_time = 1434910359 # Sun Jun 21 18:12:39 2015
vg {
id = "Yxknle-OEes-hihh-tWCt-QBxC-JtP9-bl360E"
seqno = 8
format = "lvm2"
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 8192
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm"
device = "/dev/md0"
status = ["ALLOCATABLE"]
flags = []
dev_size = 1953259520
pe_start = 2048
pe_count = 238434
}
}
logical_volumes {
lv0 {
id = "AwliYc-HczW-LZ1x-czpO-YZOJ-sr7k-T13HUf"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910352
segment_count = 1
segment1 {
start_extent = 0
extent_count = 953
type = "striped"
stripe_count = 1
stripes = [
"pv0", 0
]
}
}
lv1 {
id = "Ec1tN2-WKaf-v2if-lAu2-MfiI-1hkE-XyKFGI"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910359
segment_count = 1
segment1 {
start_extent = 0
extent_count = 7152
type = "striped"
stripe_count = 1
stripes = [
"pv0", 953
]
}
}
lv2 {
id = "gFWdEh-7HUJ-zwX1-nqEU-DomC-tdfW-ZGChNw"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910366
segment_count = 1
segment1 {
start_extent = 0
extent_count = 230329
type = "striped"
stripe_count = 1
stripes = [
"pv0", 8105
]
}
}
}
}
这确认我按以下顺序设置分区:
swap
/
/home
编辑2:重要说明
与我链接到的页面中显示的内容相反,不要错过之前的几行vg {
,尤其是contents = ...
,否则您会得到
`Can't process text format file - missing contents field.`
使用时出错vgcfgrestore
。
使用恢复的配置文件
在 lvm 配置目录中安装恢复的配置文件并启动 lvm。
# mkdir /etc/lvm/backup
# cp /tmp/md0-raw-start /etc/lvm/backup/vg
# systemctl start lvm2
# systemctl status lvm2
● lvm2-activation.service - Activation of LVM2 logical volumes
Loaded: loaded (/lib/systemd/system/lvm2-activation.service; enabled)
Active: inactive (dead) since Thu 2016-01-21 20:37:42 UTC; 4s ago
Docs: man:lvm(8)
man:vgchange(8)
Process: 22212 ExecStart=/sbin/lvm vgchange -aay --sysinit
(code=exited, status=0/SUCCESS)
Main PID: 22212 (code=exited, status=0/SUCCESS)
Jan 21 20:37:42 debian lvm[22212]: No volume groups found
问题就在这里。No volume groups found
。
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
没有。
# vgcfgrestore vg
Couldn't find device with uuid gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm.
Cannot restore Volume Group vg with 1 PVs marked as missing.
Restore failed.
由于我识别并修复了恢复的 lvm 配置文件中缺失的行(请参阅上面的编辑 2),因此此错误消息vgcfgrestore
更加明确。
不过,我该去哪里呢?
分区表被删除了?
回到数组的描述:
# file -s /dev/{md0,sda,sdc}
/dev/md0: DOS/MBR boot sector
/dev/sda: DOS/MBR boot sector
/dev/sdc: DOS/MBR boot sector
从另一个帖子在这里,我期望这样的事情:
$ file -s /dev/{sde1,md2}
/dev/sde1: LVM2 (Linux Logical Volume Manager) , UUID:
ZK8IfBzUHPH5befvm5CZ81oIXHm11TG
/dev/md2: LVM2 (Linux Logical Volume Manager) , UUID:
ZK8IfBzUHPH5befvm5CZ81oIXHm11TG
在出现此问题之前上次启动时,我安装了使用 USB 记忆棒的 Linux Mint在另一台计算机上,使用该计算机创建可启动驱动器。我使用 GParted 将“混合”.iso 复制到棒上,dd
然后在将其格式化回 FAT32 时遇到问题。我想我尝试了一些fdisk
然后最终放弃了。
fdisk
想想看,很可能是我使用了错误的方法搞乱了我的系统/dev
。我不太清楚我做了什么,但这可能是一个线索。我想不出其他什么了。该系统是 Debian Jessie,具有无人值守升级功能,但我不认为自动更新可以做到这一点。
请注意,分区从交换开始,因此擦除开头可能不如从重要文件开始那么重要。
有人可以确认DOS/MBR boot sector
这就是问题所在并且可能是由于 USB 记忆棒分区错误造成的吗?
最重要的是,知道如何解决这个问题吗?
(我每天都会备份驱动器上的大多数重要文件。为了理解,我想解决这个问题,并且因为我想检查我可能会错过备份的文件。)
指示这里可能适用,但在继续之前我希望了解更多细节,因为我有点不清楚。
编辑1:测试磁盘选项
有人建议放弃分区表恢复而是使用Testdisk恢复数据。在尝试任何英勇的操作之前,我可能会尝试以这种方式备份现有数据pvcreate
。
FWIW,这是 Testdisk 的输出。
分析
Disk /dev/md0 - 1000 GB / 931 GiB - CHS 244157440 2 4
Current partition structure:
Partition Start End Size in sectors
No partition is bootable
快速搜索
Disk /dev/md0 - 1000 GB / 931 GiB - CHS 244157440 2 4
Partition Start End Size in sectors
* Linux Swap 255 0 1 256 1 4 16
P Linux 976128 0 1 8299775 1 4 58589184
P Linux 8299776 0 1 244156671 1 4 1886855168
SWAP2 version 0, pagesize=8192, 8192 B
ext4 blocksize=4096 Large file Sparse superblock, 29 GB / 27 GiB
ext4 blocksize=4096 Large file Sparse superblock, 966 GB / 899 GiB
编辑2:pvcreate选项
这里又出现了错误消息。
# vgcfgrestore vg
Couldn't find device with uuid gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm.
现在,跟随这个建议,我应该尝试这个吗?
dd if=/dev/zero count=1 of=/dev/md0
pvcreate --uuid gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm --norestorefile
vcfgrestore
我很确定就是这样,但我希望得到确认。
编辑3:症状
我忘了提及启动时收到的错误消息。
第一次重启,我遇到了这个错误:
error: disk `lvmid/Yxknle-OEes-...` not found.
Entering rescue mode...
grub rescue> ls
(hd0) (hdO,msdos1), (hd1) (hd1,msdos1) (hd2) (hd2,msdos2) (md/0)
然后我尝试删除一张磁盘。不用找了。然后另一个错误发生了变化,我现在一直遇到这个新错误:
error: file `/boot/grub/i386-pc/normal.mod` not found.
编辑4:strace pvscan
# strace -e trace=open pvscan 2>&1 | grep /dev/md
open("/dev/md0", O_RDONLY|O_DIRECT|O_NOATIME) = 3
open("/dev/md0", O_RDONLY) = 5
open("/dev/md0", O_RDONLY) = 3
open("/dev/md0", O_RDONLY|O_DIRECT|O_NOATIME) = 3
open("/dev/md0", O_RDONLY|O_DIRECT|O_NOATIME) = 3
编辑5:lvm备份文件恢复
使用 Testdisk,我成功地掌握了/etc/lvm/backup/vg
.
# Generated by LVM2 version 2.02.111(2) (2014-09-01): Sun Jun 21 20:19:54 2015
contents = "Text Format Volume Group"
version = 1
description = "Created *after* executing 'vgcfgbackup'"
creation_host = "bouzin" # Linux bouzin 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64
creation_time = 1434910794 # Sun Jun 21 20:19:54 2015
vg {
id = "Yxknle-OEes-hihh-tWCt-QBxC-JtP9-bl360E"
seqno = 8
format = "lvm2" # informational
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 8192 # 4 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm"
device = "/dev/md0" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 1953259520 # 931,387 Gigabytes
pe_start = 2048
pe_count = 238434 # 931,383 Gigabytes
}
}
logical_volumes {
lv0 {
id = "AwliYc-HczW-LZ1x-czpO-YZOJ-sr7k-T13HUf"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910352 # 2015-06-21 20:12:32 +0200
segment_count = 1
segment1 {
start_extent = 0
extent_count = 953 # 3,72266 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
lv1 {
id = "Ec1tN2-WKaf-v2if-lAu2-MfiI-1hkE-XyKFGI"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910359 # 2015-06-21 20:12:39 +0200
segment_count = 1
segment1 {
start_extent = 0
extent_count = 7152 # 27,9375 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 953
]
}
}
lv2 {
id = "gFWdEh-7HUJ-zwX1-nqEU-DomC-tdfW-ZGChNw"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "bouzin"
creation_time = 1434910366 # 2015-06-21 20:12:46 +0200
segment_count = 1
segment1 {
start_extent = 0
extent_count = 230329 # 899,723 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 8105
]
}
}
}
}
它与我恢复的内容相同,只是它有注释。
编辑6:尝试创建物理卷
从上面可以看出,/dev/md0
大小为 976629760 kB。
# dd if=/dev/md0 of=/media/user/bak/copy_lvm/start bs=1M count=1
# dd if=/dev/md0 of=/media/user/bak/copy_lvm/end bs=1M count=1 skip=953739
(希望我使用dd
正确。)
不知道应该如何使用pvcreate
:
# pvcreate --uuid gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm --norestorefile
Can only set uuid on one volume at once
Run `pvcreate --help' for more information.
# pvcreate --uuid gUyTdb-rc7j-rJh0-B2EZ-ebb7-mf77-KBgNWm --norestorefile /dev/md0
Can't open /dev/md0 exclusively. Mounted filesystem?
我尝试将数组设置为读写。
# mdadm --readwrite /dev/md0
mdadm: failed to set writable for /dev/md0: Device or resource busy
我不知道为什么很忙。lsof
什么也不产生。
# lsof /dev/md0
编辑7:再次测试磁盘
感谢 Testdisk,我成功备份了没有自动备份的文件。现在我应该安全了。这只是为了保存系统以避免从头开始重新安装。 (我什至复制了/等)
Testdisk 还可以进行分区检测和分区表修复。它检测到我的分区(见上文),但表明交换区是可引导分区。我把它改成了持有系统的那个。也许幕后还发生了一些 Testdisk 欺骗行为。不管怎样,我点击了“写入”,然后重新启动。
重启时仍然出现同样的错误:
error: file `/boot/grub/i386-pc/normal.mod` not found.
不过,有个好消息:在 Debian Live 上启动时,阵列会自动组装并且 LVM 会被识别。我可以浏览分区。
我还可以检查它/boot/grub/i386-pc/normal.mod
应该在哪里。 (它是二进制的,所以我无法检查其中的内容。)
哦,我还检查了 root 的 bash 历史记录,但没有找到会导致这种混乱的命令。我在 上使用了 fdisk /dev/sdh
,但没有使用/dev/sda
或/dev/sdc
错误地使用了 fdisk。不过,可以与 GParted 一起使用。
编辑8:RAID和LVM状态
由于事情已经发生变化,我想我会再次尝试这些命令。
# mdadm --examine /dev/md0
/dev/md0:
MBR Magic : aa55
Partition[0] : 16 sectors at 2040 (type 82)
Partition[1] : 58589184 sectors at 7809024 (type 83)
Partition[2] : 1886855168 sectors at 66398208 (type 83)
# file -s /dev/{md0,sda,sdc}
/dev/md0: DOS/MBR boot sector; partition 1 : ID=0x82, start-CHS (0xff,0,1), end-CHS (0x10,1,4), startsector 2040, 16 sectors; partition 2 : ID=0x83, active, start-CHS (0x3ff,1,4), end-CHS (0x3ff,1,4), startsector 7809024, 58589184 sectors; partition 3 : ID=0x83, start-CHS (0x3ff,1,4), end-CHS (0x3ff,1,4), startsector 66398208, 1886855168 sectors
/dev/sda: DOS/MBR boot sector
/dev/sdc: DOS/MBR boot sector
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 21 18:04:33 2015
Raid Level : raid1
Array Size : 976629760 (931.39 GiB 1000.07 GB)
Used Dev Size : 976629760 (931.39 GiB 1000.07 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sat Jan 23 21:43:23 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : bouzin:0
UUID : 102b07b8:703e4597:574b2ecf:880a1aee
Events : 4355
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 33 1 active sync /dev/sdc1
# fdisk -l /dev/md0
Disk /dev/md0: 931.4 GiB, 1000068874240 bytes, 1953259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x9c0ff432
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2040 2055 16 8K 82 Linux swap / Solaris
/dev/md0p2 * 7809024 66398207 58589184 28G 83 Linux
/dev/md0p3 66398208 1953253375 1886855168 899.7G 83 Linux
# sfdisk -l /dev/md0
Disk /dev/md0: 244157440 cylinders, 2 heads, 4 sectors/track
Units: cylinders of 4096 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/md0p1 255 256 2 8 82 Linux swap / Solaris
/dev/md0p2 * 976128 8299775 7323648 29294592 83 Linux
/dev/md0p3 8299776 244156671 235856896 943427584 83 Linux
/dev/md0p4 0 - 0 0 0 Empty
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdc1[1]
976629760 blocks super 1.2 [2/2] [UU]
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
我想我开始理解你的疑虑了。看起来RAID ( /dev/md0
) 是在没有LVM 的情况下进行分区的。不过,这会让人感到惊讶,因为我记得创建了 LVM,而且我发现的配置文件也证实了这一点。
难道是 Testdisk 忽略了 LVM,然后直接写入分区表来/dev/md0
分流 LVM(如果这有意义的话)?
编辑9:我的LVM在哪里
FWIW,我重新启动,仍然在 Debian Live 上,安装 mdadm 后,即使在安装 lvm2 之前,raid 也会自动组装(只有 liblvm2app2.2 是)。这是否意味着LVM已经“消失”了?
# dmsetup ls
No devices found
# pvscan
No matching physical volumes found
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
编辑10:Grub修复
让我们假设文件系统/LVM 工作正常并关注 Grub 错误。
按照网上的建议,我尝试了这个grub-install
# mount /dev/md0p2 /mnt
# grub-install --root-directory=/mnt /dev/md0
The file /mnt/boot/grub/stage1 not read correctly.
该分区被识别为Linux:
# fdisk -l /dev/md0
Disk /dev/md0: 931.4 GiB, 1000068874240 bytes, 1953259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x9c0ff432
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2040 2055 16 8K 82 Linux swap / Solaris
/dev/md0p2 * 7809024 66398207 58589184 28G 83 Linux
/dev/md0p3 66398208 1953253375 1886855168 899.7G 83 Linux
# tune2fs -l /dev/md0p2 | grep -i 'inode size'
Inode size: 256
我没有看到索引节点大小会发生变化的任何原因,所以我不确定我应该关心。
我被困住了。
分区表显示了一个奇怪的交换大小。也许我搞砸了这个分区,Testdisk 的检测不正确,它写入了我们在这里看到的错误表。无论如何,情况还不错。我想我可以在需要时随时更改它。
gparted 显示以下内容:
Partition File System Mount Point Size Flags
/dev/md0p1 8 KiB
unallocated unallocated 3.72 GiB
/dev/md0p2 ext4 /mnt 27.94 GiB boot
/dev/md0p3 ext4 899.72 GiB
unallocated unallocated 3.72 GiB
看起来我的 /home 分区 (/dev/md0p3) 的末尾不知何故被切断了。
没有提到 LVM。
我应该重新创建 /dev/md0p1 作为交换添加靠近它的未分配空间(并忘记最后丢失的 4 GB),还是在这里使用 gparted 只会让事情变得更糟?
在这种情况下,使用 LVM 并不是很重要。 1 TB 磁盘允许我为系统预留 30 GB 的空间,但仅使用了 5 GB。我不介意在此过程中丢失 LVM,除非最终设置损坏。
编辑 11:保存数据,放弃文件系统
此时,我能够在另一个磁盘上安装/home
并etc
保留rsync
权限和所有内容,因此从头开始重新安装并不是真正的问题。
如果我明白发生了什么,我会很高兴,但花费数小时修复 LVM 最终得到一个我无法完全理解和信任的设置,这并不是一个好的举动,所以我决定从头开始重新安装。
我可以使用 Debian 安装程序在阵列上重新安装,但在启动时会出现相同的错误。我不得不与安装程序斗争以销毁并重新创建阵列,最终一切顺利。
另一个教训。从现在开始,我将进行更多备份。为了备份/home
,我rsync
把它放在另一个磁盘上。要保存/etc
和打包列表,这是我在工作中所做的:
我使用etckeeper
version /etc
,然后将其克隆到另一个驱动器上。我用来apt-clone
保存已安装软件包的列表。
#!/bin/sh
#
# Script to clone installation
#
DEST_DIR=/mnt/backup_drive
# Apt clone
apt-clone clone $DEST_DIR/apt-clone/apt-clone-$(lsb_release -si)-$(lsb_release -sc)-$(lsb_release -sr)-$(date +%F).tar.gz
# Git clone /etc
cd $DEST_DIR/etc; git pull --quiet
答案1
你的信息是矛盾的。/dev/md0
不能同时是 PV 和分区表。file
会识别PV。似乎md0
已分区,因此 LVM 卷相当于/dev/md0p1
或/dev/md0p2
。
也许由于某种原因pvscan
/vgscan
忽略/dev/md0
/ /dev/md0p1
(因此 LVM 无法找到 UUID)。您可以运行pvscan
以下strace
命令来检查扫描了哪些块设备:
strace -e trace=open pvscan 2>&1 | grep /dev/md