精华内容
下载资源
问答
  • 虚拟机虚拟磁盘文件格式转换

    千次阅读 2016-10-13 21:50:39
    虚拟机磁盘文件格式转换 vdi是VirtualBox出的文件格式,vmdk是VMWare出的文件格式,有个需求是将vdi文件转为vmdk文件,以至于VMWare能加载虚拟磁盘 cmd命令:D:\Oracle\VirtualBox\VBoxManage clonehd F:\...

    虚拟机磁盘文件格式转换

    vdi是VirtualBox出的文件格式,vmdk是VMWare出的文件格式,有个需求是将vdi文件转为vmdk文件,以至于VMWare能加载虚拟磁盘

    cmd命令:D:\Oracle\VirtualBox\VBoxManage clonehd F:\VirtualMachine\ubuntu14_serv32\ubuntu.vdi F:\VirtualMachine\ubuntu_out.vmdk -format vmdk



    以下摘选自官方文档:http://informatica.uv.cl/~gabriel/docs/manual_Virtual_Box_html/ch08.html#vboxmanage-clonevdi

    VBoxManage clonehd

    This command duplicates a registered virtual hard disk image to a new image file with a new unique identifier (UUID). The new image can be transferred to another host system or imported into VirtualBox again using the Virtual Media Manager; seethe section called “The Virtual Media Manager” and the section called “Cloning disk images”. The syntax is as follows:

    VBoxManage clonehd         <uuid>|<filename> <outputfile>
                               [--format VDI|VMDK|VHD|RAW|<other>]
                               [--variant Standard,Fixed,Split2G,Stream,ESX]
                               [--existing]

    The disk image to clone as well as the target image must be described either by its UUIDs (if the mediums are registered) or by its filename. Registered images can be listed byVBoxManage list hdds (see the section called “VBoxManage list” for more information). A filename must be specified as valid path, either as an absolute path or as a relative path starting from the current directory.

    The following options are available:

    format

    Allow to choose a file format for the output file different from the file format of the input file.

    variant

    Allow to choose a file format variant for the output file. It is a comma-separated list of variant flags. Not all combinations are supported, and specifying inconsistent flags will result in an error message.

    existing

    Perform the clone operation to an already existing destination medium. Only the portion of the source medium which fits into the destination medium is copied. This means if the destination medium is smaller than the source only a part of it is copied, and if the destination medium is larger than the source the remaining part of the destination medium is unchanged.

               

                   Note

                   For compatibility with earlier versions of VirtualBox, the "clonevdi" command is also supported and mapped internally to the "clonehd" command.

    展开全文
  • VMware虚拟机虚拟磁盘的分割与合并

    万次阅读 2015-11-20 17:50:28
    平常使用 VMware 构建虚拟机,有两种构建磁盘文件的方式:(1)使用单个文件存储虚拟磁盘;(2)多个文件存储虚拟磁盘。其中第(2)种方式,拆分磁盘后,可以更轻松地在计算机之间移动虚拟机,但可能会降低大容量...

    1 摘要

    一般来说平常使用 VMware 创建虚拟机,有两种构建磁盘文件的方式(如图1-1所示):
    (1)使用单个文件存储虚拟磁盘;
    (2)多个文件存储虚拟磁盘。
    其中方式(2)将虚拟磁盘拆分为多个文件,可以更轻松地在计算机之间移动虚拟机,但可能会降低大容量磁盘的性能。方式(1)将虚拟磁盘存储为单个文件,虽然提高了磁盘的读写性能,但是对于对于大文件的移动和存储是一个问题。就该问题本文对于这两种方式之间的转换做了一个总结,并使用具体例子,详解了如何通过VMware自带的磁盘管理工具,来对虚拟磁盘文件进行分割与合并。

    这里写图片描述
    图1-1 VMware虚拟机添加硬件向导

    2 虚拟磁盘管理工具

    VMware提供了虚拟磁盘管理工具vmware-vdiskmanager。使用命令行可以管理虚拟磁盘文件,包括磁盘的。它有许多功能,使用命令vmware-vdiskmanager.exe -h可以查看它所有的功能(如图2-1所示)。

    这里写图片描述
    图2-1 VMware虚拟磁盘管理工具

    其中,-r参数指定源磁盘文件;-t参数指定输出虚拟磁盘文件的类型,其值为以下类型之一:
    0:创建一个包含在单一虚拟文件中的可增长虚拟磁盘
    1:创建一个被分割为每个文件2GB大小的可增长虚拟磁盘
    2:创建一个包含在单一虚拟文件中的预分配虚拟磁盘
    3:创建一个被分割为每个文件2GB大小的预分配虚拟磁盘

    3 虚拟磁盘文件的分割与合并

    3.1 多个文件合并为单个文件

    如图3-1所示,将图中名为Windows Server 2003 Enterprise Edition.vmdk的文件以及名为Windows Server 2003 Enterprise Edition-sXXX.vmdk的文件合并为一个名为Merged.vmdk的文件。

    这里写图片描述
    图3-1 使用多文件存储的虚拟磁盘

    打开命令行界面并切换到VMware Workstation目录,输入命令:

    vmware-vdiskmanager.exe -r "D:\Virtual Machines\Windows Server 2003 Enterprise Edition.vmdk" -t 0 "D:\Virtual Machines\Merged.vmdk"
    

    命令的格式是:vmware-vdiskmanager.exe -r [源文件] -t 0 [目标文件]。其中[源文件]是待转换的文件;[目标文件]是转换后生成的文件(此文件在系统中是不存在的,只有转换后才存在。所以需要自己为其命名,后缀名为.vmdk);-t后的参数是0表示将源文件合并为一个目标文件。

    这里写图片描述
    图3-2 多文件合并为单文件过程

    3.2 单个文件分割为多个文件

    如下图中的ws03-add.vmdk文件是新增的虚拟磁盘的单个文件即单文件存储的虚拟磁盘。现在利用vmware-vdiskmanager.exe工具对其进行分割,将其分割为多个不超过2G的文件。

    这里写图片描述
    图3-3 使用单文件存储的虚拟磁盘

    打开命令行界面,切换到VMware Workstation目录,输入以下命令:

    vmware-vdiskmanager.exe -r "D:\Virtual Machines\ws03-add.vmdk" -t 1 "D:\Virtual Machines\Split.vmdk"
    

    命令的格式是:vmware-vdiskmanager.exe -r [源文件] -t 1 [目标文件]。其中[源文件]是待转换的文件;[目标文件]是转换后生成的文件(此文件系统中是不存在的,只有转换后才存在。所以需要自己为其命名,后缀名为.vmdk);-t后的参数是1表示将源文件分割为多个目标文件。

    这里写图片描述
    图3-4 单文件分割为多文件过程

    后记

    如果仅仅是为了移动虚拟机的话,不妨用好压的分卷压缩功能。分卷压缩可以把一个较大的文件进行压缩成多个较小的分卷文件,这样能方便地存储和移动。如下图所示,可以设置分卷的大小对大文件或者文件夹进行压缩。

    这里写图片描述

    展开全文
  • 减小VMware虚拟机虚拟磁盘大小

    千次阅读 2020-08-27 10:54:37
    vmware虚拟机的所有编号了的.*s001.*.vmdk分片虚拟磁盘文件是虚拟化的虚拟机当前分区的磁盘文件,比如Win10虚拟机只有一个C盘分区是68.39GB,这68.39GB可能没有完全使用,但主机上的虚拟磁盘文件仍然会完整地构造...

    减小 vmware 虚拟机的硬盘容量,不是压缩

    vmware虚拟机的所有编号了的.*s001.*.vmdk片段虚拟磁盘文件是虚拟化的虚拟机最大空间(Maximum Size),比如我有一个Win10虚拟机的Maximum Size是84GiB(1GiB=1024MiB,1GB=1000MB),虚拟机生成了.*s001~s022.vmdk共22个虚拟机磁盘文件vmdk,该虚拟机的"Window 10 x64-cl1.vmdk"中详实记录了这22个vmdk文件(从而进行各分片虚拟磁盘文件的按名索引):

    RW 8323072 SPARSE "Windows 10 x64-cl1-s001.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s002.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s003.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s004.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s005.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s006.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s007.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s008.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s009.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s010.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s011.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s012.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s013.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s014.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s015.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s016.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s017.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s018.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s019.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s020.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s021.vmdk"
    RW 1376256 SPARSE "Windows 10 x64-cl1-s022.vmdk"

    ,vmdk文件的"8323072"数字表示簇,2簇=1KiB,则这22个vmdk文件对应了21×8323072/2/1024/1024+1376256/2/1024/1024=21×3.96875GiB+0.65625Gib=84GiB,将将好。

     

     

    但同时也注意到8323072簇的虚拟磁盘文件的大小并不等于3.96875GiB,从最小的s014.vmdk的524.3KiB到最大的s006.vmdk的4.1GiB各不相同,我猜这可能是使用了某种压缩算法,毕竟这84GiB包含了529MiB+99MiB+68.39GiB+14.98GiB≈83.98GiB共四个分区,14.98GiB的未分配分区不必占用虚拟磁盘,而68.39GiB的C盘也只利用了89%,可以看到,排除空闲空间后的有效数据,即所有22个虚拟磁盘的总大小为56.8GiB≈529MiB+99MiB+68.39GiB-13.13GiB=55.87GiB。

    虚拟机只存储"压缩后的有效数据",实际占用主机的存储空间接近Current Size(要大一些),这些有效数据只能通过vmware tools或者虚拟机设置里Disk Utilities的Defragment Disk与Compact Disk进行压缩

    好了,弄懂虚拟机虚拟磁盘的分配方式后就需要解决“如何减小分配给虚拟机的最大空间Maximum Size”的问题了,

    解决办法:先确定一个大于Current Size的目标Maximum Size,我希望缩小到65GiB=1363148880簇=16×8323072簇+3145728簇,修改"Window 10 x64-cl1.vmdk"中片段虚拟磁盘的簇为:

    RW 8323072 SPARSE "Windows 10 x64-cl1-s001.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s002.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s003.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s004.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s005.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s006.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s007.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s008.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s009.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s010.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s011.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s012.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s013.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s014.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s015.vmdk"
    RW 8323072 SPARSE "Windows 10 x64-cl1-s016.vmdk"
    RW 314572  SPARSE "Windows 10 x64-cl1-s017.vmdk"
    #RW 8323072 SPARSE "Windows 10 x64-cl1-s017.vmdk"
    #RW 8323072 SPARSE "Windows 10 x64-cl1-s018.vmdk"
    #RW 8323072 SPARSE "Windows 10 x64-cl1-s019.vmdk"
    #RW 8323072 SPARSE "Windows 10 x64-cl1-s020.vmdk"
    #RW 8323072 SPARSE "Windows 10 x64-cl1-s021.vmdk"
    #RW 1376256 SPARSE "Windows 10 x64-cl1-s022.vmdk"

    然后启动虚拟机,如果报错虚拟机所在磁盘分区空间不足,那确实是磁盘分区空间不足,增加虚拟机所在主机磁盘分区。此时虽然能启动,但如果尝试使用vmtools压缩磁盘可能会在99%时跳到宿主机的压缩消息框时提示Snapshot power on failed或者Insufficient permission to access the file等的其他问题,所以不要尝试压缩了,关机虚拟机,然后VM > Manage > Clone把当前虚拟机克隆到U盘上,此时打开克隆的虚拟机会看到Current Size缩小到了45.6GiB并且System Free的要求也降到了9.6GiB,完了删除当前虚拟机,然后将U盘上克隆的虚拟机再拷贝回来,只要保证虚拟机所在磁盘分区剩余空间大于System Free要求的9.6GiB就可以在虚拟机使用vmtools进行磁盘压缩了。

    Maximum Size成功缩小,修改*.vmx的簇之后启动虚拟机后使用vmtools压缩虚拟磁盘文件时,由于Current Size没变,则虚拟机在压缩虚拟磁盘时仍需要原来那么大的转储空间,这个空间要求比System Free大一些,所以会在压缩到99%时报各种错,我没有记录下来。这时关闭虚拟机,对虚拟机进行克隆Clong,则克隆后的Current Size会减小,这时候vmtools压缩需要的转储空间也会减小,只要给虚拟机所在磁盘分区留有比System Free和这个转储空间大的剩余空间,就可以成功用vmtools压缩了,至于这个转储空间是多少,我是试出来的。

    System Free可能有考虑到*.vmem虚拟内存文件的大小,和其他的不知道什么需求。总之要能在虚拟机内使用vmtools压缩,则虚拟机所在主机磁盘分区的剩余空间要比System Free大个5GiB作用,我试出来的。

    展开全文
  • 目录 文章目录目录虚拟机磁盘文件类型...Nova 虚拟机虚拟磁盘主要包含有 Root Disk、Ephemeral、Swap、Block Storage 等几种类型。 Root Disk – virtual root disk size in glgabytes. This is an ephemera...

    目录

    虚拟机的磁盘文件类型

    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 选项如下
      • source=image|snapshot|volume|blank
      • id={uuid} (a volume|image|snapshot UUID if using source=volume|snapshot|image)
      • *dest=volume|local
      • *format=swap|ext4|…|none (to format the image/volume/ephemeral file; defaults to ‘none’ if omitted)
      • *bus=ide|usb|virtio|scsi (hypervisor driver chooses a suitable default if omitted)
      • *device=the desired device name (e.g. /dev/vda, /dev/xda, …)
      • *type=disk|cdrom|floppy|mmc (defaults to ‘disk’ if omitted)
      • *bootindex=N (where N is any number >= 0, controls the order in which disks are looked at for booting)
      • (size=NN (where NN is number of GB to create type=emphemeral image, or the size to re-size to for type=glance|cinder)
      • *shutdown=preserve|remove
      • NOTE:* 表示可选项
        在这里插入图片描述
    • [--block-device-mapping <dev-name=mapping>]:块设备隐射(只指定 Volume 类型),mapping 的格式为 <dev-name>=<id>:<type>:<size(GB)>:<delete-on-terminate>
      • id:UUID of Volume|Snapshot
      • *dev-name:Volume 在虚拟机中的设备名,e.g. /dev/sda
      • *type:snapshot|blank,snapshot 则表示 Volume 是从 Snapshot 上
      • *size (GB): Volume Size
      • *delete-on-terminate(Boolean):标识是否随虚拟机一起被删除

    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(后端存储)两种形式。

    • Local,顾名思义,虚拟机的磁盘文件存放在计算节点本地,由 nova.conf 配置项 instances_path 指定目录路径。e.g.
    instances_path = /var/lib/nova/instances
    
    • backend,即 Nova 启用了后端存储,或者说 Nova 底层的 Hypervisor 启用了后端存储更为准确。e.g.
    [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-img 指令

    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 的特性

    • COW
    • 支持多重快照,又称链式快照
    • 占用更小的存储空间
    • AES 加密
    • zlib 压缩

    其中我们关心 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 类似,甚至更完备的效果。

    参考文章

    https://www.cnblogs.com/sammyliu/p/4462718.html

    展开全文
  • 用vboxmanager.exe,修改虚拟硬盘的uuid。
  • 目标:实现磁盘共享,多虚拟机同步访问磁盘格式化后的文件系统. 配置: 1 集群层面配置可共享的虚拟磁盘. A 创建虚拟机时,一定要设置好scsi ...B 为其他虚拟机添加磁盘文件时,选择 "使用现有虚拟磁盘" ,然后浏...
  • 经常在Windows机下安装虚拟Linux操作系做实验,为了节省硬盘空间,并...虚拟机使用的真实空间其实远远小于宿主机上的虚拟磁盘大小,因此需要经常性的Shrink下虚拟磁盘对节约硬盘资源意义重大。  网上对缩小虚拟硬盘
  • 案例四:在vCenter上通过虚拟机模板部署虚拟机的时候报错,虚拟磁盘文件vmdk被锁定。 发生时间:2013-3-4 (星期一) 故障现象:虚拟机模板“T11-xxxx”无法部署虚拟机,该模板的虚拟磁盘文件vmdk被锁定,无法...
  • 虚拟磁盘文件占用的空间会越来越大,就算从客户机里面删除了很多文件,但这些空间并未释放出来,qcow2文件仍然占用大量的主机存储空间。 虽然qcow2有一个特点,客户机需要时才分配存储空间,这工作的一直很好。但是当...
  • 怎么备份VMware虚拟磁盘文件或移植到其他虚拟机 VMware虚拟机是一款功能强大有好用的虚拟机,越来越多的小伙伴在使用VMware进行学习或玩耍,为了防止虚拟机意外被我们弄坏了或重装系统,我们得备份下VMware虚拟磁盘...
  • VMware虚拟机是一款功能强大有好用的虚拟机,越来越多的小伙伴在使用VMware进行学习或玩耍,为了防止虚拟机意外被我们弄坏了或重装系统,我们得备份下VMware虚拟磁盘文件,有时候我们看到别人的虚拟机上配置好了很多...
  • 虚拟机共享虚拟磁盘建立的方法方法一:方法二 笔者是一位数据库运维小白,近日学习并且搭建数据库RAC集群时候需要用到共享存储,用于不同虚拟机之间的数据传递,总结了两种方法建立虚拟机之间的虚拟共享磁盘,在这里...
  • vmware虚拟机添加虚拟磁盘的方法

    千次阅读 2019-01-05 13:13:27
    1. 为VMware虚拟机添加虚拟磁盘 打开虚拟机-&gt; 虚拟机设置 -&gt; 磁盘 -&gt; add -&gt; hard disk -&gt; next -&gt; next -&gt; create new disk -&gt; 输入大小和选择保存到单一...
  • 修改vmware虚拟机虚拟磁盘卷标

    千次阅读 2016-10-08 18:55:09
    打开 虚拟磁盘 vmdx 名字 很长 fb8b73ae-97fe-4064-a698-e18b56a22aec 现象: 挂载自己新建的虚拟磁盘vmdx后,/media/下名字变成一连串字母。 解决: ubuntu中使用 磁盘实用工具,在虚拟磁盘未挂载时修改...
  • VADP前文列表VMware 虚拟机虚拟磁盘编程知识点扫盲之一VDDK摘自官方文档:The Virtual Disk Development Kit (VDDK) is a collection of C/C++ libraries, code samples, utilities, and documentation to he
  • 目录目录 前言 VMware 虚拟机文件类型 VMware 虚拟机的快照 Quiseced Snapshot ...开启 CBT前言该篇博文是 VMware 虚拟磁盘编程的基础,也是编写 VMware 虚拟机保护与恢复程序的基础,属于相关知识点
  • 虚拟机文件类型前文列表VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析虚拟磁盘文件 VMDK虚拟磁盘文件(VMDK File) 后缀为 .vmdk,是虚拟机的存储卷,Guest OS File System 储存在 VMDK File,
  • 随着我们使用虚拟系统的时间越长,Vmware创建的虚拟磁盘占用空间就越大,即使将虚拟系统中的文件删除,虚拟磁盘文件占用宿主系统硬盘空间也不会减少,这个问题困扰了很多用户。% a$ S" N+ L/ y; Z) E T k% h9 e% E3...
  • VMware多文件和单文件相互转换 使用vmware-vdiskmanager.exe命令行工具即可 设置环境变量 set PATH=%PATH%;D:\Program Files (x86)\VMware\VMware Workstation echo %PATH% C:\Users\Administrator>vmware-...
  • VMware 虚拟机占用磁盘空间

    千次阅读 2017-09-30 10:22:10
    使用VMware创建的虚拟机尽管已经设定分配的磁盘大小,但仍然会发现虚拟机占用的磁盘空间会越来越大,而直观体现就是虚拟机系统文件 vmdk 不断增大。因此下面介绍一个简单的方法,使用 VMware 自带的工具对 vmdk 文件...
  • ESXI的虚拟机共享虚拟磁盘配置

    千次阅读 2018-04-27 12:03:50
    1,ssh登录(两个虚拟机所在的宿主机)物理主机,创建共享磁盘(该步骤也可图形化操作)#cd /vmfs/volumes/4ffd9951-2c12a99a-ff2a-3440b59cd4fa/#mkdir sharedisk#cd sharedisk#vmkfstools -c 30000m -a ...
  • 虚拟机添加虚拟磁盘时出现uuid already exists解决办法 出现这种问题可能是你将一个虚拟磁盘移动了位置,再次添加到虚拟机时提示uuid已经存在,也可能是其他导致,解决办法是让uuid不冲突,virtualbox有个...
  • VMware虚拟机扩展磁盘容量

    千次阅读 2020-09-26 23:02:37
    **PS:**虚拟机关机后修改硬盘容量才有效,另外如果有快照的话也要先删除快照才能设置扩展磁盘容量 通过快照管理器删除 2. 打开虚拟机,分配扩展出来的磁盘容量 ​ 通过上面的扩展磁盘容量设置后,开启虚拟机,...
  • 现在虚拟机磁盘的大小,达到44.1G,而macos系统只用了25.4G 应该可以压缩出10G空间左右。 之前Mac OS 10.13 可以用 sudo /Library/Application\ Support/VMware\ Tools/vmware-tools-cli disk shrink / 这段代码...
  • 步骤:编辑虚拟机设置——>添加——>硬盘——>独立模式,并且永久——>创建新的虚拟磁盘——>存储单个文件——>完成(需要给新硬盘分区并格式化) 实验:添加永久磁盘,然后新建一个快照A,在永久磁盘里面新建001....
  • 一、只备份虚拟磁盘文件 场景:适用于从他人安装配置好的虚拟机移植到自己,只要磁盘文件,像CPU、内存等自己配置。 步骤: 1)备份他人的虚拟磁盘文件(若是多个文件,记得也复制只有 3KB的vmdk主配置文件)...
  • vmware linux虚拟机压缩磁盘

    千次阅读 2018-03-03 14:04:03
    使用linux虚拟机开发过程,逐渐把文件虚拟机linux中,会发现windows系统下存放linux虚拟机的目录占的磁盘空间越来越大,刚开始可能是10G左右,到后来可能是100G甚至更大。你会发现即使在linux终端中把linux系统中...
  • 文章目录虚拟化介绍KVM介绍KVM架构图Centos7中安装KVM 虚拟化介绍 虚拟化简单讲,就是把一台物理...虚拟化技术分为全虚拟化和半虚拟化:早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cp...
  • 有的MAC小伙伴安装了VMware虚拟机虚拟机在使用过程中,虚拟机文件会越来越大,所占宿主机磁盘空间也就越来越大,那应该如何解决呢?这里简单介绍下怎么在 Vmware 中为虚拟机清理磁盘空间的方法。 有的小伙伴可能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,801
精华内容 28,720
关键字:

虚拟机虚拟磁盘文件