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


15

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

因此,我采用了UEFI进行安装的方式。

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

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

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

然后,我进行了设置:-使用两个磁盘RAID分区的RAID 1-RAID 1阵列上的LVM卷组-三个逻辑卷:/,/ home和swap

安装继续进行,但是在重新启动时,我得到了一个grub外壳并且被卡住了。

因此,是否可以在RAID1上的LVM上使用grub2-efi?如何实现这一目标?还有其他引导加载程序替代方法(从EFI直接进行Linux加载吗?)?等等...

Answers:


11

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

1)我可以在UEFI计算机上的RAID1上使用LVM吗?

当然是。即使两个磁盘之一发生故障,它也可以启动。

2)如何做到这一点?

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

这是一个工作过程:

1)在两个磁盘中的每个磁盘上手动创建以下分区:-带有UEFI类型的512MB分区-磁盘的开头-之后是RAID类型的分区

2)使用两个RAID分区创建RAID 1阵列,然后使用该阵列和逻辑卷创建LVM卷组(我为root创建了一个,为home创建了一个,为swap创建了一个)。

3)继续安装,然后重新启动。失败!您应该得到一个rub壳。

4)可能可以从grub外壳启动,但是我选择从应急USB磁盘启动。在救援模式下,我在目标根目录fs(即根lvm逻辑卷上的目录)上打开了一个shell。

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

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

7)为了能够从第二个磁盘启动,请将EFI分区复制到第二个磁盘:dd if = / dev / sda1 of = / dev / sdb1(以适合您的配置的方式更改sda或sdb)。

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

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


感谢您的详细过程。请您指出您的启动信息?(help.ubuntu.com/community/Boot-Info
LovinBuntu

@LovinBuntu这是从USB密钥开始的Boot-Info的输出:paste.ubuntu.com/6223137
alci

我失败了,但无法获得grub外壳。
彼得·劳里

4
我刚刚花了几天时间尝试遵循类似的步骤,主要是因为我很愚蠢,但是为了以防万一这可以帮助其他人避免同样的问题,我要提一下,您需要确保启动使用UEFI而非传统BIOS的实时USB。(我的MB在“自动”设置下,首选在传统模式下启动。我必须将其关闭-或手动选择启动EFI选项-才能使安装正常进行。)
Jonathan Y.

1
使用Ubuntu 16.04.1,这似乎不再是问题。我为RAID1设置了512MB EFI分区,一个SWAP和490GB RAID分区,并且在新的md设备上,我完全没有问题地安装了Ubuntu 16.04服务器。重新启动后,它完美无缺地启动了新系统,无需弄乱EFI分区,fstab等
。– nerdoc

4

我是一年多以前做的,虽然我确实有问题,但这里没有列出问题。我不确定在哪里可以找到我当时的建议,因此我将在这里发布我的建议。

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

2)创建1 GB / boot RAID1阵列,没有LVM

3)使用LVM创建大型RAID1阵列

将/ boot放在单独的分区/ RAID1阵列上可以解决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个磁盘中的任何一个磁盘时,我希望能够使计算机仍然启动。如果我仍然具有完全冗余,则我不介意以降级模式运行,这使我有时间在计算机仍处于启动状态时更换驱动器。

另外,如果我没有第二个RAID1阵列用于放置LXC容器以及基本上所有的数据库等,那么/ var一定要大得多。但是,将每个LXC作为自己的逻辑卷是一个不错的解决方案,可以防止一个VM /网站由于失控的错误日志而破坏另一个VM /网站。

最后一点,我从Ubuntu备用安装USB中安装了12.04.01(在12.04.02发行之前),并且一切正常。我的头撞了72个小时。

希望能帮助到别人!


1
grub2可以在没有/ boot分区的情况下直接在md上引导lvm,并且至少可以使用几年。
psusi 2014年

@psusi我希望您是对的,我的全新安装不会单独从第二个磁盘启动。所有的LVM,与jhaagsma的设置不同。
sjas,2015年

2

我有相同的探针,具有两个磁盘的efi引导和软件raid

/ dev / sda

  • / dev / sda1-200MB efi分区
  • / dev / sda2-20G物理突袭
  • / dev / sda3-980G物理突袭

/ dev / sdb

  • / dev / sdb1-200MB efi分区
  • / dev / sdb2-20G物理突袭
  • / dev / sdb3-980G物理突袭

交换/ dev / md0(sda2和sdb2)的根目录/ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.