Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3277
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-11 23:29
文章分类
文章存档

2013年(3)

我的朋友

分类: 其他平台

2013-08-30 15:20:03

发表了Windows 7对VHD文件的内建支持和从VHD文件启动计算机这两篇博客后,陆续收到不少技术爱好者的电子邮件询问这些功能的细节、技术实现和应用场景。在做了一些功课之后,我整理汇总了这篇文章,详细全面的讨论一下Windows 7中VHD文件支持。

下面的一些信息和测试步骤都是根据Windows 7  Build 6801和Beta 1的,这篇文章发表于2009年1月22日。如果您看到这篇文章的时间比较晚了,可能有些具体的细节会随着Windows 7的进一步开发而发生变化,敬请留意!欢迎大家这篇文章,但请保证文章的完整性,并注明,谢谢!

理解VHD格式

绝大多数人最初接触VHD格式的文件,是在使用Virtual PC或者Virtual Server时,VHD是以文件形式存在的虚拟机的磁盘。微软在2005年公开了VHD格式文件的全部细节,可以从微软的TechNet网站下载Virtual Hard Disk Image Format Specification。这说明了微软不仅仅要把VHD应用在虚拟机领域,更希望VHD能够成为一种新的磁盘格式和载体在业界得到更多的支持。

让我们抛开虚拟机,把目光集中在VHD文件本身。VHD是一块虚拟的硬盘,不同于传统硬盘的盘片、磁头和磁道,VHD硬盘的载体是文件系统上的一个VHD文件。如果大家仔细阅读VHD文件的技术标准,就会发现标准中定义了很多Cylinder、Heads和Sectors等硬盘特有的术语,来模拟针对硬盘的I/O操作。既然VHD是一块硬盘,那么就可以跟物理硬盘一样,进行分区、格式化、读写等操作。

我们这可以这样认为,VHD也是硬盘的一种,就像2.5寸、3.5寸、SCSI、SATA、IDE等不同规格的硬盘一样,VHD是在一个文件中的硬盘。

Windows 7支持VHD的技术实现方式

在讨论具体的技术实现方式之前,我们首先需要理解操作系统对磁盘和文件的管理。操作系统有磁盘系统和文件系统两部分,分别处理对硬盘的I/O读写指令(磁盘系统),和管理硬盘之上的分区、数据和文件格式(文件系统)。VHD是存在于文件之上的磁盘,可想而知它的技术实现必须横跨磁盘系统和文件系统这两部分。如果您对操作系统中这一部分不是非常的了解,可以听一听微软网站上的Windows存储技术系列Webcast。

简单的说,要把VHD文件当作硬盘一样读写,必须有相应的驱动程序。在Virtual PC和Virtual Server中,微软就是通过在虚拟机种加入VHD的驱动程序,使得虚拟机可以从VHD启动并进行后续的操作。

在Windows 7中,微软把VHD的驱动内置进了操作系统,也包括在了Windows 7的引导程序中。这也就是说,我们可在使用Windows 7的时候,直接访问VHD文件中的内容(把VHD的硬盘映射到一个盘符,后面会详细描述),也可以通过Windows 7的引导程序,启动位于VHD磁盘上的另一个操作系统。理解VHD驱动的工作细节,需要比较多的Windows底层知识,下图是一个比较简单和抽象的结构,可以发现,VHD的驱动是跟磁盘驱动和文件系统紧密结合的。

650) this.width=650;" title="1.png" src="" />

眼花缭乱的VHD应用

既然在Windows 7中可以对VHD直接读写,让我们来看看这个强大的功能到底能有多少过人之处。

首先,我们可以用命令行工具Diskpart创建VHD文件!(是的,命令行工具,你可能已经想到了批处理和批量部署可以用到这个技术,没错,网管说:要硬盘,于是,大量的VHD就被创建出来了… )

   1:  diskpart

   2:  create vdisk file=c:\windows7.vhd maximum=25600 type=fixed

   3:  select vdisk file=c:\windows7.vhd

   4:  attach vdisk

   5:  create partition primary

   6:  assign letter=r

   7:  format quick label=vhd

   8:  exit

  • 本稿件为独家原创稿件,版权所有,引用或转载请注明出处。
  • 文章出处:
阅读(192) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~