VirtualBox Windows 主机,Ubuntu 客户机安装在 RAW 分区上

VirtualBox Windows 主机,Ubuntu 客户机安装在 RAW 分区上

我有点困惑。

我刚刚在 Windows PC 上安装了一块新的 128GB SSD,然后在该驱动器上创建了一个 50GB 的分区。我没有对其进行格式化,因此它在“磁盘管理”实用程序中被标记为“50,00GB RAW”。

它位于\\.\PhysicalDrive0,我用来VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0查看该分区是否对 VirtualBox 可见。

然后我VBoxManage internalcommands createrawvmdk -filename "C:\Users\USERNAME\VirtualBox VMs\Disks\ssd370-p1.vmdk" -rawdisk \\.\PhysicalDrive0 -partitions 1创建一个代表该分区的 vmdk。

然后我创建了一个新的虚拟机,而不是创建新的硬盘,而是选择“使用现有的虚拟硬盘文件”,其中我选择了前面提到的 vmdk。

我将 Ubuntu iso 安装为 CD 并启动了 VM。

我不得不尝试几次。我的主要问题是 vmdk 显示为 119,24GB 的驱动器,因此创建 linux 分区失败。有一次,我在安装过程中执行手动分区过程时告诉安装程序,它应该创建一个 48GB 的​​分区,这小于我在 Windows 中使用的 50GB 大小。这成功了。

我重新启动了虚拟机,它仍然有效,这让我有点困惑。

在安装过程中,我告诉它安装 GRUB。我认为某些引导/GRUB 相关的东西会使用 MBR,我的假设错了吗?我的意思是,安装过程中的某些东西需要写入 MBR。

VirtualBox 是否模拟了 MBR?或者它是否将 MBR 写入该分区并稍微缩小了其余部分?

我还尝试做一个sudo fstrim -v /以 结尾的FITRIM ioctl failed: Operation not supported。这正常吗?

另外,我跳过了创建交换分区的步骤;我可以创建一个 2 GB 大小的分区吗?我是否应该重新执行所有安装过程,创建一个 45GB 的分区和一个 3-4GB 的交换分区?这样可行吗?

我是否最好使用 50GB 的 vmdk 文件而不是使用 RAW 分区?

答案1

-partitions的参数并不createrawvmdk像您想象的那样工作。它不会将您指定为磁盘的分区暴露给客户机,而是将整个磁盘暴露给客户机,就像您没有指定参数时一样-partitions。唯一的区别是,它会屏蔽您未列出的分区,以便您无法读取或写入它们。您可以使用 ADDITIONAL 映像作为客户机的 MBR,但它仅限于引导代码部分(客户机将保留原始磁盘上的分区表)。9.9.1.2. Access to individual physical hard disk partitions详情请参阅:https://www.virtualbox.org/manual/ch09.html#rawdisk

在此处输入图片描述

如果 GRUB 与目标一起安装i386-pc(用于 BIOS/CSM 引导),它会将引导代码写入 MBR。但是,如果它与其中一个 EFI 目标 ( x86_64-efi/ i386-efi) 一起安装,它会将 EFI 可执行文件放在 EFI 系统分区上。

为了使 FITRIM ioctl 正常工作,VirtualBox 需要执行正确的 SCSI 直通(例如,Hyper-V 就是这样做的),以便客户机可以识别并直接向磁盘发送命令(或者,对于 SATA 磁盘,Windows 的 SCSI-ATA 转换层,它将 SCSI UNMAP 命令转换为 SATA SSD 的 ATA DSM/TRIM 命令)。从 VirtualBox 5.0 开始,其存储控制器均不提供该级别的原始磁盘访问。可以通过检查和比较以下输出来确认sg3_utilssg_vpd -asg_readcap -16sg_inq)在 Linux 客户机和 Windows 主机上。

相关内容