我知道如果你安装了一个vhd(或其他虚拟磁盘格式(,你可以对它进行写入。但你怎么能在不安装的情况下对vhd进行写入呢?有一个好的软件可以使用吗?
我所说的原始是指HDD原始复制工具提供的内容。您可以只取一个文本文件或另一个文件,并将其中的字节精确地写入磁盘。
对于"固定的";VHD你可以,正如你所说:";只需获取一个文本文件或另一个文件,并将其中的字节精确地写入磁盘"固定VHD只是一个平面磁盘映像加上一个512英尺的末尾。只要你不碰这个页脚,原始块级别的编辑(手动或编程(应该没问题。
对于物理磁盘的动态VHD或任何其他稀疏表示,任务归结为将逻辑磁盘偏移转换为";容器";文件偏移量。具体地,对于动态VHD,物理磁盘的整个长度被划分为逻辑2MB窗口。这个物理磁盘的动态VHD表示本质上是这样的2MB块的序列,没有特定的顺序。含义:在动态VHD映像中,2MB(物理(磁盘窗口可能位于2MB磁盘窗口之后(动态VHD中(,而在实际磁盘中,2MB磁盘窗口在物理上总是在第一个2MB窗口之前。在块分配表中维护哪个VHD块对应于哪个物理磁盘窗口的映射。BAT条目(不同于数据块可能非顺序定位的方式(是有序的,并且包含相应容器数据块的动态VHD文件偏移量。
因此,我们所要做的就是:找到";VHD文件偏移量";我们需要使用BAT中存在的2MB逻辑窗口的条目写入的逻辑块。然后,向其添加512(即跳过每个块之前的扇区位图(。此时获得的VHD文件偏移量是在给定输入逻辑磁盘偏移量的情况下需要写入的偏移量。BAT很可能没有您需要写入的逻辑磁盘块的条目。在这种情况下,您需要将一个新的[512字节+2MB]数据块附加到动态VHD,更新BAT条目以指向该块的开始(512扇区(,然后更新动态页眉和页脚的CRC字段,因为我们已经更新了BAT(CRC在上面(。请记住,此方案仅对未链接的动态VHD有效。也就是说,如果有一个链接的差异子VHD,那么我们应该在子VHD上应用上述过程,而不是在基础VHD上。关于谁是父和谁是子的关系再次出现在动态VHD的头部中。写入子项还需要更新512字节的扇区位图。
每个虚拟化的映像容器都有类似的方案来以稀疏的方式表示磁盘块。如果我们浏览格式,那么读和写(在块级别(是可能的。此外,在大多数情况下,原则上,我们可以通过将卷级别偏移转换为磁盘级别,然后运行上面的查找来进行细粒度的卷级别读取