如何使用外部 SSD 为 VM 存储文件?

如何使用外部 SSD 为 VM 存储文件?

在此处输入图片描述

我正在使用外部 SSD 来exfat存储我的虚拟机的文件。我正在使用工具 virt manager 来管理它。

当尝试将虚拟机存储在 SSD 上时,我收到此消息:“模拟器可能没有该路径的搜索权限”。

所以我尝试了 sudo virt-manager。这个方法奏效了。

尝试将文件写入外部硬盘后,我发现我没有写入权限。因此我尝试:

sudo mount -o remount,uid1000,gid1000,rw /dev/sda1

收到错误后:

/dev/sda1: mount point not mounted or bad option.
dmesg(1) may have more information after failed mount system call.

有人可以帮我吗?

文件内容/etc/fstab

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=E9FD-8605  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1
/boot/efi/grub  /boot/grub  none    defaults,bind   0   0
UUID=8d091d18-ed63-46fd-b343-f6ef2213d433   none    swap    sw  0   0

使用 sudo mkfs -t ext4 /dev/sda 重新格式化整个外部驱动器

然后我尝试:sudo mount -o remount,uid1000,gid1000,rw /dev/sda

并收到消息:mount:

/media/alexander/64713888-76cb-4409-96b2-9685a120f63e: mount point not mounted or bad option.
dmesg(1) may have more information after failed mount system call.

下载的新 ISO 文件将存储在 SSD 上并重试。

更新在此处输入图片描述

将它连接到我的 MacBook 上(在构建 PC 之前,我使用 parallels 并在同一个 SSD 上运行带有 parallels 的 Windows,在该 SSD 上我使用 hyper-v 运行多个虚拟机。)所以现在我正在执行安全擦除重新分区到 ex fat。之后我将把它重新连接到 Ubuntu,将其重新分区为 ext4,并在我再次将 ISO 下载到新分区的 SSD 中的文件夹后提供更新。

答案1

问题

当 QEMU/KVM 运行时,它以名为 的特殊用户身份运行libvert。此用户必须能够读取和写ExFat到外部驱动器,特别是外部驱动器内部格式化的分区。

假设用户adam登录并将 USB 驱动器连接到 Ubuntu 计算机,Ubuntu 会挂载该 USB 驱动器中的分区,以便只有用户(adam在本例中)可以写入该分区。当libvert任何其他用户尝试写入或修改该分区中的文件时,都会失败。

解决方案

我曾在一个 32GB 的 ExFat 格式的 USB 闪存驱动器上尝试过此解决方案。我能够安装 Ubuntu 22.04 最小安装,并从 USB 驱动器运行 VM。然而,这是一个非常不寻常的设置,在大量测试下可能会崩溃。

1. 找到外部驱动器分区的 UUID

打开应用程序“磁盘”,然后单击左侧面板上的外部驱动器。然后单击主窗口上的主分区。您将看到类似以下屏幕截图的内容。记下分区的 UUID。在本例中,UUID 是6431-BACB

在此处输入图片描述

2. 创建新的挂载点

确保外部驱动器未插入。如果已插入,请卸载驱动器(分区)并在安全的情况下拔掉电源插头

打开终端并输入以下两个命令:

sudo mkdir -p /media/alexander/VM
sudo chmod 0777 /media/alexander/VM

用您的用户名更改alexander

VM第一个命令在里面创建文件夹/media/alexander/。第二个命令允许其他用户读取和写入此文件夹。您只需使用这些命令一次。

注意,通常/alexander/VM插入 USB 驱动器时会动态创建该文件夹。由于我们将停止此自动安装过程,因此我们需要手动创建此文件夹。如果您希望将此 USB 驱动器作为“根”安装,您可能需要创建不同的安装点,例如/media/VM/mnt/VM

3. 编辑/etc/fstab

/etc/fstab使用以下命令打开文件:

sudo gedit /etc/fstab

转到文件底部并添加以下行:

# The next line is for the external VM Drive
UUID=6431-BACB  /media/32GBExFat exfat user,uid=1000,umask=000,utf8,noauto,nofail 0 0

确保包含 VM 相关文件的外部驱动器分区的 UUID 正确。

我假设您是这台计算机的第一个也是唯一的用户。如果您的 UID 不是 1000,则必须在上面的命令中更改它。该分区将使用您的凭据挂载。如果您希望以“root”身份挂载该分区,请uid=1000从上面的行中删除该选项。

保存文件并退出编辑器。

警告:完成此步骤后,用户插入此驱动器时不会自动安装此磁盘的 ExFat 分区。您必须使用下一步中描述的方法之一手动安装驱动器。

4. 测试并构建虚拟机

插入外部驱动器。它不应自动安装。使用以下任一方法安装分区:

  1. 单击 Dock 上出现的图标。
  2. 单击文件(又名 Nautilus)左侧面板上的“VM”项。
  3. 在终端类型上sudo mount /dev/sda2

分区挂载后,打开文件夹“VM”,右键单击任意空白处。然后选择特性从上下文菜单中。转到权限选项卡并验证“其他人”可以“创建和删除文件”。

现在您应该能够继续在外部驱动器中创建 VM 存储文件。

笔记:在“VM”分区内创建一个文件夹是个好主意。您可以将其命名为“VM_Storage”或其他名称。将您的 ISO 和 qcow 文件保存在此文件夹中,而不是保存在分区的“根”中。

尝试以 root身份ext4使用 VMM

首先,确保此分区中的所有文件和文件夹都可以由任何用户写入。这可以在 Nautilus 中完成,也可以使用以下命令:

sudo chmod 0777 -R /media/alexander/VM

尝试启动虚拟机管理器在构建新的虚拟机之前,请使用 sudo。在终端中使用此命令以 root 身份打开 VMM:

sudo virt-manager 

Virt-Manager 在外部硬盘上创建 qcow2 映像时出错更多细节。

希望这可以帮助

相关内容