在 VirtualBox 中通过 USB 安装 Ubuntu

在 VirtualBox 中通过 USB 安装 Ubuntu

为了测试 Btrfs-RAID1 的稳定性,我想在 Virtualbox 中在两个 USB 记忆棒上安装 Ubuntu。

我想要实现的目标:

  • 拥有一个基于 btrfs 的 RAID1 系统,可在任意一个 USB 驱动器上启动。我使用 15.04 amd64 映像。

我现在陷入困境的地方:

  • 我可以在单个 USB 上顺利安装和启动它。每当我尝试添加第二个 USB 棒,在 Ubuntu 中将其添加到 btrfs 池并将冗余级别更改为 RAID1 时,系统就会无法启动,显示“BTRFS:open_ctree 失败”,随后显示“mount:正在安装 /dev/disk/by-uuid/唯一唯一标识符/root 失败:参数无效”。

我已经尝试了至少十几次来正确设置它,但都没有成功。我尝试过的事情

  • 通过 USB 控制器传递 USB 记忆棒
  • 将原始 USB 磁盘作为虚拟 vmdk 传递到 SATA 或 IDE 控制器上
  • 使用整个磁盘作为单个 Btrfs 分区,带或不带分区表
  • 在 btrfs 分区前设置 biosgrub 分区和/或 '/boot'-ext4 分区
  • 仅使用“单一”冗余模式对一个存储棒进行分区,然后添加另一个存储棒

答案1

您具体使用了哪些命令?

通常,假设您的虚拟机中有两个可用的 USB 驱动器(大小相同),系统安装在第一个驱动器上,您可以执行以下操作:

启动实时系统,例如 Ubuntu 安装光盘。安装 Ubuntu 的第一个 USB 驱动器可能是 /dev/sda,第二个驱动器仍为空,可能是 /dev/sdb。我假设有一个单独的 /boot 分区 (sda1),并且您的 btrfs 文件系统位于 sda2 上,因此您想要创建一个与 RAID1 镜像相同的 sdb2。

将分区表复制到新的 USB 驱动器:dd if=/dev/sda of=/dev/sdb bs=512 count=1
新驱动器现在包含空分区,因此您有 /dev/sdb2。

sda (FIRST USB DRIVE)  <- your Ubuntu installation
  sda1 /boot           <- your Ubuntu boot partition
  sda2 /               <- your Ubuntu root partition
sdb (SECOND USB DRIVE) <- new usb drive, to be used for mirror
  sdb1                 <- empty fake copy of boot partition
  sdb2 (btrfs...)      <- will be second device in sda2 mirror

创建一个新的 btrfs 文件系统:(如有必要,mkfs.btrfs /dev/sdb2
请使用。)-f

使用 挂载旧的 btrfs 文件系统(应该转换为镜像)mount /dev/sda2 /mnt或重新启动实时系统并启动实际的 Ubuntu 系统(挂载点将是/而不是/mnt)。

将新分区作为第二个设备添加到您的 btrfs 文件系统:如果您已将其安装在其他地方(或者您已重新启动),btrfs device add /dev/sdb2 /mnt
请替换。 仔细检查(您应该获得 2 个分区的列表,sda2 和 sdb2 仍然是空的):/mnt
btrfs filesystem show /mnt

将您的 2 驱动器 btrfs 文件系统转变为镜像:btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

现在重新启动并查看会发生什么。btrfs fi show再次运行以确认 sda2 和 sdb2 已被使用。

请注意,/dev/sdb1 是一个空分区,大小与 /dev/sda1(您的启动分区)相同,但只要您仍然可以从 sda 启动,就无需复制它。对于完整复制,如果您的第二个 USB 驱动器应替换第一个 USB 驱动器,您也应该将 sda1 复制到 sdb1(dd 命令,见上文)。

相关内容