我在 VirtualBox 中运行 Ubuntu 14.04 作为主机,Windows 7 作为客户机。我的 Windows 7 vdi 文件越来越大,因此我将其迁移到通过 USB 集线器和 SATA-USB3 数据线连接的三星 850 EVO 内置 SSD。以前,当 vdi 文件位于我的计算机内置硬盘 (Ext4) 上时,Virtualbox 上的 Windows 7 运行速度很快。
我最初将三星固态硬盘格式化为 ExFAT,Windows 7 客户机运行速度非常慢(几分钟才能启动浏览器)。我花了几个小时在 VirtualBox 中尝试各种设置。我注意到,当我在 Ubunutu 主机上运行“top”时,mount.exfat 占用了大量 CPU,并拖慢了我的系统速度。偶尔,Windows 7 会正常工作,而每次 mount.exfat 都不会出现在 CPU 使用率最高的列表中。一时兴起,我决定将三星固态硬盘重新格式化为 NTFS,并从中启动 Windows 7 客户机。在这种设置下,Windows 7 运行完全正常。
问题:
为什么 VirtualBox 上的 Windows 7 客户主机在 ExFAT 外部硬盘上的表现比 NTFS 外部硬盘上的表现更差?
笔记: 我不知道这是硬件问题、Linux 软件问题、VirtualBox 软件问题等。
答案1
ExFAT (FAT64) 不是为 SSD 设计的。它是为闪存棒和存储卡设计的,用于替代其标准 FAT32 文件系统。由于微软的版税要求,它从未流行起来。
NTFS 是一种高度优化的 b 树文件系统,它针对 SSD 使用进行了更新,并且应该在除 ExFAT 上的小型可移动驱动器之外的所有情况下使用。
回答你的问题,你可能正在使用在用户空间运行的 FUSE ExFAT 驱动程序。如果你编译并使用 ExFAT 内核模块,你可能会看到更好的性能,但不会比使用 NTFS 内核模块更好(YMMV)
ExFAT 内核模块:https://github.com/dorimanx/exfat-nofuse