我正在运行 Debian 9 mdadm
,上面有 RAID 1。以前两个硬盘都可以启动操作系统,现在只有一个可以。
我最近遇到了一个故障磁盘,需要更换,所以我就更换了它。
首先,我跑了
mdadm --add /dev/md0 /dev/sda
效果很好。之后我立即跑
grub-install /dev/sda
这给了我以下输出:
Installing for i386-pc platform.
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: error: unable to identify a filesystem in hd0; safety check can't be performed.
这是我的输出lsblk
:
sda 8:0 0 447.1G 0 disk
└─md0 9:0 0 232.8G 0 raid1
├─md0p1 259:0 0 14.9G 0 md [SWAP]
├─md0p2 259:1 0 1K 0 md
├─md0p3 259:2 0 216G 0 md /
└─md0p5 259:3 0 1.9G 0 md /boot
sdb 8:16 0 5.5T 0 disk
├─sdb1 8:17 0 5.5T 0 part
└─sdb9 8:25 0 8M 0 part
sdc 8:32 0 5.5T 0 disk
├─sdc1 8:33 0 5.5T 0 part
└─sdc9 8:41 0 8M 0 part
sdd 8:48 0 232.9G 0 disk
└─sdd1 8:49 0 232.9G 0 part
└─md0 9:0 0 232.8G 0 raid1
├─md0p1 259:0 0 14.9G 0 md [SWAP]
├─md0p2 259:1 0 1K 0 md
├─md0p3 259:2 0 216G 0 md /
└─md0p5 259:3 0 1.9G 0 md /boot
下面是输出mdadm --detail /dev/md0
:
/dev/md0:
Version : 1.2
Creation Time : Wed Dec 12 15:26:35 2018
Raid Level : raid1
Array Size : 244066304 (232.76 GiB 249.92 GB)
Used Dev Size : 244066304 (232.76 GiB 249.92 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Thu May 28 18:59:51 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : localserver:0 (local to host localserver)
UUID : 83d5a386:66110e10:e5f3c600:734423a8
Events : 5339803
Number Major Minor RaidDevice State
2 8 0 0 active sync /dev/sda
1 8 49 1 active sync /dev/sdd1
我尝试过只使用 进行启动/dev/sda
,但无济于事。我还尝试过blockdev --flushbufs /dev/sda
按照某些人的建议运行 ,但无济于事。
跑步时分区我可以看到/dev/sdd1
有旗帜引导和袭击,而/dev/sda
没有。我还看到 的/dev/sda
第一个扇区从 0 开始,而/dev/sdd1
的从 2048 开始。
有人能建议我解决这个问题的方法吗?
我不介意卸下“奇怪的”硬盘、将其格式化并重新连接。
答案1
好的 - 这就是我解决问题的方法。/dev/sdd
有一个名为的分区/dev/sdd1
,扇区从 2048 开始,这个事实很有帮助。
这Arch Wiki 上的 wikiarticle 也非常有帮助。关键是要让两个分区以完全相同的方式进行分区。
- 让我们从软件磁盘阵列中移除不允许安装 GRUB 的磁盘:
mdadm --fail /dev/md0 /dev/sda
mdadm --remove /dev/md0 /dev/sda
- 接下来是神奇的部分。使用
sfdisk
,让我们保存工作磁盘的分区信息,然后对有问题的磁盘重新分区:
sfdisk -d /dev/sdd > raidinfo-partitions.sdd
sfdisk /dev/sda < raidinfo-partitions.sdd
瞧!
- 让我们将磁盘重新添加到我们的软件 RAID 阵列:
mdadm --add /dev/md0 /dev/sda1
- 最后,当两个驱动器同步后,让我们安装 grub:
grub-install /dev/sda