为什么我的服务器在LVM内移动root fs后无法启动?

我试图把我的根分区移到基于物理卷的RAID上,而我似乎失败了。

我使用的程序有点复杂,但是这是因为我的托pipe服务提供商具有非常有限的安装能力,所以我无法使用在raid卷上使用lvm制作的根文件系统。

为了testing我的情况,我在VirtualBox中创build了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上,我创build了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 

现在,我需要/想要的是创build几个小型和大型磁盘袭击,并把他们。

所以,首先我创build分区。 由于我将需要重新分区/ 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分区上创buildraid1:

=#mdadm -C / dev / md0 -l 1 –raid-devices 2 / dev / sd [cd] 2

这使我/ dev / md0,我将用作/ filesystem的临时位置:

 =# 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) 

我做错了什么? 我忘了什么

您需要更新您的GRUB和引导内核安装。

  1. update-initramfs -u

该命令会更新您的引导内核configuration以匹配系统的当前状态。

  1. mdadm --detail --scan > /tmp/mdadm.conf

/tmp/mdadm.conf内容复制到/tmp/mdadm.conf ,replace以前的任何条目。 这样MD设备configuration信息将是正确的。

  1. update-grub

这将更新GRUBconfiguration,以便了解新设备。

  1. dpkg-reconfigure grub-pc

这会将GRUB安装到服务器上的硬盘上。