如何使用UEFI和RAID1 + LVM安装Ubuntu服务器

我过去常常使用LVM通过软件RAID1安装我的服务器,并在两个驱动器的MBR上安装grub。 现在我有一个UEFI服务器,兼容性(BIOS)模式似乎不起作用。

所以我采用UEFI安装方式。

首次测试,单驱动器安装工作正常。

然后我尝试使用RAID1 + LVM进行安装。 我以同样的方式分配了我的两个驱动器:

  • 一个EFI系统分区,200MB
  • 物理RAID分区

然后我做了设置: – RAID 1使用两个磁盘RAID分区 – RAID 1arrays上的LVM卷组 – 三个逻辑卷:/,/ home和swap

安装继续进行,但重启后,我得到一个grub shell,我被卡住了。

那么,是否有可能让grub2-efi在LVM上通过RAID1工作? 实现这个目标的方法是什么? 是否有其他bootloader替代品(从EFI直接加载linux?)? 等等…

好的,我找到了解决方案,可以回答我自己的问题。

1)我可以在UEFI机器上使用LVM over RAID1吗?

当然是。 即使两个磁盘中的一个发生故障,它也能够启动。

2)怎么做?

这似乎是安装程序中的一个错误 ,因此只使用安装程序会导致启动失败(grub shell)。

这是一个工作程序:

1)在两个磁盘的每一个上手动创建以下分区: – 512MB分区,类型为UEFI,磁盘的开头 – 之后是RAID类型的分区

2)使用两个RAID分区创建RAID 1arrays,然后使用该arrays创建LVM卷组,并创建逻辑卷(我为root创建了一个,一个用于home,一个用于交换)。

3)让安装继续,然后重启。 失败! 你应该得到一个grub shell。

4)它可能从grub shell启动,但我选择从救援usb磁盘启动。 在救援模式下,我在目标根fs(即根lvm逻辑卷上的那个)上打开了一个shell。

5)使用’blkid’获取此目标根分区的UUID。 记下来或用手机拍照,下一步你需要它。

6)挂载EFI系统分区(’mount / boot / efi’)并编辑grub.cfg文件:vi /boot/efi/EFI/ubuntu/grub.cfg在这里,将错误的UUID替换为您在点上获得的错误UUID 5.保存。

7)能够从第二个磁盘启动,将EFI分区复制到第二个磁盘:dd if = / dev / sda1 = = dev / sdb1(根据您的配置更改sda或sdb)。

8)重新启动。 在UEFI设置屏幕中,将两个EFI分区设置为可引导,并设置引导顺序。

你完成了。 你可以测试,拔掉一个或另一个磁盘,它应该工作!

我自己做了一年多一点,虽然我确实有问题,但没有列出这里列出的问题。 我不确定我在哪里找到了我当时的建议,所以我会发布我在这里所做的事情。

1)在开始时创建128MB efi分区(其中只有一个将安装在/ boot / efi)

2)创建1 GB / boot RAID1arrays,无LVM

3)使用LVM创建大型RAID1arrays

将/ boot置于单独的分区/ RAID1arrays上可以解决efi分区无法找到适当问题的问题。

对于那些寻找更多细节的人,就像我当时一样,更准确地说,这就是我如何完成设置:

6x 3TB Drives Have 4 RAID arrays: /dev/md0 = 1GB RAID1 across 3 drives --> /boot (no LVM) /dev/md1 = 500GB RAID1 across 3 drives LVM: --> / = 40GB --> /var = 100GB --> /home = 335GB --> /tmp = 10GB /dev/md2 = 500GB RAID1 across 3 drives (for VM's/linux containers) LVM: --> /lxc/container1 = 50GB --> /lxc/container2 = 50GB --> /lxc/container3 = 50GB --> /lxc/container4 = 50GB --> /lxc/extra = 300GB (for more LXC's later) /dev/md3 = 10TB RAID6 across 6 drives (for media and such) --> /mnt/raid6 (no LVM) Disks are setup thus: /sda => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB) /sdb => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB) /sdc => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB) /sdd => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB) /sde => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB) /sdf => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB) 

注意只有一个/ boot / efi会实际安装,后两个是克隆; 我之所以这样做,是因为当丢失RAID1中的3个磁盘中的任何一个时,我能够让机器仍然启动。 如果我仍然有完全冗余,我不介意在降级模式下运行,这让我有时间在机器仍然运行时更换驱动器。

此外,如果我没有第二个RAID1arrays用于放置LXC容器以及基本上所有数据库等,那么/ var必须要大得多。 然而,将每个LXC作为其自己的逻辑卷是一个很好的解决方案,可防止一个VM /网站因失控错误日志而中断其他VM /网站,例如……

最后一点,我从Ubuntu Alternate Install USB安装了12.04.01(在12.04.02之前发布),一切都运行得很好。 在我的头撞击它72小时后。

希望能帮到别人!

我有相同的探测器,efi启动有两个磁盘和软件raid

/ dev / sda上

  • / dev / sda1 – 200MB efi分区
  • / dev / sda2 – 用于raid的20G物理
  • / dev / sda3 – 用于raid的980G物理

的/ dev / sdb的

  • / dev / sdb1 – 200MB efi分区
  • / dev / sdb2 – 针对raid的20G物理
  • / dev / sdb3 – 用于raid的980G物理

交换/ dev / md0(sda2和sdb2)root on / dev / md1(sda3&sdb3)

如果您输入grub-rescue shell,请使用以下命令启动:

 set root=(md/1) linux /boot/vmlinuz-3.8.0-29-generic root=/dev/md1 initrd /boot/initrd.img-3.8.0-29-generic boot 

之后,下载此补丁文件 – https://launchpadlibrarian.net/151342031/grub-install.diff (如https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229738所述 )

 cp /usr/sbi/grub-install /usr/sbi/grub-install.backup patch /usr/sbin/grub-install patch mount /dev/sda1 /boot/efi grub-install /dev/sda1 umount /dev/sda1 mount /dev/sdb1 /boot/efi grub-install /dev/sdb1 reboot