FreeBSD 在根目录下托管 ZFS,运行 VirtualBox 且 Windows Server 2003 客户端的 HD 速度非常慢

FreeBSD 在根目录下托管 ZFS,运行 VirtualBox 且 Windows Server 2003 客户端的 HD 速度非常慢

以下是我的设置:我运行的是双四核 Xeon 2.0Ghz,16GB 内存,2 个 2TB WD Green 硬盘,FreeBSD 7 根目录下有 ZFS。硬盘位于 ZFS 镜像中。我运行的是 VirtualBox 4.0.14。我有 2 个 Windows Server 2003 客户机,每个分别使用 4 GB 内存,有 320 个 VDI 虚拟磁盘,大约 70% 已满。一个 Windows Server 是终端服务器,另一个是 MS SQL 数据库服务器。

当直接在 Samba 上从 FreeBSD 服务器执行磁盘复制和传输时,我能够获得 80-90 MB/s 的读写传输速率。当我尝试在虚拟机内部传输时,我最多能获得 10MB/s 的传输速率。

当我在虚拟机中复制大型文件时,我得到的最大速度为 10MB/s。使用 zpool iostat 时,我从未看到虚拟机的最大传输速度超过 20-30 MB/s。在 VirtualBox 配置中,我尝试了 IDE 适配器和 SATA。我还没有尝试过 SCSI。

磁盘访问速度如此缓慢的原因可能是什么?

答案1

  1. 您应该更新到 8.3 或 9.0,其中有很多修复。
  2. 您应该更新 VirtualBox。执行此操作之前,您需要更新端口。
  3. 设置磁盘的好方法是:
    • 将它们移动到 zvols,zvols 可以通过 VBoxManage 内部命令 createrawvmdk 传输到 VirtualBox,这将使其使用更少的元数据并将扇区限制为 8k(提示:由于您的扇区默认最大为 512K,因此几乎每个写入的字节都会导致写入 512K 块);
    • 虚拟磁盘上的所有数据都已由虚拟化系统 FS 控制,因此您可以微调 zfs vdev:
      • sync=disabled,这将关闭磁盘上的日志记录,使磁盘能够不等待长时间运行的写入;
      • logbias=throughput,当启用日志时,新的数据页面将从 zpool 获取,而不是从意向日志获取,从而避免双重写入;数据也会立即写入;
      • 压缩=开启,在大多数环境中,这会加快读写速度;
      • 请勿打开重复数据删除功能。
  4. 不要使用 SCSI,SATA 是使用磁盘的更好方式。更新 VirtualBox 后,在控制器上设置 hostiocache。

答案2

在 Virtualbox 的设置中针对有问题的客户操作系统更改适配器类型。

首先,选择网络传输速度较慢的实例并将其关闭。然后进入其设置。

选择左侧的“网络”,然后选择右侧的“高级”。

有一个下拉菜单标有“适配器类型”。

尝试每种适配器类型,看看其他选项是否可以解决您的问题。

您可能还想升级到 Virtualbox 的当前版本:4.1.14。我认为 FreeBSD 端口集合中最新的版本目前是 4.1.12,但即使这样也应该比您使用的 4.0.14 更好。

顺便问一下,为什么 FreeBSD 7?9 对 ZFS 的支持更好。

相关内容