我正在尝试将我的根分区移动到基于 raid 的物理卷,但似乎失败了。
我使用的过程有些复杂,但那是因为我的托管服务提供商的安装能力非常有限,所以我无法从使用 lvm 在 raid 卷上创建的根文件系统开始。
为了测试我的情况,我在 VirtualBox 中创建了虚拟实例,有 4 个磁盘:
- /dev/sda-8GB
- /dev/sdb-8GB
- /dev/sdc-20GB
- /dev/sdd-20GB
并在那里安装了Linux(Debian 8.5)。最初,安装后,布局如下:
- /dev/sd[bcd] – 未分区,未使用
- /dev/sda - 有 1 个分区 (/dev/sda1),较小 (4GB),用作 LVM 的 PV
- 在这个 PV 上,我创建了 VG 和 LV,现在用作 /:
它看起来是这样的:
=# mount /
mount: /dev/mapper/vg-root is already mounted or / busy
=# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root vg -wi-ao---- 3.72g
=# vgs
VG #PV #LV #SN Attr VSize VFree
vg 1 1 0 wz--n- 3.72g 0
=# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 vg lvm2 a-- 3.72g 0
现在,我需要/想要的是在小磁盘和大磁盘上创建几个 raid,并将 / 放在它们上面。
因此,我首先创建分区。由于我需要重新分区 /dev/sda,因此它是中间布局,如下所示:
=# for a in /dev/sd[abcd]; do fdisk -l $a; done | grep ^/
/dev/sda1 * 2048 7813119 7811072 3.7G 8e Linux LVM
/dev/sdb1 2048 16777215 16775168 8G fd Linux raid autodetect
/dev/sdc1 2048 16777215 16775168 8G fd Linux raid autodetect
/dev/sdc2 16777216 41943039 25165824 12G fd Linux raid autodetect
/dev/sdd1 2048 16777215 16775168 8G fd Linux raid autodetect
/dev/sdd2 16777216 41943039 25165824 12G fd Linux raid autodetect
然后,我在 /dev/sd[cd]2 分区上创建 raid1:
=# mdadm -C /dev/md0 -l 1 --raid-devices 2 /dev/sd[cd]2
这使我成为 /dev/md0,我将使用它作为 / 文件系统的临时位置:
=# pvcreate /dev/md0
=# vgextend vg /dev/md0
=# pvmove /dev/sda1 /dev/md0
=# vgreduce vg /dev/sda1
=# pvremove /dev/sda1
此时,/dev/sda 是空闲的,所以我可以对其进行重新分区,以精确指定 /dev/sdb。(这一步不太重要,但只是为了完整性)。
现在,一切就绪,我更新 mdadm.conf:
=# mdadm --detail /dev/md0 --brief >> /etc/mdadm/mdadm.conf && update-initramfs -u
添加的这一行:
ARRAY /dev/md0 metadata=1.2 name=debian:0 UUID=55692d54:b0beedae:9d85bc20:324d7f9f
完成这些后,我重启系统,确保它能正常工作。但系统立即在 GRUB 上崩溃,并显示以下消息:
error: disk `lvmid/F9eO8I-PB9F-Dsli-ZOSY-rVA1-7a37-Faos46/1N3Ah7-wIjT-HFxc-MS9U-lAcw-tYZw-N7sRO8' not found.
Entering rescue mode...
grub rescue>
提示符中的 ls 显示:
(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (hd2) (hd2,msdos2) (hs2,msdos1) (hd3) (hd3,msdos2) (hd3,msdos1)
我做错了什么?我忘记了什么?
答案1
您需要更新您的 GRUB 并启动内核安装。
update-initramfs -u
此命令将更新您的启动内核配置以匹配系统的当前状态。
mdadm --detail --scan > /tmp/mdadm.conf
复制/tmp/mdadm.conf
内容以/etc/mdadm/mdadm.conf
替换任何先前的条目。这样 MD 设备配置信息将是正确的。
update-grub
这将更新 GRUB 配置,以便它了解新设备。
dpkg-reconfigure grub-pc
这会将 GRUB 安装到服务器的硬盘上。