WinPE 制作技术文章之 —— 自己DIY亲自制作Win7PE系统

  首先,在D盘新建一个winpe文件夹,在winpe文件夹中再新建sources、pe3和new三个文件夹,把附件中提供的工具imagex连同文件夹一起放到winpe目录中。

制作win7pe步骤:
  1、把windows 7光盘(或光盘镜像)里的\sources\boot.wim文件复制到d:\winpe\sources目录;
  2、在附件提供的imgaex目录里右键点击inf文件,选安装(Imagex 6.0 AIK 封装工具);
  3、运行cmd,进入imgaex目录;
  4、输入:imagex /mountrw d:\winpe\sources\boot.wim 2 d:\winpe\new (将d:\winpe\sources\boot.wim镜像映射到d:\winpe\new目录)备注:如果无法映射可以把 "2"换成"1"
  5、删除d:\winpe\new目录下的setup.exe文件。删除sources文件夹(很重要),可以精简winpe哟;
  6、输入:imagex /unmount /commit d:\winpe\new (合并对d:\winpe\new目录中映像文件的修改,并将其卸载);
  7、输入:imagex /compress maximum /export "d:\winpe\sources\boot.wim" 2 "d:\winpe\pe3\boot.wim",把boot.wim分离并重新压缩;
  8、d:\winpe\pe3\boot.wim即为修改后的镜像。这个时候运行这个映像winpe是默认的“命令提示符”窗口;
?
制作WinPE光盘镜像:
  1. 新建d:\winpe\pe目录和d:\winpe\pe\sources目录;
  2. 复制(windows 7光盘为X)X:\boot目录(包括文件)到d:\winpe\pe目录中,复制X:\efi目录(包括文件)到d:\winpe\pe目录中,复制X:\bootmgr文件到d:\winpe\pe目录中,复制修改后的boot.wim文件到d:\winpe\pe\sources(X为windows7光盘符);
  3. 用UltraISO提取windows 7光盘引导文件,保存为windows7.bif;
  4. 用UltraISO将d:\winpe\pe下的目录和文件添加到光盘镜像,加载windows7.bif,保存镜像为WinPE3.0.iso;

图像shell
  Winpeshl.ini 可控制是否将自定义外壳程序加载到 WindowsPE,而不是默认的“命令提示符”窗口。若要加载自定义外壳程序,请创建一个名为 Winpeshl.ini 的文件,然后将它放在自定义 WindowsPE 映像的 %SYSTEMROOT%"System32 中。该 .ini 文件必须包含以下部分和项:
[LaunchApp]
AppPath = %SYSTEMDRIVE%"myshell.exe
[LaunchApps]
%SYSTEMDRIVE%"mydir"application1.exe, -option1 -option2
application2.exe, -option1 -option2
  将 AppPath 项设置为外壳应用程序的路径。该路径可以是完整的绝对路径,也可以使用环境变量(例如 %SYSTEMROOT%"System32"Myshell.exe)来表示该相对路径。AppPath 项不支持命令行选项。使用 [LaunchApps] 部分运行带命令行选项的应用程序。应用程序按照列出的顺序运行;应用程序的名称及其选项以逗号分隔。当退出“命令提示符”窗口或自定义外壳应用程序时,WindowsPE 将重新启动。不要编辑 Setupreg.hiv 的 HKEY_LOCAL_MACHINE\SYSTEM\Setup 注册表项中的 CmdLine 值来启动外壳应用程序。CmdLine 的值可调用 Winpeshl.exe,Winpeshl.exe 会执行很多函数,包括调用 Windows PE 中的默认“命令提示符”窗口或您的自定义外壳应用程序。
  举例:用b**plorer制作自制 DIY 版WindowsPE,从网上下载b**plorer程序,从CMD到imagex目录:imagex /mountrw d:\winpe\sources\boot.wim 1 d:\winpe\new,解压b**plorer后连同文件夹一起放到d:\winpe\new\windows目录中,把上面建的Winpeshl.ini,里面要指出b**plorer.exe所在的路径,放到d:\winpe\new\windows\system32中。
定义:
【bs_desktop.ini】
这个文件是用来自定义WinPE的桌面快捷方式的,第一行的 [Desktop CFG file Ver.1] 必须保留。
格式:
<-ItemBegin->
ItemX=
ItemY=
Caption=
ExeName=
IconName=
IconNumber=
ExeDir=
CmdParam=
ShowState=
<-ItemEnd->
举例:
<-ItemBegin->
ItemX=20
ItemY=20
Caption=资源管理器
ExeName=%SystemDrive%\Program files\A43\A43.exe
IconName=%SystemDrive%\Program files\A43\A43.ico
IconNumber=0
ExeDir=%SystemDrive%\Program files\A43
CmdParam=
ShowState=NORMAL
<-ItemEnd->
参数说明:
  每一个左边上的图标都是由这样的一段配置生成的,每个图标开头和结尾必须有 <-ItemBegin-> 和 <-ItemEnd-> , ItemX= 是指图标的横向距离,默认第一列为 20 ,第二列为 100 ,第三列为 180 ,以此类推(每下一列的值都比前一列增加 80 ,这是默认的设置,可以自由修改,但这是最好的设计了)。 ItemY 和 ItemX= 一样,但指的是横向坐标(即行数)。 Caption 填什么都可以,支持中文,是图标下的名称文字。 ExeName则是目标文件或程序的路径(要求包括扩展名,可以不是绝对路径。允许使用系统变量)。 IconName 是此快捷方式的图标路径, IconNumber 是此图标文件中的第几个图标,默认为 0 。 ExeDir 是此文件或程序的运行路径。 CmdParam 是专门应用于这个程序的启动(命令行)参数(例如 Nero StartSmart Essentials 的启动参数是 -ScParameter=8 ),大部分大型软件都有用到。 ShowState 是目标的显示方式,默认为 NORMAL ,在此参数下打开窗口不会有任何变化,仍然是原样。

【bs_logon.ini】
  这个文件是用来自定义WinPE的登录方式的,这里只讲解 [Shell] 部分, [Shell] 此行必须保留。
格式:
=
举例:
BS图形界面=%SystemDrive%\Program Files\B**plorer\explorer.exe
参数说明:
  =之前的内容为登陆框下拉菜单中的显示文字(允许空格和汉字),之后的内容为一个WinPE Shell的路径,其实就是一个可执行程序,但是如果只打开一个普通应用程序的话就不会打开桌面,当此程序结束时会退回登录对话框。无论 [Shell] 下面的内容你删去了什么,举例中的那行一定要保留,否则下拉菜单中不会出现 BS图形界面项,自然也无法进入桌面了。
?
【bs_qlaunch.ini】
  这个文件是用来自定义WinPE的快速启动栏的,第一行的 [QLaunch CFG file Ver.1] 必须保留。
格式:
<-ItemBegin->
Caption=
ExeName=
IconNumber=
<-ItemEnd->
  举例:
<-ItemBegin->
Caption=显示桌面
ExeName=@ShowDesktop
IconNumber=20
<-ItemEnd->
参数说明:
  与 bs_desktop.ini 文件一样,就是参数少了点。
?
【bs_menuimg.bmp】
  这个文件中保存着需要用到的一些常见的小程序图标(16×16),此文章中所有的 IconNumber= 都指向这里,所以比较重要。第一个编号为 0,第二个编号为 1 ,以此类推,您可按照16×16的大小添加或修改图标。
?
【bs_explorer.ini】
  这个文件中只有几个需要特别讲解的地方:
DesktopBkgndText= 显示在桌面右下角的文字,颜色默认为白色,可自由修改,值为空时会显示一段版权说明(我看不懂啊)
DesktopTextColor= 规定了桌面上的文字颜色,格式为十六进制颜色数值,默认为 $00ffffff
DesktopTextBkColor= 规定了桌面上的文字的背景色,格式为十六进制颜色数值,默认为 $ffffffFF
其它可能有用的参数(不做详细解释):
NoCheckFiles= 不检查文件,默认为 YES
NoStartMenuIcon= 无开始菜单图标,默认为 NO
NoStartMenuMargin= 无开始菜单边缘空白,默认为 NO
NoDesctopIcon= 不显示桌面快捷方式,默认为 NO
NoQlaunchBar= 不显示快速启动栏,默认为 NO

【BS_START.INI】
  这个文件是最重要的!它规定了开始菜单中的内容。
格式:
<-ItemBegin->
ShowInAutorun=
EnableInAutorun=
ParentItem=
Caption=
ExeName=
IconNumber=
ExeDir=
ShowState=
<-ItemEnd->
举例:
<-ItemBegin->
ShowInAutorun=YES
EnableInAutorun=YES
ParentItem=office
Caption=Word
ExeName=%SystemDrive%\program files\Office97\WORD.EXE
IconNumber=45
ExeDir=%SystemDrive%\program files\Office97
ShowState=NORMAL
<-ItemEnd->
参数说明:
  ShowInAutorun= 和 EnableInAutorun= 两项好像基本在我的自定义实验中并没有什么用处,所以不做讲解。大部分参数都与以上介绍的几个文件相同,ParentItem= 是指向此快捷方式放入哪个文件夹(如果要放到开始菜单的根目录下的话,就需要写入 root )。建立文件夹的格式为:
<-ItemBegin->
ShowInAutorun=YES
EnableInAutorun=YES
ParentItem=programs
Caption=Office 97
MenuId=office
<-ItemEnd->
  MenuId 是一个唯一的标识,普通快捷方式的 ParentItem= 指向的就是这里。
  同样需要特殊说明的是建立分隔线,格式为:
<-ItemBegin->
ShowInAutorun=YES
EnableInAutorun=YES
ParentItem=root
Caption=-
<-ItemEnd->
  同样,ParentItem= 的值属性同上(汉译为:“母物品”)。
imagex /unmount /commit d:\winpe\new
imagex /compress maximum /export "d:\winpe\sources\boot.wim" 1 "d:\winpe\pe3\boot.wim"
  然后把boot.wim放到d:\winpe\pe\sources中,用Ultraiso制作ISO文件(步骤同上),这样以后你的winpe3的外壳界面就是b**plorer带来的效果了。刚快试试吧!

 

制作Bootmgr引导+EFI引导光盘命令格式

oscdimg.exe -m -o -u2 -udfver102 -lmype -bootdata:2#p0,e,b"D:\winpe\pe\boot\etfsboot.com"#pEF,e,b"D:\winpe\pe\efi\microsoft\boot\efisys.bin" D:\winpe\pe D:\mype.iso

 

grldr引导+EFI引导(下列命令中的D:\mycddir\skype是grldr)

OSCDimg.exe -lmyiso -h -m -o -d -g -c -n -bootdata:2#p00,e,b"D:\mycddir\skype"#pEF,e,b"d:\aaa\UEFI.BIN" "D:\mycddir" "D:\abc.ISO"

系统加密比较:Vista BitLocker vs. Mac OS X FileVault

  早在Windows Vista上市之前,便有许多人有意无意地将其与苹果(Apple)的Mac OS X相提并论,试图比较二者的优劣。毕竟,从简单的角度看,Windows Vista与Mac OS 间存在太多的相似点,比如说,Windows Vista的Aero Galss界面与Tiger中的Aqua界面,再比如说Windows Vista中的即时搜索与Mac中的“Spotlight”等.而在操作系统对文件的加密方面,Windows Vista中引入了对BitLocker的支持,这与Mac OS X中的FileVault 也有一定程度的近似,二者欲实现的目标也基本相同:即保护用户的重要数据,使其即使在电脑遗失的情况下也不会造成机密的外流。
  从技术上看,无论BitLocker还是FileVault,均是一种系统级的加密,但尽管二者的目标相同,采取的具体机制则有明显的差别。那么,究竟孰优孰劣?下面我们进行简单的比较。

Windows Vista的BitLocker
  与Mac OS X中的FileVault相比,Windows Vista中的驱动器加密功能BitLocker更为强大,不仅加密、保护用户文件,事实上,BitLocker加密的是整个系统分区,包括Windows系统文件、应用程序以及存放于系统盘的任何个人数据。

  启用了BitLocker的Windows Vista系统,要求在启动时必须插入存有密钥的USB盘,或具有BitLocker恢复密码,不然,系统将无法启动。BitLocker在加密过程中使用一个相对较小的启动分区来检查密钥,只有检测通过硬盘数据才可存取,这样,即使非法使用者将该硬盘挂接在别的可正常启动的系统上,也无法读取该分区中的数据。

  BitLocker的优势: 没有正确的密钥,不仅无法启动进入Windows Vista,而且,正如上文所言,即使非法使用者采取其他手段,如试图以脱机方式浏览存储在受保护驱动器中的文件,也无法读取加密分区内的数据,最大程度地保证了数据的安全。

  BitLocker的不足:从某种程度上说,BitLocker的优势也具有双面性,用户必须确保将自己存有密钥USB盘不要遗失,或者,将BitLocker恢复密码保存到安全位置,不然,也许会发生反而将自己“拒之门外”的惨剧。

  此外,要享受BitLocker带来的好处,用户必须购买Windows Vista Ultimate或Enterprise版,并且,在设置时需调整硬盘分区,新建一个启动分区以及将密钥保存到USB盘等繁琐过程。

Mac OS X的 FileVault
  在Mac OS X中,FileVault自动加密用户文件目录及其中的文件。当用户对其目录中的文件进行读写操作时,FileVault在后台自动对相应文件进行加解密过程,其效率极高,事实上,大多数用户在操作中甚至感觉不到存在这么一个加、解密的过程。

  FileVault使用用户的登录密码作为加解密的密钥。也即是说,只有当用户使用正确的密码登录时,才能看到自己主目录及其下的文件。不然,该文件夹将不可存取。如果同一台Mac机上存在多个用户,那么,每个用户只能看到自己的主目录及目录下的文件,而无法对其他用户目录下的文件进行操作。

  FileVault的优势:FileVault是Mac OS X系统的默认功能,用户不必像Windows Vista那样,必须购买更昂贵的Windows Vista Ultimate 或 Enterprise版才能享受BitLocker功能。同时,与BitLocker相比,不必对硬盘进行重新分区,不必创建存有密钥的USB启动盘,几乎不需任何用户设置,应用较为简便、方便。

  FileVault的不足:即便启用FileVault,非法用户仍能正常启动Mac,这与BitLocker直接让非法用户无法进入系统存在距离,虽然此时从理论上说,非法用户仍然无法读取用户目录下的文件。

小结:Windows Vista更胜一筹
  从上文的简单比较可以看出,尽管要应用BitLocker,需要购买更昂贵的Windows Vista版本,需要远较FileVault复杂的设置过程,但BitLocker的安全防护更为全面,可以从根本上把非法使用者拒之门外,即使其拿到您的PC、您的硬盘,也同样对其上的数据无能为力。

  此外,还必须考虑到,在Windows Vista中,除了BitLocker,还可以使用EFS(Encrypt File System : 加密文件系统),加密特定文件/文件夹,这可实施进行更灵活的数据保护。

Ext3与Ext4的主要区别

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。

2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。

4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

5. 多块分配。 当 写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

9. “无日志”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

10. 在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。

11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。

12. 持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。

13. 默认启用 barrier。 磁 盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

php字符串处理函数大全

addcslashes — 为字符串里面的部分字符添加反斜线转义字符
addslashes — 用指定的方式对字符串里面的字符进行转义
bin2hex — 将二进制数据转换成十六进制表示
chop — rtrim() 的别名函数
chr — 返回一个字符的ASCII码
chunk_split — 按一定的字符长度将字符串分割成小块
convert_cyr_string — 将斯拉夫语字符转换为别的字符
convert_uudecode — 解密一个字符串
convert_uuencode — 加密一个字符串
count_chars — 返回一个字符串里面的字符使用信息
crc32 — 计算一个字符串的crc32多项式
crypt — 单向散列加密函数
echo — 用以显示一些内容
explode — 将一个字符串用分割符转变为一数组形式
fprintf — 按照要求对数据进行返回,并直接写入文档流
get_html_translation_table — 返回可以转换的HTML实体
hebrev — 将Hebrew编码的字符串转换为可视的文本
hebrevc — 将Hebrew编码的字符串转换为可视的文本
html_entity_decode — htmlentities ()函数的反函数,将HTML实体转换为字符
htmlentities — 将字符串中一些字符转换为HTML实体
htmlspecialchars_decode —htmlspecialchars()函数的反函数,将HTML实体转换为字符
htmlspecialchars — 将字符串中一些字符转换为HTML实体
implode — 将数组用特定的分割符转变为字符串
join — 将数组转变为字符串,implode()函数的别名
levenshtein — 计算两个词的差别大小
localeconv — 获取数字相关的格式定义
ltrim — 去除字符串左侧的空白或者指定的字符
md5_file — 将一个文件进行MD5算法加密
md5 — 将一个字符串进行MD5算法加密
metaphone — 判断一个字符串的发音规则
money_format — 按照参数对数字进行格式化的输出
nl_langinfo — 查询语言和本地信息
nl2br — 将字符串中的换行符“\n”替换成“<br/>”
number_format — 按照参数对数字进行格式化的输出
ord — 将一个ASCII码转换为一个字符
parse_str — 把一定格式的字符串转变为变量和值
print — 用以输出一个单独的值
printf — 按照要求对数据进行显示
quoted_printable_decode — 将一个字符串加密为一个8位的二进制字符串
quotemeta — 对若干个特定字符进行转义
rtrim — 去除字符串右侧的空白或者指定的字符
setlocale — 设置关于数字,日期等等的本地格式
sha1_file — 将一个文件进行SHA1算法加密
sha1 — 将一个字符串进行SHA1算法加密
similar_text — 比较两个字符串,返回系统认为的相似字符个数
soundex — 判断一个字符串的发音规则
sprintf — 按照要求对数据进行返回,但是不输出
sscanf — 可以对字符串进行格式化
str_ireplace — 像str_replace()函数一样匹配和替换字符串,但是不区分大小写
str_pad — 对字符串进行两侧的补白
str_repeat — 对字符串进行重复组合
str_replace — 匹配和替换字符串
str_rot13 — 将字符串进行ROT13加密处理
str_shuffle — 对一个字符串里面的字符进行随机排序
str_split — 将一个字符串按照字符间距分割为一个数组
str_word_count — 获取字符串里面的英文单词信息
strcasecmp — 对字符串进行大小比较,不区分大小写
strchr — 通过比较返回一个字符串的部分strstr()函数的别名
strcmp — 对字符串进行大小比较
strcoll – 根据本地设置对字符串进行大小比较
strcspn — 返回字符连续非匹配长度的值
strip_tags — 去除一个字符串里面的HTML和PHP代码
stripcslashes — 反转义addcslashes()函数转义处理过的字符串
stripos — 查找并返回首个匹配项的位置,匹配不区分大小写
stripslashes — 反转义addslashes()函数转义处理过的字符串
stristr — 通过比较返回一个字符串的部分,比较时不区分大小写
strlen — 获取一个字符串的编码长度
strnatcasecmp — 使用自然排序法对字符串进行大小比较,不区分大小写
strnatcmp — 使用自然排序法对字符串进行大小比较
strncasecmp — 对字符串的前N个字符进行大小比较,不区分大小写
strncmp — 对字符串的前N个字符进行大小比较
strpbrk — 通过比较返回一个字符串的部分
strpos — 查找并返回首个匹配项的位置
strrchr — 通过从后往前比较返回一个字符串的部分
strrev — 将字符串里面的所有字母反向排列
strripos — 从后往前查找并返回首个匹配项的位置,匹配不区分大小写
strrpos – 从后往前查找并返回首个匹配项的位置
strspn — 匹配并返回字符连续出现长度的值
strstr — 通过比较返回一个字符串的部分
strtok — 用指定的若干个字符来分割字符串
strtolower — 将字符串转变为小写
strtoupper –将字符串转变为大写
strtr — 对字符串比较替换
substr_compare — 对字符串进行截取后的比较
substr_count — 计算字符串中某字符段的出现次数
substr_replace — 对字符串中的部分字符进行替换
substr — 对字符串进行截取
trim — 去除字符串两边的空白或者指定的字符
ucfirst — 将所给字符串的第一个字母转换为大写
ucwords — 将所给字符串的每一个英文单词的第一个字母变成大写
vfprintf — 按照要求对数据进行返回,并直接写入文档流
vprintf — 按照要求对数据进行显示
vsprintf — 按照要求对数据进行返回,但是不输出
wordwrap — 按照一定的字符长度分割字符串

VHD和VHDX:虚拟硬盘格式的区别

  Windows Server 2012的发布带来了虚拟化方面的许多改进,但是VHDX文件格式的推出却引起了许多IT专家的注意。Windows Server 2012支持新的格式,同时允许Hyper-V管理员使用以前的VHD格式。有两种虚拟硬盘格式可供选择,下面是VHD和VHDX的对比。
  VHD和VHDX简介
  相对之前的VHD格式,VHDX最大的优势之一在于虚拟硬盘存储容量。在Windows Server 2012之前,Hyper-V虚拟硬盘存在最大2TB的容量限制。而VHDX最大能够达到64TB。而VHDX的优势不只限于容量方面的改进,VHDX为现在的硬盘而设计,相比于VHD文件,其4KB大小的逻辑区域大小有助于提高性能。
  通过不断监控元数据更新,VHDX还提供在突然断电情况下的文件讹误保护功能,而VHD格式并不具备这个特性。为动态和差分磁盘提供更大的文件块,存储自定义元数据特性,这些都是VHD和VHDX的不同之处。
  转换为VHDX格式
  首先,需要知道的是可以在Windows Server 2012上创建和使用两种格式,但是VHDX文件和Windows Server 2008并不兼容。微软推荐大多数Windows Server 2012用户将VHD文件升级到VHDX,以使用其中的各种新特性。但是,如果你希望将虚拟机移动到之前版本的Windows Server上,那么使用VHD文件会更加方便。用户可以在Hyper-V中的编辑虚拟硬盘向导中将VHD文件转换为VHDX文件。