Niclas Börlin Asked: 2018-08-17 12:46:52 +0800 CST2018-08-17 12:46:52 +0800 CST 2018-08-17 12:46:52 +0800 CST 在具有 UEFI BIOS 的机器上安装具有 RAID 1 和 LVM 的 Ubuntu 18.04 桌面 772 我有一台带有 UEFI BIOS 的机器。我想安装带有 RAID 1(和 LVM)的桌面版 Ubuntu 18.04,这样即使其中一个驱动器出现故障,我的系统也能继续工作。我还没有找到如何做到这一点的HOWTO。桌面安装程序不支持 RAID。这个问题的答案几乎可以解决,但需要一些 GRUB shell/rescue USB 磁盘和 UEFI 设置魔法。有谁知道没有魔法部分的程序? system-installation lvm raid uefi 18.04 2 个回答 Voted Best Answer Niclas Börlin 2018-08-17T13:32:05+08:002018-08-17T13:32:05+08:00 在如何使用 UEFI 和 RAID1 + LVM 安装 Ubuntu 服务器、在Ubuntu 18.04 中设置RAID以及在 Ubuntu 18.04 桌面安装程序中支持 RAID 的一些帮助下?以及如何在启动时摆脱“扫描 btrfs 文件系统”?,我设法仅使用 linux 命令组合了一个有效的 HOWTO。 简而言之 下载备用服务器安装程序。 在 RAID 分区上使用手动分区、EFI + RAID 和 LVM 安装。 将 EFI 分区从已安装的分区克隆到另一个驱动器。 将第二个 EFI 分区安装到 UEFI 引导链中。 为避免在引导过程中长时间等待以防驱动器损坏,请删除btrfs引导脚本。 详细地 1.下载安装程序 从http://cdimage.ubuntu.com/ubuntu/releases/bionic/release/下载备用服务器安装程序 创建可引导 CD 或 USB 并从中引导新机器。 选择Install Ubuntu Server。 2.手动分区安装 在安装过程中,在Partition disks步骤中选择Manual。 如果磁盘包含任何分区,请将其删除。 如果驱动器上存在任何逻辑卷,请选择Configure the Logical Volume Manager。 选择Delete logical volume直到所有卷都被删除。 选择Delete volume group直到所有卷组都被删除。 如果存在任何 RAID 设备,请选择Configure software RAID。 选择Delete MD device直到所有 MD 设备都被删除。 通过选择它们并选择删除物理驱动器上的每个分区Delete the partition。 创建物理分区 在每个驱动器上,在磁盘的开头创建一个 512MB 的分区(我见过其他人使用 128MB),用作:EFI System Partition. 在每个驱动器上,创建一个具有“最大”大小的第二个分区,用作:Physical Volume for RAID。 设置 RAID 选择Configure software RAID。 选择Create MD device,键入RAID1,2 个活动磁盘,0 个备用磁盘,然后选择/dev/sda2和/dev/sdb2设备。 设置 LVM 选择Configure the Logical Volume Manager。 vg在/dev/md0设备上创建卷组。 创建逻辑卷,例如 swap16G root35G tmp10G var在 5G home200G 设置如何使用逻辑分区 对于swap分区,选择Use as: swap。 对于其他分区,请选择Use as: ext4正确的挂载点(分别为/、/tmp、/var、/home)。 选择Finish partitioning and write changes to disk。 允许安装程序完成并重新启动。 如果您要在之前具有 RAID 配置的驱动器上重新安装,则上述 RAID 创建步骤可能会失败,并且您永远无法获得md设备。在这种情况下,您可能必须创建一个 Ubuntu Live USB 记忆棒,启动它,运行gparted 以清除所有分区表,然后再重新启动此 HOWTO。 3.检查系统 检查已挂载的 EFI 分区。最有可能/dev/sda1。 安装 | grep 引导 检查 RAID 状态。很可能它正在同步。 猫 /proc/mdstat 4.克隆EFI分区 引导加载的 EFI 应该已安装在/dev/sda1. 由于该分区没有通过 RAID 系统镜像,我们需要克隆它。 sudo dd if=/dev/sda1 of=/dev/sdb1 5. 将第二个驱动器插入引导链 此步骤可能不是必需的,因为如果任一驱动器死机,系统应从(相同的)EFI 分区引导。但是,确保我们可以从任一磁盘引导似乎是谨慎的。 运行并注意引导条目efibootmgr -v的文件名。ubuntu在我的安装中是\EFI\ubuntu\shimx64.efi. 运行sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi。根据您的外壳,您可能必须转义反斜杠。 验证您的和引导项efibootmgr -v具有相同的文件名,并且它们是引导顺序中的前两个。ubuntuubuntu2 现在即使任何一个驱动器发生故障,系统也应该启动! 7. 等待 如果您想尝试物理移除或禁用任何驱动器来测试您的安装,您必须先等到 RAID 同步完成!使用监视进度cat /proc/mdstat但是,您可以在等待时执行下面的步骤 8。 8. 移除 BTRFS 如果一个驱动器发生故障(同步完成后),系统仍将启动。但是,引导顺序会花费大量时间寻找 btrfs 文件系统。要消除不必要的等待,请运行 sudo apt-get purge btrfs-progs 这应该删除btrfs-progs,btrfs-tools和ubuntu-server。最后一个包只是一个元包,所以如果没有更多的包被列出来删除,你应该没问题。 9.安装桌面版 运行sudo apt install ubuntu-desktop安装桌面版。之后,同步可能已完成,您的系统已配置好,应该可以在磁盘故障中幸免于难! 10. grub-efi-amd64更新后更新EFI分区 更新软件包时grub-efi-amd64,EFI 分区(安装在/boot/efi)上的文件可能会更改。在这种情况下,必须手动将更新克隆到镜像分区。幸运的是,您应该会收到grub-efi-amd64即将更新的更新管理器的警告,因此您不必在每次更新后进行检查。 10.1 查找克隆源,快捷方式 如果更新后没有重新启动,请使用 mount | grep boot 找出挂载的 EFI 分区。该分区通常/dev/sdb1应用作克隆源。 10.2 找出克隆源,偏执方式 创建挂载点并挂载两个分区: sudo mkdir /tmp/sda1 /tmp/sdb1 sudo mount /dev/sda1 /tmp/sda1 sudo mount /dev/sdb1 /tmp/sdb1 在每棵树中查找最新文件的时间戳 sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1 sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1 比较时间戳 cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"' 应该打印/dev/sdb1 is newest(很可能)或/dev/sda1 is newest. 该分区应用作克隆源。 在克隆之前卸载分区以避免缓存/分区不一致。 sudo umount /tmp/sda1 /tmp/sdb1 10.3 克隆 如果/dev/sdb1是克隆源: sudo dd if=/dev/sdb1 of=/dev/sda1 如果/dev/sda1是克隆源: sudo dd if=/dev/sda1 of=/dev/sdb1 完毕! 11. 虚拟机陷阱 如果您想先在虚拟机中进行尝试,有一些注意事项:显然,保存 UEFI 信息的 NVRAM 在重启之间会被记住,但不会在关机-重启周期之间被记住。在这种情况下,您可能最终会进入 UEFI Shell 控制台。以下命令应该从/dev/sda1(FS1:用于/dev/sdb1)引导您进入您的机器: FS0: \EFI\ubuntu\grubx64.efi 在 virtualbox中 UEFI 启动的最佳答案中的第一个解决方案- Ubuntu 12.04也可能会有所帮助。 maxslug 2018-10-24T22:00:32+08:002018-10-24T22:00:32+08:00 RAID-1 + XFS + UEFI 通过@Niclas Börlin 的回答,我能够完成大约 99% 的工作,谢谢! 我还从以下答案中获得了帮助: Ubuntu 17.04 无法在带有 XFS 系统分区的 UEFI 系统上启动 如何使用 UEFI 和 RAID1 + LVM 安装 Ubuntu 服务器 这是我搞砸的方式 使 BIOS 处于“自动”模式,这使得 USB-Key 不能在 UEFI 模式下启动。这导致 Grub 没有正确安装。我将模式切换到仅 UEFI,重新启动并删除所有逻辑卷、raid 组和分区,然后重新开始。我进一步尝试在 EFI 分区上重新安装 grub,这只会让事情变得更糟。 让/boot分区位于 XFS 上。Ubuntu 18.04LTS 附带的 grub2 显然不能处理这个问题。尽管这在任何地方都没有记录。我创建了一个单独的 EXT-4/boot分区。请注意,这仍然在 RAID-1 LVM 卷上,而不是像 EFI 那样的单独分区!许多较旧的答案说这是不可能的,但现在似乎是这样。我最终得到了 grub,但得到了未知的文件系统错误(例如,如何修复“错误:未知文件系统。grub 救援>”),这给了我 XFS 的线索/boot作为一个不可行的。 在这中间的某个地方,我最终安装了 grub,但是一个空白的 grub 提示,没有 grub 菜单。(例如https://help.ubuntu.com/community/Grub2/Troubleshooting#Specific_Troubleshooting)。这是由于/boot无法访问。 什么对我有用 从@Niclas Börlin 的回答开始,改变一些小事。 分区表 我喜欢一个大/分区,所以这反映了这种选择。主要变化是 EXT4/boot分区而不是 XFS 分区。 sda/ GPT 1M (auto-added) sda1 - EFI - 512M sda2 - MD0 - 3.5G sdb/ GPT 1M (auto-added) sdb1 - EFI - 512M sdb2 - MD0 - 3.5G md0/ vg/ boot - 1G - EXT4 /boot swap - 16G - SWAP root - rest - XFS / 完成安装后,我能够获得其他答案中详述的dd内容。我还能够使用详细说明将第二个驱动器添加到引导链中。sda1sdb2efibootmgr
在如何使用 UEFI 和 RAID1 + LVM 安装 Ubuntu 服务器、在Ubuntu 18.04 中设置RAID以及在 Ubuntu 18.04 桌面安装程序中支持 RAID 的一些帮助下?以及如何在启动时摆脱“扫描 btrfs 文件系统”?,我设法仅使用 linux 命令组合了一个有效的 HOWTO。
简而言之
btrfs
引导脚本。详细地
1.下载安装程序
Install Ubuntu Server
。2.手动分区安装
Partition disks
步骤中选择Manual
。Configure the Logical Volume Manager
。Delete logical volume
直到所有卷都被删除。Delete volume group
直到所有卷组都被删除。Configure software RAID
。Delete MD device
直到所有 MD 设备都被删除。Delete the partition
。EFI System Partition
.Physical Volume for RAID
。Configure software RAID
。Create MD device
,键入RAID1
,2 个活动磁盘,0 个备用磁盘,然后选择/dev/sda2
和/dev/sdb2
设备。Configure the Logical Volume Manager
。vg
在/dev/md0
设备上创建卷组。swap
16Groot
35Gtmp
10Gvar
在 5Ghome
200Gswap
分区,选择Use as: swap
。Use as: ext4
正确的挂载点(分别为/
、/tmp
、/var
、/home
)。Finish partitioning and write changes to disk
。如果您要在之前具有 RAID 配置的驱动器上重新安装,则上述 RAID 创建步骤可能会失败,并且您永远无法获得
md
设备。在这种情况下,您可能必须创建一个 Ubuntu Live USB 记忆棒,启动它,运行gparted
以清除所有分区表,然后再重新启动此 HOWTO。3.检查系统
检查已挂载的 EFI 分区。最有可能
/dev/sda1
。安装 | grep 引导
检查 RAID 状态。很可能它正在同步。
猫 /proc/mdstat
4.克隆EFI分区
引导加载的 EFI 应该已安装在
/dev/sda1
. 由于该分区没有通过 RAID 系统镜像,我们需要克隆它。5. 将第二个驱动器插入引导链
此步骤可能不是必需的,因为如果任一驱动器死机,系统应从(相同的)EFI 分区引导。但是,确保我们可以从任一磁盘引导似乎是谨慎的。
efibootmgr -v
的文件名。ubuntu
在我的安装中是\EFI\ubuntu\shimx64.efi
.sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi
。根据您的外壳,您可能必须转义反斜杠。efibootmgr -v
具有相同的文件名,并且它们是引导顺序中的前两个。ubuntu
ubuntu2
7. 等待
如果您想尝试物理移除或禁用任何驱动器来测试您的安装,您必须先等到 RAID 同步完成!使用监视进度
cat /proc/mdstat
但是,您可以在等待时执行下面的步骤 8。8. 移除 BTRFS
如果一个驱动器发生故障(同步完成后),系统仍将启动。但是,引导顺序会花费大量时间寻找 btrfs 文件系统。要消除不必要的等待,请运行
这应该删除
btrfs-progs
,btrfs-tools
和ubuntu-server
。最后一个包只是一个元包,所以如果没有更多的包被列出来删除,你应该没问题。9.安装桌面版
运行
sudo apt install ubuntu-desktop
安装桌面版。之后,同步可能已完成,您的系统已配置好,应该可以在磁盘故障中幸免于难!10. grub-efi-amd64更新后更新EFI分区
更新软件包时
grub-efi-amd64
,EFI 分区(安装在/boot/efi
)上的文件可能会更改。在这种情况下,必须手动将更新克隆到镜像分区。幸运的是,您应该会收到grub-efi-amd64
即将更新的更新管理器的警告,因此您不必在每次更新后进行检查。10.1 查找克隆源,快捷方式
如果更新后没有重新启动,请使用
找出挂载的 EFI 分区。该分区通常
/dev/sdb1
应用作克隆源。10.2 找出克隆源,偏执方式
创建挂载点并挂载两个分区:
在每棵树中查找最新文件的时间戳
比较时间戳
应该打印
/dev/sdb1 is newest
(很可能)或/dev/sda1 is newest
. 该分区应用作克隆源。在克隆之前卸载分区以避免缓存/分区不一致。
10.3 克隆
如果
/dev/sdb1
是克隆源:如果
/dev/sda1
是克隆源:完毕!
11. 虚拟机陷阱
如果您想先在虚拟机中进行尝试,有一些注意事项:显然,保存 UEFI 信息的 NVRAM 在重启之间会被记住,但不会在关机-重启周期之间被记住。在这种情况下,您可能最终会进入 UEFI Shell 控制台。以下命令应该从
/dev/sda1
(FS1:
用于/dev/sdb1
)引导您进入您的机器:在 virtualbox中 UEFI 启动的最佳答案中的第一个解决方案- Ubuntu 12.04也可能会有所帮助。
RAID-1 + XFS + UEFI
通过@Niclas Börlin 的回答,我能够完成大约 99% 的工作,谢谢!
我还从以下答案中获得了帮助:
这是我搞砸的方式
/boot
分区位于 XFS 上。Ubuntu 18.04LTS 附带的 grub2 显然不能处理这个问题。尽管这在任何地方都没有记录。我创建了一个单独的 EXT-4/boot
分区。请注意,这仍然在 RAID-1 LVM 卷上,而不是像 EFI 那样的单独分区!许多较旧的答案说这是不可能的,但现在似乎是这样。我最终得到了 grub,但得到了未知的文件系统错误(例如,如何修复“错误:未知文件系统。grub 救援>”),这给了我 XFS 的线索/boot
作为一个不可行的。/boot
无法访问。什么对我有用
从@Niclas Börlin 的回答开始,改变一些小事。
分区表
我喜欢一个大
/
分区,所以这反映了这种选择。主要变化是 EXT4/boot
分区而不是 XFS 分区。完成安装后,我能够获得其他答案中详述的
dd
内容。我还能够使用详细说明将第二个驱动器添加到引导链中。sda1
sdb2
efibootmgr