AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1066028
Accepted
Niclas Börlin
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 2 个回答
  • 68064 Views

2 个回答

  • Voted
  1. 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。

    简而言之

    1. 下载备用服务器安装程序。
    2. 在 RAID 分区上使用手动分区、EFI + RAID 和 LVM 安装。
    3. 将 EFI 分区从已安装的分区克隆到另一个驱动器。
    4. 将第二个 EFI 分区安装到 UEFI 引导链中。
    5. 为避免在引导过程中长时间等待以防驱动器损坏,请删除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也可能会有所帮助。

    • 22
  2. 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 服务器

    这是我搞砸的方式

    1. 使 BIOS 处于“自动”模式,这使得 USB-Key 不能在 UEFI 模式下启动。这导致 Grub 没有正确安装。我将模式切换到仅 UEFI,重新启动并删除所有逻辑卷、raid 组和分区,然后重新开始。我进一步尝试在 EFI 分区上重新安装 grub,这只会让事情变得更糟。
    2. 让/boot分区位于 XFS 上。Ubuntu 18.04LTS 附带的 grub2 显然不能处理这个问题。尽管这在任何地方都没有记录。我创建了一个单独的 EXT-4/boot分区。请注意,这仍然在 RAID-1 LVM 卷上,而不是像 EFI 那样的单独分区!许多较旧的答案说这是不可能的,但现在似乎是这样。我最终得到了 grub,但得到了未知的文件系统错误(例如,如何修复“错误:未知文件系统。grub 救援>”),这给了我 XFS 的线索/boot作为一个不可行的。
    3. 在这中间的某个地方,我最终安装了 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

    • 3

相关问题

  • 如何在 Windows 7 中运行 Ubuntu?

  • 如何检查/修改预装系统上的 LVM 状态?

  • 您对台式机和家庭服务器的驱动器分区方案有什么建议?[关闭]

  • 安装时,我可以选择加密我的主文件夹——这是做什么的?

  • 在不使用标准升级系统的情况下升级有哪些替代方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve