主要有如下几类:
xml文件:虚拟机的配置文件
vsv文件:虚拟机状态文件
bin文件:虚拟机内存状态文件
vhd或者vhdx文件:虚拟磁盘文件
avhd或者vahdx文件:快照磁盘文件
主要有如下几类:
xml文件:虚拟机的配置文件
vsv文件:虚拟机状态文件
bin文件:虚拟机内存状态文件
vhd或者vhdx文件:虚拟磁盘文件
avhd或者vahdx文件:快照磁盘文件
转载于:https://blog.51cto.com/merrist/1302106
很多时候,会遇到和虚拟机的不同类型的文件及其功能相关的问题。虚拟机的文件被存放在数据存储上名称为虚拟机名的文件夹内,数据存储中的文件将取决于虚拟机的当前状态(开机/关机/挂起)以及对其执行的操作。
1. VMName.vmx 虚拟机的配置文件.vmx文件中提供了有关虚拟机的所有详细信息
(虚拟硬件详细信息、客户机操作系统、虚拟网络)
每次创建虚拟机时,都会根据在新虚拟机创建向导期间选择的设置来补充.vmx文件。
2. vmx-VMName.vswp 虚拟机可执行文件(VMX)允许主机极大地减少为每个虚拟机预留的内存开销。
ESXi出于各种目的为每个虚拟机预留内存。打开虚拟机电源后,将完全预留满足某些组件(例如虚拟机监视器(VMM)和虚拟设备)需求的内存。但是,为VMX进程保留的一些内存开销可以交换。
VMX交换特性大大减少了VMX内存预留。这样可以在过量使用主机内存时将剩余的内存换出,从而减少了每个虚拟机的内存预留开销。主机将自动创建VMX交换文件,前提是在虚拟机启动时有足够的可用磁盘空间。
3. VMName.vswp .vswp文件是在VM开机时创建的,并将在资源争用期间使用。
该文件的大小取决于分配给虚拟机的内存-预留(如果有)。
例如,如果分配为2600 MB - 预留1500 MB = 1100 MB,即.vswp的大小。
更好地理解它的另一个示例分配1500 MB – 预留1500 MB = 0 Kb是.vswp文件的大小。
即使分配和预留的大小相等,仍将创建交换文件。
4. VMName.nvram 存储虚拟机BIOS的状态,类似于非易失性RAM。
5. VMware.log 用于解决与虚拟机有关的问题的主日志文件。除了当前的日志文件外,一次最多可以维护六个归档日志文件。
下次关闭虚拟机电源并重新打开电源后,将删除第一个日志文件,并创建另一个日志文件。(从vmware.log-1到vmware.log-6)(从vmware.log-2到vmware log -7)等。
6. VMName.vmtx 将虚拟机转换为模板时,.vmx文件将转换为.vmtx文件,并保留虚拟机的配置作为主副本。
7. VMname-rdm.vmdk 将RDM添加到虚拟机以将虚拟机数据直接存储在LUN而不是将其存储在虚拟磁盘中时,会创建裸设备映射文件。
但是,该文件仅包含有关实际数据存储在LUN上的磁盘的信息。
8. VMName.vmdk andVMname-flat.vmdk vmdk是磁盘描述符文件,flat.vmdk是磁盘数据文件,其中.vmdk是指向flat.vmdk的指针文件。
虚拟磁盘由一个或多个虚拟磁盘文件组成。虚拟机设置将显示集合中第一个文件的名称。该文件包含指向集合中其他文件的指针。
如果指定在创建虚拟磁盘时应分配所有磁盘空间,则这些文件以最大大小开始,并且不会增长。几乎所有文件内容都是虚拟机数据。文件的一小部分分配给虚拟机的开销。
9. VMName.vmss 挂起的状态文件,它存储挂起的虚拟机的状态。
10. VMName.vmsd, VMName.vmsn and delta.vmdk .vmsd是快照数据文件,用于存储与每个虚拟机关联的快照的信息。
.vmsn快照状态文件,用于存储创建快照时虚拟机的运行状态。它存储在工作目录中。
delta.vmdk-快照磁盘文件,代表虚拟磁盘的当前状态与获取上一个快照时存在的状态之间的差异。
**备注:**如果虚拟机位于NFS数据存储上,则它还有一个附加的锁定文件。
如果虚拟机由vSphereData Protection设备或其他具有CBT功能的备份软件备份,则虚拟机具有.ctk文件更改阻止跟踪文件
扫码关注公众号,获取更多解决方案!
目录
虚拟机的磁盘文件类型
Nova 虚拟机的虚拟磁盘主要包含有 Root Disk、Ephemeral Disk、Swap Disk、Block Storage 等几种类型。
Root Disk – virtual root disk size in glgabytes. This is an ephemeral disk the base image is copied into. You don’t use it when you boot from a persistent volume. The “0” size is a special case that uses the native base image size as the size of the ephemeral root volume.
Root Disk(根分区)系统盘,提供 Boot Loader。
Swap – Optional swap space allocation for the instance
Swap Disk(交换分区)交换盘。用于虚拟机内存耗尽时,协助承载内存压力。
Ephemeral – Specifies the size of a secondary ephemeral data disk. this is an empty unformatted disk and exists only for the life of the instance.
Ephemeral Disk 临时盘,非持久性存储空间,会随着虚拟机的生命周期被创建和回收。
Block Storage – Volume from Cinder
Block Storage(块存储)数据盘,由 Cinder 提供的持久性存储空间。
OpenStack 提供了 Nova Flavor 和
nova boot
指令两种操作入口来指定虚拟机的磁盘类型:[stack@undercloud (overcloudrc) ~]$ openstack flavor create usage: openstack flavor create [-h] [-f {html,json,json,shell,table,value,yaml,yaml}] [-c COLUMN] [--max-width <integer>] [--noindent] [--prefix PREFIX] [--id <id>] [--ram <size-mb>] [--disk <size-gb>] [--ephemeral <size-gb>] [--swap <size-gb>] [--vcpus <vcpus>] [--rxtx-factor <factor>] [--public | --private] [--property <key=value>] [--project <project>] [--project-domain <project-domain>] <flavor-name>
[--disk <size-gb>]
:系统盘[--ephemeral <size-gb>]
:临时盘[--swap <size-gb>]
:交换盘[stack@undercloud (overcloudrc) ~]$ nova boot
usage: nova boot [--flavor <flavor>] [--image <image>]
[--image-with <key=value>] [--boot-volume <volume_id>]
[--snapshot <snapshot_id>] [--min-count <number>]
[--max-count <number>] [--meta <key=value>]
[--file <dst-path=src-path>] [--key-name <key-name>]
[--user-data <user-data>]
[--availability-zone <availability-zone>]
[--security-groups <security-groups>]
[--block-device-mapping <dev-name=mapping>]
[--block-device key1=value1[,key2=value2...]]
[--swap <swap_size>]
[--ephemeral size=<size>[,format=<format>]]
[--hint <key=value>]
[--nic <auto,none,net-id=net-uuid,net-name=network-name,port-id=port-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,tag=tag>]
[--config-drive <value>] [--poll] [--admin-pass <value>]
[--access-ip-v4 <value>] [--access-ip-v6 <value>]
[--description <description>]
<name>
[--image <image>]
:Boot from image 的镜像文件[--boot-volume <volume_id>]
:Boot from volume 的块设备[--snapshot <snapshot_id>]
:Boot from snapshot(Snapshot 可以来自 Image,也可能来自 Volume)[--ephemeral size=<size>[,format=<format>]]
:临时盘[--swap <swap_size>]
:交换盘[--block-device key1=value1[,key2=value2...]]
:块设备隐射(可指定多种来源类型),key-value 选项如下
[--block-device-mapping <dev-name=mapping>]
:块设备隐射(只指定 Volume 类型),mapping 的格式为 <dev-name>=<id>:<type>:<size(GB)>:<delete-on-terminate>
NOTE:在实际使用中,建议通过 Flavor 的方式来使用 Ephemeral 和 Swap 磁盘,因为 nova boot
指定的 ephemeral size 和 swap size 不能大于 Flavor 设定的值,很容易造成冲突。
通过对以上虚拟机磁盘类型的了解,在生产环境中使用 Boot from Volume 的虚拟机启动方式会是一种不错的选择。以 Volume 作为 Root Disk 的话,Volume 不会随着虚拟机删除而销毁。Boot from Volume 有着更高的数据安全性,是大多数 OpenStack 企业级产品提供的默认选项。
Openstack 虚拟机磁盘文件的存放方式大致上可以概括为 Local(本地)和 backend(后端存储)两种形式。
instances_path = /var/lib/nova/instances
[libvirt]
# VM Images format.
# Allowed values: raw, flat, qcow2, lvm, rbd, ploop, default
images_type = rbd
# The RADOS pool in which rbd volumes are stored (string value)
images_rbd_pool = rbd
# Path to the ceph configuration file to use (string value)
images_rbd_ceph_conf = /etc/ceph/ceph.conf
这里以 Ceph RBD 为例,当 Libvirt 对接了 Ceph RBD Backend,那么虚拟机的磁盘文件不再存放到计算节点本地,Ceph 通过精简配置的快照复制(snapshotted-cloned)卷(又称快照链接)来帮助 Libvirt 快速启动虚拟机,虚拟机的数据变更通过 rbd 协议写入 Ceph 块存储。此时的 instances_path
目录作为 console.log、disk.info、Ephemeral file、Swap file 的存放路径。可见 Ephemeral file、Swap file 总是 Local 的,会随着虚拟机的删除而完全销毁,除非特殊需求,否则不建议使用。
[root@localhost ~]# ll /opt/stack/data/nova/instances/9b17609e-13b8-448d-a225-e69b797e83c4/
total 416
-rw-------. 1 root root 18067 Mar 21 12:08 console.log
-rw-r--r--. 1 qemu qemu 196624 Mar 21 12:07 disk.eph0
-rw-r--r--. 1 stack libvirtd 181 Mar 21 12:07 disk.info
-rw-r--r--. 1 qemu qemu 196616 Mar 21 12:07 disk.swap
当然还有一种场景,Nova 使用 NFS 后端存储来存放虚拟机磁盘文件。与 Ceph RBD 不同,NFS 以文件存储的方式 mount 到计算节点本地的(注:CephFS 也支持文件存储,这里以 NFS 为例)。e.g.
mount {nfs_server_ipaddr}:/instances /var/lib/nova/instances
chown -R nova:nova /var/lib/nova/instances
chmod 755 /var/lib/nova/instances
此时,虽然虚拟机磁盘文件存放到了后端存储,但对于 Libvirt 而言这些文件依旧是存放在本地文件系统上的,不需要通过特殊的协议访问,只是单纯的本地文件访问,所以我将这种存放形式归纳到 Local 行列。
QCOW2 是 QEMU-KVM 常用的 Image 格式,也是常见的虚拟机 disk_format。当采用 Local 磁盘文件存放方式时,Nova 通过 qemu-img 指令对此格式的磁盘文件进行管理。关于 qemu-img 指令的详细使用方式在 《QCOW2/RAW/qemu-img 概念浅析》中已经有过记录,这里不再赘述。
QCOW2 – QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression.
QCOW2 的特性:
其中我们关心 QCOW2 的 COW 特性,COW(Copy-On-Write,写时复制,或称即写即拷)是一种快照技术,更多的 COW 实现原理可以浏览《再谈 COW、ROW 快照技术》。简而言之,当使用 QCOW2 Image 创建虚拟机并且虚拟机的磁盘文件存放方式是 Local 的话,那么虚拟机 Root file 本质只是一个 QCOW2 Image 的快照链接,而非从 Glance download 到本地的 QCOW2 Image。与 Ceph RBD 类似的,这个快照链接同样用于记录 GuestOS 对磁盘的读写变更,Root file 会随着虚拟机的使用而膨胀,直到 Root file size 达到 Flavor Disk_GB 的上限为止。
EXAMPLE:
[root@overcloud-ovscompute-0 instances]# qemu-img info 84603dbf-cf56-4c7d-b8a9-3ca83970682d/disk
image: 84603dbf-cf56-4c7d-b8a9-3ca83970682d/disk
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 30M
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/309eee24778f158af7ae57d8843e698d48f43d4a
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@overcloud-ovscompute-0 instances]# qemu-img info 744a1c9f-705d-4294-89cf-dadbb1b6ca8c/disk
image: 744a1c9f-705d-4294-89cf-dadbb1b6ca8c/disk
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 30M
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/309eee24778f158af7ae57d8843e698d48f43d4a
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@overcloud-ovscompute-0 instances]# qemu-img info /var/lib/nova/instances/_base/309eee24778f158af7ae57d8843e698d48f43d4a
image: /var/lib/nova/instances/_base/309eee24778f158af7ae57d8843e698d48f43d4a
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 881M
上述输出,两个虚拟机的根磁盘文件有着共同的 backing file /var/lib/nova/instances/_base/309eee24778f158af7ae57d8843e698d48f43d4a,这个文件才是从 Glance 拉到本地的 QCOW2 Image。所以,我更愿意将虚拟机磁盘文件称为 disk file,将 QCOW2 Image 称为 base file,两者的结合才是虚拟机在当前时刻的完整数据。这种利用了 QCOW2 特性的虚拟机磁盘文件处理方式的好处在于占用了更小的磁盘空间,但在虚拟机迁移场景中要引起注意,如果只是迁移 disk file 的话,将无法得到虚拟机的完整数据。
Initially the image is downloaded from glance and cached in libvirt base. We’ll consider the options for handling a qcow2 image stored in glance, as that format can be downloaded quite efficiently from glance as it supports compression, and image sparseness can be maintained. This article will focus on the flow and transformations in “libvirt base”, which is used to cache, preprocess and optionally back, VM disk images.
NOTE:Ephemeral file 和 Swap file 也一样,不做过多讨论。
随带一提,如果 Nova、Cinder、Glance 都使用了 Ceph RBD 后端存储。那么 Image 是以 RAW(裸数据)格式存储的,依赖 Ceph 块存储的 COW 特性来达到与 QCOW2 类似,甚至更完备的效果。
1、已经有了VirtualBox虚拟机文件,如果我们要把虚拟机文件移到其他机器上使用,可以通过这个文件还原原来装好的VirtualBox虚拟机2、进入VBOX的管理器,点击控制--新建(图1)3、录入一个新的虚拟机名字Tbc3,选择类型和版本,设置内存,选择使用已有的虚拟硬盘文件,点击创建(图2)4、回到如下界面(图3)5、点击启动(图4)6、进入系统启动界面(图5)