我在 VHD 上安装了一个操作系统,但操作系统的性能非常糟糕。虽然我有一台 Core i7 机器,但所有 3D 过渡和效果都非常不连贯。我在 Windows 7 Home Premium 上创建了这个 VHD。
我不是指虚拟机。我将操作系统安装在虚拟硬盘上。计算机启动时,所有资源都分配给该操作系统。该操作系统的启动方式与任何普通操作系统一样。我没有使用任何 VM ware 或 Virtual Box。
为什么在 VHD 上安装或运行操作系统时,性能会变得迟缓?
问候
答案1
虚拟硬盘是另一个文件系统内的文件系统。
为了读取 VHD 的内容,操作系统必须经过二间接层级。让我们从硬件的角度来看待这个问题。
因此,硬件(硬盘、SSD 等)会从磁盘读取“原始”扇区。NTFS 文件系统驱动程序会从这些原始扇区向操作系统告知有关 VHD 数据所在的磁盘扇区的信息。毕竟,VHD是一个文件包含文件系统。在读取 VHD 中的文件系统之前,您必须先将 VHD 本身作为文件在底层 NTFS 文件系统上。
现在,您已经读取了 VHD 文件的字节。这些字节代表什么?它们是...另一个 NTFS 文件系统,具有自己的文件和目录列表、元数据、流、文件片段等。
这个问题的原始答案之一提到了碎片。当文件系统嵌套在文件系统中时,这可能会成为一个大问题。最糟糕的情况是两个文件系统都是碎片化的:嵌套文件系统中的文件碎片本身在主机文件系统上也是碎片化的!所有这些数据的“分散”导致了非常随机的文件访问模式,这意味着硬盘必须“寻找”很多在旋转介质(传统硬盘)上寻道特别慢;在基于内存的设备上,例如 SSD,寻道要快得多,但最好还是尽可能避免寻道。
所以你的问题是最有可能的是碎片,但更具体地说,是嵌套碎片(嵌套和外部文件系统的碎片)。
想象一下,你的桌子上有一个塑料冰块托盘,可以装 10 块冰块,每个冰块孔内有 10 根矩形棒。每根矩形棒代表一个片字母。你想拼写单词“APPLEJACKS”。你该怎么做?
首先,你必须查看所有冰块孔,找到组装每个字母的正确杆。然后,你必须确保所有字母都按顺序排列。因此,你有一个“问题中的问题”——微观层面的问题是组装每个字母,宏观层面的问题是将字母组装成单词。这就是嵌套文件系统在碎片化时的工作方式。
现在,如果你只有一文件系统层,这就像是在每个冰块孔中都印有字母的实心木块。现在,即使字母以随机顺序散布,如果您有正确的字母,也只需几秒钟即可将它们重新排序以拼写出“APPLEJACKS”。这比组装每个字母本身要简单得多。
希望现实世界的类比能够有所帮助。