Nic*_*lin 14 lvm raid uefi system-installation 18.04
我有一台带有 UEFI BIOS 的机器。我想安装带有 RAID 1(和 LVM)的桌面版 Ubuntu 18.04,这样即使其中一个驱动器出现故障,我的系统也能继续工作。我还没有找到如何做到这一点的 HOWTO。桌面安装程序不支持 RAID。这个问题的答案几乎有效,但需要一些 GRUB shell/rescue USB 磁盘和 UEFI 设置魔法。有没有人知道没有魔法部分的程序?
Nic*_*lin 22
从一些帮助如何安装带有UEFI和RAID1 + LVM Ubuntu的服务器,RAID在Ubuntu 18.04成立,并支持RAID在Ubuntu 18.04桌面安装?以及如何在启动时摆脱“扫描 btrfs 文件系统”?,我设法仅使用 linux 命令组合了一个有效的 HOWTO。
btrfs引导脚本。Install Ubuntu Server。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。
检查安装了哪个 EFI 分区。最有可能/dev/sda1。
坐骑 | 启动
检查 RAID 状态。很可能是同步。
猫 /proc/mdstat
引导加载的 EFI 应该已安装在/dev/sda1. 由于该分区不是通过 RAID 系统镜像的,我们需要克隆它。
sudo dd if=/dev/sda1 of=/dev/sdb1
Run Code Online (Sandbox Code Playgroud)
这一步可能不是必需的,因为如果任一驱动器死机,系统应该从(相同的)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它们是引导顺序中的前两个。如果您想尝试物理移除或禁用任何驱动器来测试您的安装,您必须首先等待 RAID 同步完成!使用 监视进度cat /proc/mdstat但是,您可以在等待期间执行下面的第 8 步。
如果一个驱动器出现故障(同步完成后),系统仍将启动。但是,引导序列将花费大量时间寻找 btrfs 文件系统。要删除不必要的等待,请运行
sudo apt-get purge btrfs-progs
Run Code Online (Sandbox Code Playgroud)
这应该删除btrfs-progs,btrfs-tools和ubuntu-server。最后一个包只是一个元包,所以如果没有更多的包被列出来删除,你应该没问题。
运行sudo apt install ubuntu-desktop以安装桌面版。之后,同步可能已完成并且您的系统已配置好并且应该可以在磁盘故障时幸免于难!
grub-efi-amd64更新包时,EFI 分区上的文件(安装在/boot/efi)可能会更改。在这种情况下,必须手动将更新克隆到镜像分区。幸运的是,您应该会收到grub-efi-amd64即将更新的更新管理器的警告,这样您就不必在每次更新后进行检查。
如果更新后您还没有重新启动,请使用
mount | grep boot
Run Code Online (Sandbox Code Playgroud)
找出挂载的 EFI 分区。该分区通常/dev/sdb1应用作克隆源。
创建挂载点并挂载两个分区:
sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1
Run Code Online (Sandbox Code Playgroud)
在每棵树中查找最新文件的时间戳
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
Run Code Online (Sandbox Code Playgroud)
比较时间戳
cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'
Run Code Online (Sandbox Code Playgroud)
应该打印/dev/sdb1 is newest(最有可能)或/dev/sda1 is newest. 该分区应用作克隆源。
在克隆之前卸载分区以避免缓存/分区不一致。
sudo umount /tmp/sda1 /tmp/sdb1
Run Code Online (Sandbox Code Playgroud)
如果/dev/sdb1是克隆源:
sudo dd if=/dev/sdb1 of=/dev/sda1
Run Code Online (Sandbox Code Playgroud)
如果/dev/sda1是克隆源:
sudo dd if=/dev/sda1 of=/dev/sdb1
Run Code Online (Sandbox Code Playgroud)
完毕!
如果您想先在虚拟机中尝试此操作,有一些注意事项:显然,保存 UEFI 信息的 NVRAM 会在重新启动之间被记住,但不会在关闭-重新启动周期之间被记住。在这种情况下,您可能最终会进入 UEFI Shell 控制台。以下命令应该从/dev/sda1(FS1:用于/dev/sdb1)引导您进入您的机器:
FS0:
\EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)
在 virtualbox中UEFI 启动的最佳答案中的第一个解决方案- Ubuntu 12.04也可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
62018 次 |
| 最近记录: |