VMWARE 虚拟机磁盘文件格式
如果你使用像WinSCP或者Datastore Browser这样内置在VI Client里的文件浏览器在ESX主机上查看虚拟机的根目录,会看见与虚拟机相关的文件清单。多数文件以虚拟机的真实名字
开头,基于这个文件的类型,有 不同的文件扩展。除非你的虚拟机处于某种状态,否则不能看见所有可能的文件类型。例如,当虚拟机开启时只出现.vswp文件,当虚拟机暂停时只出 现.vmss文件。
描写植物的现代诗大全那么组成虚拟机的所有这些文件是什么?它们有什么用?下面我们详细讨论这些文件类型。
.nvram文件:这个小型文件包括虚拟机启动过程一部分的Phoenix BIOS。它类似于拥有BI
OS芯片的物理服务器,能够设置硬件配置选项。一台虚拟机也应该在NVRAM文件里有虚拟BIOS。当虚拟机首次启动时,按 F2键可以访问BIOS。不管虚拟机的硬盘配置发生了什么变化,都会保存在NVRAM文件里。这个文件是二进制的,如果删除的话,在虚拟机启动时会自动地 重新创建。
.vmx文件玉与翡翠的区别:这个文件包括虚拟机所有配置信息与硬件设置。不管你对虚拟机的设置作了何种编辑,所有的信息都会以文本形式保存在这个文件里。这个文件包括与虚拟机有关的多种信息,如特殊硬件配置(例如RAM大小、网络接口卡信息、硬盘驱动信息和串行与并行信息),高级能源与资源设置、VMware工具选项以及能源管理选项。虽然你可以直接编辑这个文件修改虚拟机配置,但不推荐你这样做,除非你清楚自己要怎么做。如果你直接对这个文件进行编辑,最好首先对文件进行备份。
VMDK文件: 所有的虚拟磁盘由两个文件组成,一个与虚拟磁盘大小相等的大型数据文件和一个小型文本磁盘描述文件,这个描述文件描述虚拟磁盘文件的大小与形状,也包括指 向大型数据文件,还有虚拟磁盘驱动扇区数、磁头数、柱面数及磁盘适配器的信息。多数情况下,这些文件与其相关的数据文件的名字相同(例如 myvm_1.vmdk和myvm_1-flat.v
mdk)。你可以通过检查文件里的Extent Description区域将描述性文件与数据文件匹配。
三种不同类型的虚拟磁盘数据文件能用于下面的虚拟机中:
∙ –flat.vmdk文件:这是个默认的大型虚拟磁盘数据文件,创建于你添加虚拟硬盘驱动到虚拟机时,而不是RDM。当使用厚磁盘时,这个文件的大小相当于你创建虚拟硬盘驱动时所指定的大小。
∙ –delta.vmdk文件:这些虚拟磁盘数据文件只用于创建虚拟机快照时。当创建了快照,对原始 flat.vmdk的所有写入都停止,并变成只读;然后这些对虚拟磁盘的更改将写入delta文件。这些文件的初始大小是16MB,然后随着对虚拟机虚拟 硬盘的更改需要而以16MB的速度增长。因为这些文件是虚拟磁盘所作更改的位图,一个单一delta.vmdk文件不能超过原始flat.vmdk文件的 大小。每为虚拟机创建一个快照就会生成一个delta文件,并且它们的文件名以数字递增(如myvm-000001-delta.vmdk和myvm- 000002-delta.vmdk)。当快照融合到原始–flat.vmdk文件后再删除时,这些文件将自动删除。
∙ -rdm.vmdk文件:这是RDM映射文件,用来管理RDM设备的映射信息。映射文件作为一般磁盘文件呈现 给ESX主机,可用于一般的文件系统操作。不过,对于虚拟机,存储虚拟化层将映射设备作为虚拟SCSI设备呈现。映射文件的元数据包括映射设备的位置(名 称解析)和映射设备的锁定状态。如果你作了目录列表,那么可以看见这些文件在VMFS占用的磁盘空间与其所映射的实际LUN的大小的一样的,不过事实上, 它们只是以这样的方式呈现而已,实际上非常小。每在虚拟机上创建一个RDM就会生成一个-rdm.vmdk文件。
.vswp file:在启动虚拟机时,如果ESX主机由于过量使用而消耗光其物理内存时,会创建一个内存交换 文件代替物理主机内存。这些文件的大小等于分配给虚拟机的内存大小,再减去任何内存预留(默认是0),例如,4GB虚拟机预留1GB,将创建3GB交换文 件。这些文件通常创建在虚拟机里,不过只有当主机耗尽所有物理内存时才使用。由于虚拟机内存读或写入磁盘没有物理主机RAM快,如果虚拟机开始使用这个文 件的话,性能会有所降低。这些文件会占用VMFS卷上非常大的磁盘空间,因此要确保有足够的可用空间,这是
因为如果没有足够的空间创建这个文件的话,虚拟 机启动不了。当虚拟机关闭或暂停时,这些文件将删除。七律长征的意思
.vmss文件:这个文件用于虚拟机暂停时,保存虚拟机的存储内容,以便在重新开始时继续运行。这个文件的大小 与分配给虚拟机的RAM的大小相同。当虚拟机再次运行时,这个文件的内容将写回主机服务器的物理内存,不过,这个文件不会自动删除,除非关闭虚拟机(操作 系统重启不管用)。当虚拟机再次暂停时,如果先前的暂停文件存在的话,这个文件将再次使用而不会删除和重新创建。当暂停虚拟机时,这个文件删除的话,那么 虚拟机将正常启动,而不是从暂停状态启动。
.vmsd文件:这个文件与快照一起使用,用于存储元数据和其他活动在虚拟机里的每个快照的信息。这个文本文件 在创建快照之前的初始大小是0字节,并在每次创建或删除快照时更新信息。这些现有文件中只有一个文件不管快照运行的数量,因为所有信息都更新在这个单一文 件。在这个文件里的快照信息由VMDK的名字与每个快照所使用的vmsn文件、显示名和描述以及快照的用户ID组成。一旦删除所有快照,这个文件保留了旧快照信息,不过憎加了新快照所使用的快照UID。它也重新命名第一个快照为“Consolidate Helper”,假设用于整合备份。
.vmsn文件桃花源记的成语:这个文件与快照一起使用,用于存储虚拟机在进行快照时的状态。每在虚拟机上创建一个快照就会生 成一个.vmsn文件,在删除快照时,文件自动删除。这个文件的大小基于你是否选择在快照里存储虚拟机的内存状态。如果你选择要存储内存状态,那么这个文 件比分配给虚拟机的RAM大得多,因为整个存储内容,包括空内存都复制到这个文件。如果你选择不存储快照的内存状态,那么这个文件非常小(小于 32KB)。当然,在暂停虚拟机时,这个文件的情况类似于.vmss。
.log文件:这些文件创建来用于存储虚拟机的日志信息,并常常用于故障检查。在虚拟机目录里,有大量的这样的 文件。当前的日志文件通常命名为vmware.log,往下的六个旧的日志文件也保留着,名字以数字结尾(如vmware-2.log)。在虚拟机关闭或 重新启动时,或者如果日志文件达到了所限制的最大值,就会创建一个新的日志文件。所保留的日志文件的数量和所限制的最大值都定义为虚拟机高级配置参数 (ateSize和log.keepOld)。
.vmxf文件:这是一个附加配置文件,不用于ESX,用于与Workstation兼容的目的。这个文件是文本格式,Workstation用来聚合虚拟机(VM teaming),将多个虚拟机分配成一组,作为一个单一对象开启或关闭、暂停或恢复它们。
上面的内容包含了所有与虚拟机相关的文件,阅读本文章后,将会对虚拟机的组成有更好的理解。现在你可以查看各种组成虚拟机的文件。你可能会发现VMFS卷上有一些未适当清理的旧数据。在你开始删除任何文件之前要小心谨慎,确保你要删除的文件不再需要或用到
2009年的印象:
曾经有过一段时间,徘徊于对虚拟机硬盘格式的迷惑中,2009年,终于得出了一些结论(下面的思路基本通用于其他虚拟机)
曾经有过一段时间,徘徊于对虚拟机硬盘格式的迷惑中,2009年,终于得出了一些结论(下面的思路基本通用于其他虚拟机)
搜了下,发现大部分用qemu或者kvm的,都默认使用qcow2来作为虚拟硬盘,但qemu官方默认是用raw。
下面是qemu wiki对两种格式的描述:
raw
Raw disk image format (default). This format has the advantage of being simple and easily exportable to all other emulators. If your file system supports holes (for example in
下面是qemu wiki对两种格式的描述:
raw
Raw disk image format (default). This format has the advantage of being simple and easily exportable to all other emulators. If your file system supports holes (for example in
ext2 or ext3 on Linux or NTFS on Windows), then only the written sectors will reserve space. Use qemu-img info to know the real size used by the image or ls -ls on Unix/Linux.
qcow2
QEMU image format, the most versatile format. Use it to have smaller images (useful if your filesystem does not supports holes, for example on Windows), optional AES encryption, zlib based compression and support of multiple VM snapshots.
raw的优势(能到的相关资料太少,不知道是不是理解有误):
1、简单,并能够导出为其他虚拟机的虚拟硬盘格式
2、根据实际使用量来占用空间使用量,而非原先设定的最大值(比如设定最高20G,而实际只使用3G)。——需要宿主分区支持hole(比如ext2 ext3 ntfs等)
3、以后能够改变空间最大值(把最高值20G提高到200G,qcow2也可以,不过要转为raw)
4、能够直接被宿主机挂载,不用开虚拟机即可在宿主和虚拟机间进行数据传输(注意,此
qcow2
QEMU image format, the most versatile format. Use it to have smaller images (useful if your filesystem does not supports holes, for example on Windows), optional AES encryption, zlib based compression and support of multiple VM snapshots.
raw的优势(能到的相关资料太少,不知道是不是理解有误):
1、简单,并能够导出为其他虚拟机的虚拟硬盘格式
2、根据实际使用量来占用空间使用量,而非原先设定的最大值(比如设定最高20G,而实际只使用3G)。——需要宿主分区支持hole(比如ext2 ext3 ntfs等)
3、以后能够改变空间最大值(把最高值20G提高到200G,qcow2也可以,不过要转为raw)
4、能够直接被宿主机挂载,不用开虚拟机即可在宿主和虚拟机间进行数据传输(注意,此
时虚拟机不要开)
而qcow2的优势:
1、更小的虚拟硬盘空间(尤其是宿主分区不支持hole的情况下)
2、optional AES encryption, zlib based compression and support of multiple VM snapshots.
另外,根据fedora12的wiki,说测试结果是raw比qcow2性能更好,即使是新版的qcow2。/w2_Performance
如果单纯靠这些信息,那么raw好像更有优势,而且更方便。(raw支持快照否???)
那么,为什么大家都默认使用qcow2呢?为什么?
同样的,还有vmdkvdi等虚拟机硬盘格式的优劣表现在哪方面呢?
而qcow2的优势:
1、更小的虚拟硬盘空间(尤其是宿主分区不支持hole的情况下)
2、optional AES encryption, zlib based compression and support of multiple VM snapshots.
另外,根据fedora12的wiki,说测试结果是raw比qcow2性能更好,即使是新版的qcow2。/w2_Performance
如果单纯靠这些信息,那么raw好像更有优势,而且更方便。(raw支持快照否???)
那么,为什么大家都默认使用qcow2呢?为什么?
同样的,还有vmdkvdi等虚拟机硬盘格式的优劣表现在哪方面呢?
又看到一个资料,说raw 格式是一种张钧甯男朋友”直读直写”的格式,不具备特殊的特性。也就是说,qcow2具备的这两个AES encryption, zlib based compression,raw就没有。
kqemu是qemu的内核加速模块,不是kvm。wiki里qemu部分有写,和kvm是分为两部分的,是两种不同的内核加速模块。
qemu跑98、me、xp是很慢的,但跑win95,win2000,是飞速的,尤其是win2000(nnd,win2000好像在普通电脑里相比那几个好像是最慢的)。98、me要快,可以用定制版的windows,好像叫lite的。
2010年的印象:
更进一步认识,并修正上面的看法
更进一步认识,并修正上面的看法
但今天(2010年)再回过头来看,发现其实raw更好:
raw相比qcow2就缺乏的四个功能,但都能通过别的方式解决:
1、加密功能:把raw本身就当普通文件加密之搞定
2、快照功能:把raw加入版本管理目录中,具体需要的设置可能稍微有点多。
3、宿主机不支持按需打孔模式(hole):这个可以自己根据使用情况来扩展raw的最大值
2、快照功能:把raw加入版本管理目录中,具体需要的设置可能稍微有点多。
3、宿主机不支持按需打孔模式(hole):这个可以自己根据使用情况来扩展raw的最大值
4、硬盘压缩:就当普通电脑文件压缩之即可
而raw有qcow2所无法媲美的功能:
1、效率高于qcow2
2、直接读写虚拟机硬盘里面的文件,这比较“暴力”,但既然可以这么暴力,那么也就不怕虚拟机出任何问题了。
而raw有qcow2所无法媲美的功能:
1、效率高于qcow2
2、直接读写虚拟机硬盘里面的文件,这比较“暴力”,但既然可以这么暴力,那么也就不怕虚拟机出任何问题了。
3、通用性好,是转为其他虚拟机的格式的通用中间格式,这样就不用担心转换虚拟机系统了。
==================================================================
补充一:
如何让KVM等各种虚拟系统能够拿到本地硬件的原始级别图形加速功能:
皮蛋瘦肉粥做法在linuxsir上playfish提到:可以让kvm拿到native级别的图形加速性能。
目前我对spice仍然不熟,感觉就是一个虚拟机统一后端/前端图形界面,但这个用远程桌面不也可以实现?(已经被我下面的否定了,两者不一样,spice应该是:远程桌面+远程资源本地映射)
刚刚看了其英文介绍,简要翻译下:
硬件加速方面:
1、“客户端”2D使用通用的Cairo渲染
2、“客户端”windows下使用GDI,linux下使用Opengl
3、使用“客户端”的GPU来替换CPU渲染:可因此获得高效的渲染,并改善虚拟机的CPU使用率
4、“服务端”使用Opengl来渲染
目前我对spice仍然不熟,感觉就是一个虚拟机统一后端/前端图形界面,但这个用远程桌面不也可以实现?(已经被我下面的否定了,两者不一样,spice应该是:远程桌面+远程资源本地映射)
刚刚看了其英文介绍,简要翻译下:
硬件加速方面:
1、“客户端”2D使用通用的Cairo渲染
2、“客户端”windows下使用GDI,linux下使用Opengl
3、使用“客户端”的GPU来替换CPU渲染:可因此获得高效的渲染,并改善虚拟机的CPU使用率
4、“服务端”使用Opengl来渲染
ps:这很好玩,不管虚拟的机子是什么类型,都可以根据自己电脑的配置,来使用本地的硬件,那这样的话,同样的一个虚拟机,在不同的电脑上显示效果可就不一样了。
==============================================================
补充二:
补充二:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论