-
目录
最好不要使用IO缓存。
Oracle VM VirtualBox 可以选择禁用主机操作系统对磁盘映像文件执行的 I/O 缓存。
传统上,Oracle VM VirtualBox将磁盘映像文件作为普通文件打开,这导致它们像任何其他文件一样被主机操作系统缓存。这样做的主要优点是速度:当来宾操作系统写入磁盘并且主机操作系统缓存使用延迟写入时,写入操作可以快速报告给来宾操作系统已完成,而主机操作系统可以异步执行该操作。此外,当您第二次启动 VM 并有足够的内存可供操作系统用于缓存时,虚拟磁盘的大部分可能位于系统内存中,并且 VM 可以更快地访问数据。
请注意,这仅适用于图像文件。对于驻留在远程 iSCSI 存储上的虚拟磁盘,不会发生缓冲,这是企业级设置中更常见的方案。请参见第 5.10 节 "iSCSI 服务器"。
虽然缓冲是虚拟化台式计算机上的几台计算机的有用默认设置,但此方法有一些缺点:
通过主机操作系统缓存延迟写入不太安全。当来宾操作系统写入数据时,它会考虑写入的数据,即使它尚未到达物理磁盘。如果由于某种原因(如电源故障或主机崩溃)未发生写入,则数据丢失的可能性会增加。
磁盘映像文件往往非常大。因此,缓存它们可以快速耗尽整个主机操作系统缓存。根据主机操作系统缓存的效率,这可能会大大降低主机的速度,尤其是在多个 VM 同时运行时。例如,在 Linux 主机上,主机缓存可能会导致 Linux 延迟所有写入操作,直到主机缓存几乎已满,然后一次写出所有这些更改,这可能会使 VM 执行停止数分钟。这可能会导致来宾中的 I/O 错误,因为 I/O 请求会超时。
物理内存经常被浪费,因为客户机操作系统通常有自己的 I/O 缓存,这可能会导致数据在客户机和主机缓存中缓存两次,但效果不大。
如果您出于上述原因决定禁用主机 I/O 缓存,Oracle VM VirtualBox 将使用自己的小缓存来缓冲写入,但不进行读取缓存,因为这通常已由来宾操作系统执行。此外,Oracle VM VirtualBox 完全支持通过多个 I/O 线程为其虚拟 SATA、SCSI 和 SAS 控制器提供异步 I/O。
由于 IDE 控制器不支持异步 I/O,因此出于性能原因,您可能希望为 VM 的虚拟 IDE 控制器启用主机缓存。
-
存储器 SATA 型号说明
在计算设备中,硬盘和 CD/DVD 驱动器连接到称为硬盘控制器的设备,该设备驱动硬盘操作和数据传输。Oracle VM VirtualBox可以模拟计算设备中最常见的硬盘控制器类型:IDE,SATA(AHCI),SCSI,SAS,基于USB,NVMe和virtio-scsi大容量存储设备。
IDE (ATA)控制器是 IBM PC/AT (1984) 中磁盘控制器的向后兼容但非常高级的扩展。最初,此接口仅适用于硬盘,但后来扩展为也支持 CD-ROM 驱动器和其他类型的可移动媒体。在物理 PC 中,此标准使用 40 或 80 线的扁平带状并行电缆。每根这样的电缆可以将两个设备(称为设备 0 和设备 1)连接到控制器。典型的PC有两个用于此类电缆的连接器。因此,最多支持四个 IDE 设备是最常见的:主设备 0、主设备 1、辅助设备 0 和辅助设备 1。
在 Oracle VM VirtualBox 中,每个虚拟机可能启用了一个 IDE 控制器,这为您提供了最多四个可以附加到计算机的虚拟存储设备。默认情况下,其中一个虚拟存储设备(辅助通道上的设备 0)预配置为虚拟机的虚拟 CD/DVD 驱动器。但是,您可以更改默认设置。
即使您的客户机操作系统不支持 SCSI 或 SATA 设备,它也应始终能够看到 IDE 控制器。
您还可以选择 Oracle VM VirtualBox 应向虚拟机提供的确切类型的 IDE 控制器硬件:PIIX3、PIIX4 或 ICH6。这在性能方面没有区别,但是如果从其他虚拟化产品导入虚拟机,则该计算机中的操作系统可能会出现特定的控制器类型,如果未找到,则会崩溃。
使用 VirtualBox Manager 的"新建虚拟机"向导创建新虚拟机后,通常会在计算机的"存储"设置中看到一个 IDE 控制器。虚拟 CD/DVD 驱动器将连接到此控制器的四个端口之一。
串行 ATA (SATA)是比 IDE 更新的标准。与IDE相比,它支持更高的速度和每个控制器更多的设备。此外,使用物理硬件,可以在系统运行时添加和删除设备。SATA 控制器的标准接口称为高级主机控制器接口 (AHCI)。
与真正的SATA控制器一样,Oracle VM VirtualBox的虚拟SATA控制器运行速度更快,并且比虚拟IDE控制器消耗更少的CPU资源。此外,与连接了 DVD 驱动器的 Oracle VM VirtualBox IDE 控制器相比,这使您能够将多达 30 个虚拟硬盘连接到一台计算机,而不仅仅是三台。
因此,根据所选的客户机操作系统,Oracle VM VirtualBox 使用 SATA 作为新创建的虚拟机的默认设置。默认情况下创建一个虚拟 SATA 控制器,并使用新 VM 创建的默认磁盘附加到此控制器。
警告
没有设备支持 AHCI 的操作系统将无法看到整个 SATA 控制器及其附加到它的虚拟磁盘(包括处于 IDE 兼容模式的虚拟磁盘)。特别是,在Windows Vista之前,Windows版本中不支持AHCI。旧版 Windows 版本(如 Windows XP)即使安装了 SP3,也不会看到此类磁盘,除非您安装了其他驱动程序。安装后,可以通过安装 SATA 驱动程序并在"VM 设置"对话框中更改控制器类型,从 IDE 切换到 SATA。
Oracle VM VirtualBox 推荐英特尔矩阵存储驱动程序,可以从Download Intel Drivers and Software下载。
要将 SATA 控制器添加到默认情况下尚未启用 SATA 控制器的计算机(因为它是由早期版本的 Oracle VM VirtualBox 创建的,或者因为所选客户机操作系统默认不支持 SATA),请执行以下操作。转到计算机"设置"对话框的"存储"页面,单击"存储树"框下的"添加控制器",然后选择"添加 SATA 控制器"。新控制器在虚拟机中显示为单独的 PCI 设备,您可以向其添加虚拟磁盘。
要更改 SATA 控制器的 IDE 兼容模式设置,请参见第 8.18 节 "VBoxManage storagectl"。
SCSI是另一个既定的行业标准,代表小型计算机系统接口。SCSI 是用于在各种设备(包括存储设备)之间传输数据的通用接口。SCSI仍然用于连接某些硬盘和磁带设备,但它在商用硬件中大部分已被取代。它仍然在高性能工作站和服务器中普遍使用。
Oracle VM VirtualBox 主要是为了与其他虚拟化软件兼容,可选择支持 LSI Logic 和 BusLogic SCSI 控制器,每个控制器最多可连接 15 个虚拟硬盘。
要启用 SCSI 控制器,请在虚拟机的"设置"对话框的"存储"页面上,单击"存储树"框下的"添加控制器",然后选择"添加 SCSI 控制器"。新控制器在虚拟机中显示为单独的 PCI 设备。
警告
与其他控制器类型一样,SCSI 控制器只能由支持设备的操作系统看到。Windows 2003 及更高版本附带了 LSI Logic 控制器的驱动程序,而 Windows NT 4.0 和 Windows 2000 附带了 BusLogic 控制器的驱动程序。Windows XP附带了两者的驱动程序。
串行连接 SCSI (SAS)是另一个使用 SCSI 命令集的总线标准。与SCSI物理设备相反,使用串行电缆而不是并行电缆。这简化了物理设备连接。因此,在某些方面,SAS 之于 SCSI,就像 SATA 之于 IDE:它可实现更可靠、更快速的连接。
为了支持需要 SAS 控制器的高端客户机,Oracle VM VirtualBox 模拟了 LSI Logic SAS 控制器,其启用方式与 SCSI 控制器大致相同。此时,最多可以将 255 个设备连接到 SAS 控制器。
警告
与 SATA 一样,SAS 控制器只有支持设备的操作系统才能看到。特别是,在Windows Vista之前,Windows中不支持SAS。因此,Windows XP,甚至是SP3,除非您安装其他驱动程序,否则不会看到此类磁盘。
USB 大容量存储设备类是通过 USB 将外部存储设备(如硬盘或闪存驱动器)连接到主机的标准。所有主要的操作系统都支持这些设备,并附带通用驱动程序,使第三方驱动程序变得多余。特别是,不支持 SATA 控制器的传统操作系统可能会受益于 USB 大容量存储设备。
Oracle VM VirtualBox 提供的虚拟 USB 存储控制器的工作方式与其他存储控制器类型不同。虽然大多数存储控制器在客户机上显示为单个 PCI 设备,并附加了多个磁盘,但基于 USB 的存储控制器不会显示为虚拟存储控制器。连接到控制器的每个磁盘对客户机都显示为专用的 USB 设备。
警告
仅当使用 EFI 时,才支持从使用 USB 连接的驱动器引导,因为 BIOS 缺少 USB 支持。
非易失性快速存储器 (NVMe)是直接通过 PCI Express 连接非易失性存储器 (NVM) 的标准,以解除以前用于固态设备的 SATA 协议的带宽限制。与其他标准不同,该命令集非常简单,以实现最大吞吐量,并且与 ATA 或 SCSI 不兼容。操作系统需要支持 NVMe 设备才能使用它们。例如,Windows 8.1 添加了本机 NVMe 支持。对于 Windows 7,本机支持随更新一起添加。
NVMe 控制器是扩展包的一部分。
警告
仅当使用 EFI 时,才支持从使用 NVMe 连接的驱动器引导,因为 BIOS 缺少适当的驱动程序。
虚拟 I/O 设备 SCSI是将虚拟存储设备(如硬盘或光盘驱动器)连接到 VM 的标准。最近的Linux和Windows版本支持这些设备,但Windows需要额外的驱动程序。目前,virtio-scsi 控制器支持是实验性的。
警告
virtio-scsi 控制器只能由支持它的操作系统看到。特别是,Windows中没有内置支持。因此,除非您安装其他驱动程序,否则Windows将看不到此类磁盘。
总而言之,Oracle VM VirtualBox 为您提供了以下类别的虚拟存储槽位:
连接到传统 IDE 控制器的四个插槽,这些插槽始终存在。其中之一通常是虚拟 CD/DVD 驱动器。
连接到 SATA 控制器的 30 个插槽(如果客户机操作系统启用和支持)。
连接到SCSI控制器的15个插槽(如果客户机操作系统启用和支持)。
最多 255 个插槽连接到 SAS 控制器(如果客户机操作系统启用和支持)。
连接到虚拟 USB 控制器的八个插槽(如果客户机操作系统启用和支持)。
最多 255 个插槽连接到 NVMe 控制器(如果客户机操作系统启用和支持)。
最多 256 个插槽连接到 virtio-scsi 控制器(如果客户机操作系统启用和支持)。
鉴于存储控制器的选择如此之多,您可能不知道该选择哪一个。通常,应避免使用 IDE,除非它是来宾支持的唯一控制器。无论您使用 SATA、SCSI 还是 SAS,都不会有任何真正的区别。各种控制器仅由Oracle VM VirtualBox提供,以便与现有硬件和其他虚拟机管理程序兼容。
-
磁盘映像文件
磁盘映像文件驻留在主机系统上,并被客户机系统视为特定几何图形的硬盘。当客户机操作系统读取或写入硬盘时,Oracle VM VirtualBox 会将请求重定向到映像文件。
与物理磁盘一样,虚拟磁盘具有在创建映像文件时必须指定的大小或容量。但是,与物理磁盘相反,Oracle VM VirtualBox 允许您在创建映像文件后扩展映像文件,即使它已经具有数据也是如此。请参见第 8.22 节 "VBoxManage modifymedium"。
Oracle VM VirtualBox 支持以下类型的磁盘映像文件:
通常,Oracle VM VirtualBox 对来宾硬盘使用自己的容器格式。这称为虚拟磁盘映像 (VDI) 文件。使用此格式在创建新磁盘的新虚拟机时使用。
VMDK. Oracle VM VirtualBox还完全支持许多其他虚拟化产品(如VMware)使用的流行和开放的VMDK容器格式。
VHD. Oracle VM VirtualBox还完全支持Microsoft使用的VHD格式。
HDD。 还支持 Parallels 版本 2(HDD 格式)的图像文件。
由于缺少格式文档,因此不支持较新的版本,如 3 和 4。但是,您可以使用 Parallels 提供的工具将此类图像文件转换为版本 2 格式。
无论磁盘容量和格式如何,如第 1.7 节 "创建您的第一个虚拟机"中所述,创建磁盘映像有两个选项:固定大小或动态分配。
固定大小。 如果创建固定大小的映像,则会在主机系统上创建一个映像文件,该文件的大小与虚拟磁盘的容量大致相同。因此,对于 10 GB 的磁盘,您将拥有一个 10 GB 的文件。请注意,创建固定大小的映像可能需要很长时间,具体取决于映像的大小和硬盘的写入性能。
动态分配。 要实现更灵活的存储管理,请使用动态分配的映像。这最初将非常小,并且不会占用未使用的虚拟磁盘扇区的任何空间,但每次首次写入磁盘扇区时都会增长,直到驱动器达到创建驱动器时选择的最大容量。虽然此格式最初占用的空间较少,但 Oracle VM VirtualBox 需要扩展映像文件会消耗额外的计算资源,因此在磁盘文件大小稳定之前,写入操作可能比使用固定大小的磁盘慢。但是,一段时间后,增长率将放缓,写入操作的平均损失可以忽略不计。