精华内容
下载资源
问答
  • 几种虚拟机镜像格式

    千次阅读 2019-09-30 16:17:10
    几种虚拟机镜像格式 从用户角度看,虚拟机镜像文件是一个安装有操作系统 的磁盘分区,客户操作系统需要经过一个驱动层才能访问到 .目前,有多种虚拟机镜像格式可供选择,包括raw,qcow2、vmdk、vdi、vhd、qed以及fvd...

    几种虚拟机镜像格式

    从用户角度看,虚拟机镜像文件是一个安装有操作系统 的磁盘分区,客户操作系统需要经过一个驱动层才能访问到 .目前,有多种虚拟机镜像格式可供选择,包括raw,qcow2、vmdk、vdi、vhd、qed以及fvd等。表1列出了常 用的虚拟机及其支持的镜像格式。

    20190730135932.png

    虚拟机镜像文件及其访问方式

    虚拟机镜像文件保存了虚拟机硬盘的全部信息,按照数据存储方式的不同,可以分为两种模式:全镜像模式(Flat Mode)和稀疏模式(SparseMode)。

    全镜像模式保存了虚拟硬 盘中的所有字节数据,其中也包括对用户而言无效的数据; raw格式就是全镜像模式。

    稀疏模式只保存对用户和文件系 统有效的数据,只占用必要的存储空间,这种模式的镜像文件在存放数据时使用的可能不是连续的物理磁盘空间;前文提到的qcow2、qed、vmdk等都是稀疏模式。

    在整个虚拟机的体系中,I/O请求的处理过程大致如下:

    当VM的客户操作系统中的用户有磁盘I/O请求的时候,VMM(VMMonitor或者称为hypervisor)会捕获其I/O指令,根 据虚拟机实现策略的不同进行必要的转换,最终通过宿主机 操作系统内核的系统调用来完成客户操作系统的I/O请求。

    在Xen中,有一个tapdisk进程运行在Dom0中,来负责处理来 自其他DomU的I/O请求,完成地址转换过程。例如,虚拟机客户操作系统需要读或写一个磁盘块,VMM会调用宿主机内核的系统调用,定位到在镜像文件中的相应的文件块。在这 个过程中,由于虚拟化的原因,客户虚拟机的块地址需要经过 若干次的转换才能找到它在物理磁盘上的准确位置。在客户操作系统中,使用的是VBA(VirtualBlockAddress),在VMM 中使用的是IBA(ImageBlockAddress),就是镜像文件内的一 个偏移量,在宿主机内核的系统调用中使用的是PBA (PhysicalBlockAddress)。在定位到这些块的物理地址后,才 能进行客户操作系统所需要的各种操作。在全镜像模式中, 这种地址转换的过程相对简单,只需要一个线性的变换;而在 稀疏模式中,往往需要经过两次以上的地址变换,才能完成 VBA到PBA的转换过程。

    几种虚拟机镜像格式的原理

    raw

    raw就是原始的,它直接将文件系统的存储单元分配给 虚拟机使用,采取直读直写的策略。在raw格式的文件中,虚 拟出来的磁盘数据块号的大小决定了该数据块在raw文件中 的偏移量,也就是说虚拟磁盘存放数据的顺序和raw文件中 存放数据的顺序是一致的,由于这个特性,VBA到IBA的转 换比较简单,而IBA实际上就是PBA。在很多的实际应用中, 模板镜像采用raw格式,以提高模板镜像的读性能,而增量镜 像则使用其他格式,方便支持其他辅助特性。

    raw格式的优点有:一是寻址简单,访问效率较高;二是 可以通过格式转换工具方便地转换为其他格式;三是可以方 便地被宿主机挂载,可以在不启动虚拟机的情况下和宿主机 进行数据传输。但是,由于raw格式实现简单,不支持诸如压 缩、快照、加密和CoW等特性,另外,raw格式文件在创建时指 定大小之后,就占用了宿主机指定大小的空间,而不像qcow2 等稀疏模式的镜像格式可以从很小的文件按需地增长。

    qcow2和qed

    qcow2是qcow的一种改进,是Qemu实现的一种虚拟 机镜像格式。qcow2文件存储数据的基本单元是cluster,每一 个cluster由若干个数据扇区组成,每个数据扇区的大小是 512字节。在qcow2中,要定位镜像文件的cluster,需要经过两 次地址查询操作,类似于主存二级页表转换机制,如图2

    20190730164940.png

    客户操作系统的VBA,可以记为d,d=(d1,d2,d3),通过 d1所指示的L1表项的内容,找到L2表的位置A,再由d2指 示的L2表项的内容找到数据块的地址B,d3则指示数据块B 内的偏移量。在qcow2文件创建初始的时候,文件只有L1表 和文件头,L1表初始为空,当VM提供一个VBA需要写操作 的时候,qcow2的底层驱动会检查d1所指示的L1表项是否 为空,如果为空,就会在文件尾部新建一个L2表,并且把d1 所指示的L1表项赋值为L2表的地址,同理,也可以定位第一 次写数据块的地址和d2所指示的L2表项的值。当VM有读 数据操作的时候,qcow2驱动会首先确定该数据块是否在镜 像文件中,如果不在镜像文件中,则会从模板镜像中读取。在 qcow2中,数据块的IBA取决于第一次写操作,文件大小也会 随着写操作的增加而不断增长,基本上做到了用多少空间分 配多少空间,而不像raw格式一样,文件创建初始就是占用了 比较大的磁盘空间。qcow2格式不仅支持CoW,还支持快照、 压缩和加密等特性。
    qed的实现是qcow2的一种改型,存储定位查询方式和 数据块大小和qcow一样不同的是,在实现Wqe将qcow的表Rt)重写标 DirtFlag来代替

    vmdk

    vmdk是VMware实现的虚拟机镜像格式,与qcow2类似, vmdk也可以支持CoW快照、压缩等特性,镜像文件的大小也 是随着数据写入操作的增长而增长,数据块的寻址也需要通 过两次查询。在vmdk镜像文件的头部,会有一个文本描述 符(TextDescriptor),该文本描述了数据在虚拟镜像文件中数 据的布局方式。文本描述符在vmdk镜像文件中可以以单独 的文件形式存在,也可以作为文件头包含在镜像文件中。 vmdk通常会由一个basedisk,若干个link和extent组成,link 指示的是basedisk和extent的关系,extent是一个物理上的存 储区域,通常是一个文件。vmdk数据存储的单位被叫作 grain,每个grain也由若干个512字节大小的sector组成。在 支持稀疏存储的vmdk中,通过二级的元数据查询机制进行 数据块的定位。0级元数据称为grain目录(GrainDirectory, GD),1级元数据称为grain表(GrainTable,GT),GD和GT的 关系如图3所示。在实现上,基本上和qcow2类似。

    20190730170913.png

    fvd

    vd不仅支持上述qcow2和vmdk除了压缩以外的其他特
    性,而且还支持CoR(copyonread)和预取(AdaptivePrefetching)。 fvd文件元数据的组织和实现主要基于以下三点:

    1)使用位图(Bitmap)来实现CoW。位图里的一位表示
    一个数据块(Block)的状态,为0时表示该数据块在模板镜像 中,为1时表示在fvd镜像中。和qcow2中的数据组织单元 cluster一样,fvd数据块的默认大小为64B。在fvd中,一个 2MB的位图可以代表1TB模板镜像数据块的状态,而这个 2MB的位图可以很方便地加载到内存中,可以大大提高CoW 的性能。在fvd中,位图也用在CoR和预取之中。
    2)改变qcow2的二级查询方式,使用一级查询方式实现 存储定位。fvd把CoW和镜像文件的存储定位分开实现,在 CoW时,使用数据块是64KB,在虚拟镜像文件中存储定位 时,使用数据块(Chunk)大小为1MB。这样做的好处是大幅 度减小了查询表的大小,可以方便地将查询表一次载入内存,
    减少磁盘I/O,而且一次查询就可以方便地定位到所需的数 据块。
    3)对位图和一级查询表格的操作记录日志,日志满的时 候一次性提交更改,以减少对位图和查询表格的操作次数,提 高性能。由于位图和一级查询表格都可以方便地加载在内存 之中,所以对这些数据的操作比较快。在fvd中,元数据可以 和存储数据文件在一起,也可以和数据文件分开存储。fvd格 式的实现的架构如图4所示。

    转载于:https://www.cnblogs.com/mrwuzs/p/11271309.html

    展开全文
  • genymotion导入虚拟机镜像

    千次阅读 2017-03-14 17:15:09
    Android模拟器genymotion是运行比较流畅的模拟器,但是安装镜像时候需要连接网络下载。如果只想下载一次后,以后部署到其他机器时不需要下载,可以利用本文介绍的非联网安装genymotion虚拟机

    一、背景

    Android模拟器genymotion是运行比较流畅的模拟器,但是安装镜像时候需要连接网络下载。如果只想下载一次后,以后部署到其他机器时不需要下载,可以利用本文介绍的非联网安装genymotion虚拟机。

    二、准备工具

    1.virtualBox安装包
    2.genymotion安装包
    3.genymotion中模拟器镜像(可以到已经下载过的PC的C:\Users\Administrator\AppData\Local\Genymobile\Genymotion\ova目录中,找到.ova文件)

    三、安装

    1.安装virtualBox

    2.导入镜像文件(导入准备工具中.ova文件)
    3.设置CPU及内存数量

    4.安装genymotion

    5.启动genymotion

    6.虚拟机正常工作
    展开全文
  • Openstack虚拟机镜像深度实践

    千次阅读 2016-01-22 09:23:58
    虚拟机镜像(以下简称镜像)是Openstack云计算平台不可或缺的一部分。利用各种定制化的镜像,我们可以快速创建出满足不同目的的虚拟机。例如,利用一个安装并配置了Apache、Mysql和PHP的Linux操作系统镜像,就可以在...

    虚拟机镜像(以下简称镜像)是Openstack云计算平台不可或缺的一部分。利用各种定制化的镜像,我们可以快速创建出满足不同目的的虚拟机。例如,利用一个安装并配置了Apache、Mysql和PHP的Linux操作系统镜像,就可以在Openstack平台上秒级创建出多台LAMP服务器,可以直接用于部署或者开发。

    要充分利用好镜像的优势,关键就是掌握好如何制作定制化的镜像,这往往也伴随着如何测试和管理这些镜像。本文主要介绍:1. 制作满足Openstack要求的镜像的流程;2. 利用devstack对制作好的镜像进行测试。

    本文出现的命令和配置都是实际测试可行的,可以直接复制使用;但本文更多是介绍各个操作配置的原理和目的,这样即使在不同的运行环境,我们仍可以把握关键细节,完成镜像的制作和测试。

    主要内容

    • 原理和流程简介
    • 准备工作
    • 制作镜像
    • 测试镜像
    • 附录

    原理和流程简介

    虚拟机镜像实际就是一个包含整个虚拟磁盘内容的文件,这个虚拟磁盘也就是虚拟机的系统盘,包含可以引导启动的操作系统。所谓定制化的镜像,就是在这个(虚拟)系统盘上安装好需要的软件,保存好需要的配置,最后清理掉不必要的临时文件和日志等数据。最简单直观的定制方式,就是用一个干净的镜像作为系统盘创建一台虚拟机,安装好需要的操作系统,然后就可以像平时的操作那样安装需要的软件,保存配置,再利用工具清理不需要的数据,最后关闭虚拟机,镜像就定制化完成了。当然,我们也可以使用已经制作好的镜像直接创建虚拟机,这样可以省略操作系统和一些软件的安装步骤。

    所谓Openstack虚拟机镜像,就是满足一些要求(安装特定的软件,配置特定的服务等)的镜像,从而配合完成Openstack计算平台的镜像相关功能。

    测试镜像也很简单,就是把制作好的镜像导入Openstack平台,使用它来创建虚拟机,测试各个功能是否正常运作。搭建一个Openstack平台用于测试的方式很多种,本文选择了devstack,因为devstack的安装步骤很简单,而且很轻量,可以直接安装在一台虚拟机中。

    准备工作

    本文的例子所在运行环境的操作系统为Centos 7,并利用基于libvirt的一系列工具来创建和管理虚拟机,针对的虚拟化技术(hypervisor)为QEMU/KVM。
    libvirt和kvm分别是Openstack上面最常用的工具和虚拟化平台。

    1.安装好虚拟化工具

    yum install qemu libvirt-client virt-manager virt-viewer guestfish libguestfs-tools virt-top
    

    2.创建虚拟子网

    目的:因为虚拟机在安装软件过程中需要连通互联网,最简单的办法就是利用libvirt创建一个虚拟子网,虚拟机通过dhcp分配虚拟子网的ip,通过NAT的方式访问外网。

    图片描述

    2.1 准备虚拟网络资源的xml文件default.xml:

    <network>
      <name>default</name>
      <bridge name="virbr0"/>
      <forward/>
      <ip address="192.168.122.1" netmask="255.255.255.0">
        <dhcp>
          <range start="192.168.122.2" end="192.168.122.254"/>
        </dhcp>
      </ip>
    </network>

    2.2 配置:

    \# virsh net-define /usr/share/libvirt/networks/default.xml
    Network default defined from /usr/share/libvirt/networks/default.xml
    \# virsh net-autostart default
    Network default marked as autostarted
    \# virsh net-start default
    Network default started

    2.3 修改系统配置/etc/sysctl.conf:

    net.ipv4.ip_forward = 1

    环境准备好了,可以开始制作镜像了。

    制作镜像

    制作Linux镜像

    Linux镜像需要满足:

    1.配置SSH server开机运行。
    2.禁用防火墙。
    3.开机时支持磁盘分区和改变大小。
    4.支持ssh公钥访问虚拟机。
    5.运行和使用user data和metadata(如修改root密码,执行用户脚本等)。
    6.操作系统内核支持Virtio。
    7.没有写死的MAC地址信息。

    其中1、2很容易操作,本文使用的Centos 7安装盘默认安装后就满足了。3、4、5三条,只需要安装一个cloud-init的服务就可以了。

    cloud-init是一系列python脚本和工具,负责云实例最开始的初始化工作。具体运行原理参考附录:cloud-init工作原理。

    第6条,Virtio是提高KVM类型的虚拟机I/O(存储和网络)性能的一种技术。目前常用的Linux发行版本内核都直接支持了,如果你的安装版本有特殊需求,可以查看这里。
    关于Virtio的细节,可以参考附录:虚拟机性能优化.

    第7条,使用工具virt-sysprep清理。

    下面以Centos 7.1的安装为例,其他发行版本可以参考Openstack的文档:

    1.准备好ISO安装文件,下载。

    2.创建一个磁盘:qemu-img create -f qcow2 image.qcow2 20G
    因为针对的是KVM,因此本文使用的镜像格式是qcow2(QEMU copy-on-write version 2),关于镜像格式更多细节,可查看附录:镜像格式。镜像大小没有特殊要求,根据需求即可。镜像完成后是可以通过qemu-img增大的,但是一般很难缩小。

    3.创建并启动虚拟机:

    使用virt-install命令进行创建,通过vnc图形界面安装(本地需要安装一个vnc客户端来访问vnc界面):

    virt-install --virt-type kvm --cpu cpu64-rhel6 --ram 2048 \
    --name image_name \
    --disk path=image.qcow2,format=qcow2,device=disk,bus=virtio \
    --network network=default,model=virtio \
    --graphics vnc,listen=0.0.0.0,password=Yourpassw0rd --noautoconsole \
    --os-type=linux \
    --extra-args="console=ttyS0,115200n8 console=tty0" \
    --location=/path/to/installer.iso

    或者通过虚拟console(命令行)界面安装,执行virsh console image_name进入console界面,ctrl+]退出:

    virt-install --virt-type kvm --cpu cpu64-rhel6 --ram 2048 \
    --name image_name \
    --disk path=image.qcow2,format=qcow2,device=disk,bus=virtio \
    --network network=default,model=virtio \
    --os-type=linux \
    --nographics \
    --extra-args="console=tty0 console=ttyS0,115200n8 serial" \
    --location=/path/to/installer.iso
    

    这些命令参数的含义多数都比较直观,其中:

    –cpu cpu64-rhel6:虚拟机的cpu特性集合,因为不同物理机的cpu特性都不同,为了保证虚拟机在不同物理机之间迁移时的cpu兼容性,Openstack平台往往会指定一个虚拟的cpu特性集合(物理机cpu特性的子集),用于所有的虚拟机。其他集合可以通过cat /usr/share/libvirt/cpu_map.xml查看。这里的cpu64-rhel6只是个示例,根据实际情况指定即可。

    –graphics vnc,listen=0.0.0.0,password=Yourpassw0rd:通过vnc的方式提供安装界面,通过virsh vncdisplay image_name来查看vnc监听端口(vnc端口通常从tcp端口5900开始)。然后就可以使用vnc客户端进行操作。例如noVNC。

    –location=/path/to/installer.iso和–extra-args=”console=tty0 console=ttyS0,115200n8 serial”:指定ISO安装文件路径,在内核启动阶段,应用指定的参数。

    4.按照步骤要求安装操作系统(比如设置root密码,设置时区,网络和分区等)。

    5.如果虚拟机dhcp没有正确配置,需要配置一下。centos 7的话,需要编辑/etc/sysconfig/network-scripts/ifcfg-ens3(根据网卡接口名字不同),修改ONBOOT=yes,然后执行service network restart。

    6.弹出虚拟cd,关机并重启

    virsh attach-disk --type cdrom --mode readonly image_name "" hdb
    virsh destroy image_name
    virsh start image_name

    7.重新登录(virsh console image_name或者ssh或者vnc),然后就可以安装基本的服务和修改配置:

    \# 安装ACPI
    yum install acpid
    chkconfig acpid on
    \# 安装NetworkManager,用于网卡的自动发现及管理
    yum install NetworkManager
    chkconfig NetworkManager on
    \# 安装cloud-init
    yum install cloud-init
    \# 禁用默认的zeroconf route
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network

    8.关机shutdown -h now。

    9.关机后回到宿主机,执行virt-sysprep -d image_name,擦除虚拟机镜像中的无用数据(MAC地址等)。

    10.取消虚拟机:virsh undefine image_name。

    11.这个镜像(image.qcow2)就可以用了。
    因为我们通常对同一个Linux版本制作多种镜像,没必要每次都从头开始。我们可以跳过1 - 7步骤,基于一个已经制作好了的镜像创建虚拟机,登录后进行具体的定制化行为,然后再完成8 - 10:

    virt-install --virt-type kvm --cpu cpu64-rhel6 --ram 2048 \
        --name image_name \
        --disk path=image.qcow2,format=qcow2,device=disk,bus=virtio \
        --network network=default,model=virtio \
        --graphics vnc,listen=0.0.0.0,password=Yourpassw0rd \
        --noautoconsole --os-type=linux --import

    制作Windows镜像

    Windows镜像的制作和Linux会有所不同:

    Windows平台上是通过一个和cloud-init类似的服务,cloudbase-init,来帮助虚拟机初始化的。Windows平台要额外安装virtio-win驱动,才能使用Virtio来提高I/O性能。下面以Windows 2008为例:

    1.准备好Windoes 2008的ISO安装盘。

    2.准备好Virtio驱动的ISO安装盘,下载地址

    3.创建一个磁盘镜像:

    qemu-img create -f qcow2 ws2008.qcow2 20G

    4.创建并启动虚拟机:

     virt-install --connect qemu:///system \
      --name image_name --ram 2048 --vcpus 2 \
      --network network=default,model=virtio \
      --disk path=image.qcow2,format=qcow2,device=disk,bus=virtio \
      --cdrom /path/to/win2008_installer.iso \
      --disk path=/path/to/virtio-win-0.1.102.iso,device=cdrom \
      --graphics vnc,listen=0.0.0.0,password=Yourpassw0rd \
      --os-type windows --os-variant win2k8
    

    5.通过vnc进入安装界面,开始安装过程。

    6.安装Virtio驱动。

    当安装程序进入选择系统盘的步骤时,会找不到可用磁盘,这是理所当然的(因为相关驱动还没安装)。此时选择“加载启动”(Load drivers),找到virtio-win的目录,选择合适的驱动,安装即可(因为例子中安装的是Windows 2008 64bit,因此选择的是amd64下的Win2008)。要安装两种驱动:VirtIO SCSI和network。安装完成后就可以看到可用磁盘了。

    7.选择系统盘,继续安装步骤。

    8.以Administrator身份进入桌面,打开cmd,完成Virtio的安装:

    C:\pnputil -i -a E:\PATH\TO*.INF

    9.安装Cloudbase-init,打开Powershell(如果默认没有安装,先安装),并运行:
    C:\powershell
    C:\Set-ExecutionPolicy Unrestricted
    用IE打开http://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi,下载并安装。

    这个过程中可能需要:1. 关闭IE安全增强设置;2. 下载的msi文件需要右键点击属性,Unblock。

    安装过程中,需要指定以下几项:

    - Username: Administrator
    - Network adapter to configure: Red Hat VirtIO Ethernet Adapter
    - Serial port for logging: COM1

    安装向导的最后,勾选Run Sysprep和Shutdown,最后点击完成,系统自动关机。

    10.关机完成后镜像已经可用了,不过Cloudbase-init还多是默认配置,可以重新开机virsh start image_name,根据实际需求修改配置,具体参考文档。

    本文例子做了如下修改:打开配置文件C:\Program Files\Cloudbase Solustions\Cloudbase-Init\conf\cloudbase-init.conf,修改如下几项,配置ConfigDrive的方式:

    mtu_use_dhcp_config=false
    ntp_use_dhcp_config=false
    metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService

    11.正常关机,virsh undefine image_name,镜像就制作完成了。

    12.同样的,如果要针对同一个Windows版本安装不同软件,可以使用已有的镜像进行安装。

    测试镜像

    如果仅仅使用devstack用于测试镜像,可以将devstack安装在一台虚拟机上,不用时直接关闭,这里的优化可以参考附录:虚拟机性能优化。

    搭建devstack的步骤(如果是安装在虚拟机上同样适用):

    1.创建stack账号,添加sudo权限,并登录stack:

    adduser stack
    echo “stack ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers
    su - stack

    2.安装git:sudo yum install -y git

    3.下载devstack源码:git clone https://git.openstack.org/openstack-dev/devstack并cd devstack

    4.选定指定的Openstack版本,如:git checkout stable/juno

    5.配置文件~/devstack/local.conf:

    [[local|localrc]]
    FLOATING_RANGE=192.168.122.224/27
    FIXED_RANGE=10.11.12.0/24
    FIXED_NETWORK_SIZE=256
    FLAT_INTERFACE=ens3
    ADMIN_PASSWORD=123
    DATABASE_PASSWORD=123
    RABBIT_PASSWORD=123
    SERVICE_PASSWORD=123
    SERVICE_TOKEN=123
    LIBVIRT_TYPE=kvm
    LOGFILE=$DEST/logs/stack.sh.log
    \# nova相关配置
    [[post-config|$NOVA_CONF]]
    [libvirt]
    inject_password=true
    inject_partition=-1
    cpu_mode=custom
    cpu_model=cpu64-rhel6

    6.安装并启动devstack:./stack:
    第一次执行时会安装许多库和下载代码

    7.启动完后,为了让Dashboard中创建虚拟机页面支持设置admin密码,需要修改/opt/stack/horizon/openstack_dashboard/local/local_settings.py:

    OPENSTACK_HYPERVISOR_FEATURES = {
    'can_set_mount_point': False,
    'can_set_password': True,
    }

    8.如果有防火墙,打开80和6080端口:

    firewall-cmd --add-port=80/tcp
    firewall-cmd --add-port=6080/tcp
    firewall-cmd --reload

    devstack的使用方式:

    1.确保是以stack用户登录。

    2.进入devstack目录,执行source openrc admin admin,即使用admin身份(密码在配置文件中指定了)操作openstack。

    3.然后就可以使用命令行工具了。
    也可以通过Dashboard(80端口)和VNC(6080)以web界面来操作openstack。如果安装在虚拟机,且虚拟机运行在虚拟子网上,可以通过iptables等工具将虚拟机80和6080端口NAT映射到外网,进而访问。

    具体测试流程:

    1.在devstack机器上,su - stack && cd devstack && source openrc admin admin

    2.导入镜像到glance:

    glance image-create --name image_name --disk-format=qcow2 --container-format=bare --is-public=True --file /path/to/image.qcow2

    3.浏览器打开devstack的80端口,通过horizon界面用刚才导入的镜像创建虚拟机。
    4.测试确保几点:

    • 虚拟机成功创建
    • -创建操作没有错误日志(通过实例页面的日志Tab查看)
    • ssh_key或者admin密码正确设置,能够成功登录
    • 登录后,检查之前安装的软件或做的配置

    总结

    制作虚拟机镜像的方式有很多种,本文介绍了一种直观的方式:通过创建虚拟机,用平时使用操作系统的方式来定制化需求。另外还值得一提的一个工具,Diskimage-builder,可以用于自动化地创建镜像,使得定制化和测试镜像都变得更容易,但是相比本文介绍的方式也有一些不足:一是有一定的学习成本,二是目前只支持部分常用的Linux发行版本。
    测试镜像的方式同样也很多,本文是通过devstack搭建一个最简的Openstack平台环境,把镜像直接导入平台,测试各个操作是否成功,日志是否无异常。


    附录

    问题和解决
    制作Windows镜像时,报错无法从CD boot。

    这是由于virt-install误把Virtio的ISO文件当做安装盘,解决办法:使用floppy盘的方式安装Virtio驱动:

    1.下载vfd格式的Virtio驱动安装文件。
    2.将–disk path=/path/to/virtio-win-0.1.102.iso,device=cdrom替换为–disk path=/path/to/virtio-win-0.1.102_amd64.vfd,device=floppy

    cloud-init工作原理

    cloud-init是一系列python脚本和工具,负责云实例最开始的初始化工作(修改主机名、注入ssh-key文件、设置root密码等)。cloud-init是一个通用方案,还适用于Openstack外的多种云平台。

    cloud-init安装在虚拟机中,在第一次启动时,会根据本地配置去获取Datasources。Datasources包含了cloud-init初始化虚拟机时所需的配置数据:来自用户的userdata和来自平台的metadata。通常userdata包含yaml文件、运行脚本等多种格式的文件,而metadata包含了主机名、实例id、显示名等云平台相关的细节。

    云平台提供Datasource的方式很多,Openstack默认的方式是通过http server提供Datasource:虚拟机访问默认的http://169.254.169.254,Openstack会对这个地址重定向,最终指向自己的metadata server。

    镜像格式

    虚拟机镜像格式最简单的是raw格式,可以认为是一个位等价的块设备文件(对/dev/sda使用dd命令进行复制)。此外还有很多格式,各自有不同的特点,如:ISO(主要用于CD或DVD)、VDI(VirtualBox使用)、VHD/VHDX(微软Hyper-V使用)、VMDK(VMware使用)。

    QCOW2(QEMU copy-on-write version 2)则常用于KVM虚拟机,相比raw格式,qcow2格式的文件体积更小,更利于保存和上传。qcow2格式还支持快照(snapshot)功能(raw不支持),因此需要时,Openstack会自动将raw格式的镜像转换成qcow2格式。

    虚拟机性能优化

    关于虚拟化,先梳理几个概念:

    • Hardware Virtualization:本文使用的QEMU/KVM就是属于这一类虚拟化,虚拟化出一个硬件平台(硬件机器),在这之上可以跑不同的操作系统(Linux、Windows等)(区别于Operating-system-level Virtualization,虚拟化的实例都是同一个操作系统;也就是Docker那一类的技术。)。Hardware Virtualization又有几种区分: - Full Virtualization:完整地模拟客户操作系统所需的所有硬件。客户操作系统不知道自己是跑在物理机还是虚拟机上
      图片描述
      -Paravirtualization(“Para-”:“beside”或“alongside”):为了降低模拟一些硬件的难度,以及避免一些模拟带来的性能消耗,hypervisor(虚拟层)可以提供和底层硬件类似的软件接口。客户操作系统需要做修改或者安装一些驱动来和这些软件接口通信。客户操作系统知道自己是跑在物理机还是虚拟机上。
      图片描述
    • Hardware-assisted Virtualization:在物理硬件上提供特性支持(直接虚拟化硬件资源),从而提高Hardware Virtualization的性能和安全性:
      – CPU虚拟化:Intel virtualization (VT-x)或AMD virtualization (AMD-V)
      – I/O虚拟化:Intel VT-d或AMD-Vi
      – 内存虚拟化
      – GPU虚拟化
      – ……

    图片描述
    这些硬件虚拟化特性需要在BIOS中打开。

    • 使用KVM
      QEMU/KVM创建虚拟机有两种模式emulator(QEMU)和virtualizer(KVM)。其中KVM需要依赖于Hardware-assisted CPU Virtualization(VT-x或者AMD-V),通过在宿主机cpu上执行客户机代码,从而可以获得接近原生的性能。KVM并不支持CPU的paravirtualization,但是支持对设备驱动的paravirtualization从而提高I/O性能。
      使用KVM需要确保CPU硬件支持(要在BIOS中打开)和Linux内核模块支持。

    • 使用host的cpu model
      如果不需要考虑虚拟机的迁移等问题,可以直接对虚拟机暴露全部宿主机的CPU特性(包括硬件虚拟化的特性),从而更好地利用cpu提升性能。相关命令指定–cpu host即可。

    • 打开KVM-based nested virtualization
      为了能够在创建的虚拟机中跑KVM(KVM上跑KVM),需要在物理机上允许KVM-based nested virtualization。对于Intel-based的机器:
      •检查nested KVM Kernel是否打开
      cat /sys/module/kvm_intel/parameters/nested
      N
      Y代表打开,N代表关闭
      •临时移走KVM intel Kernel模块,打开nested virtualization,再重新加载:

    sudo rmmod kvm-intel
    sudo sh -c "echo 'options kvm-intel nested=y' >> /etc/modprobe.d/dist.conf"
    sudo modprobe kvm-intel

    •确保正确打开:

    cat /sys/module/kvm_intel/parameters/nested
    Y
    modinfo kvm_intel | grep nested
    parm:           nested:bool
    • 使用Virtio
      因为本文使用libvirt来管理KVM虚拟机,最方便的提升I/O性能的方式就是Virtio(此外还有其他方式提高KVM虚拟机I/O,例如利用VT-d给KVM虚拟机直接分配设备)。
      Virtio是一种paravirtualization,只能运行兼容Virtio的客户机(Linux内核支持,Windows需要安装相关驱动)。Para-virtualized设备列表:
      • network device (virtio-net)
      • block device (virtio-blk)
      • controller device (virtio-scsi)
      • serial device (virtio-serial)
      • balloon device (virtio-balloon)

    相关命令指定virtio模式即可。

    作者简介:蔡凯捷,现就职于绿星云科技,高级工程师,负责Openstack相关领域的研发工作。爱好云计算、开源项目、Web相关话题。曾任腾讯基础架构部门研发工程师,拥有互联网分布式系统多年研发经验。绿星云科技(深圳)有限公司(www.gstarcloud.com)是一家迅速崛起的互联网公司,专注于公有云服务。基于不断创新的软硬件平台架构、高效的运营管理流程和热情高涨的事业心,为客户打造易用、可靠、高性价比的云计算服务平台。该平台集中了弹性计算、分布式块存储和软件定义网络(SDN)等IaaS核心技术和能力,以秒级部署、在线迁移、分布式数据库、CDN加速等功能,为用户提供一站式云计算服务。本文为绿星云科技独家供稿,已得到官方的独家授权发布。

    责编:魏伟,关注OpenStack。欢迎技术文章投稿,投稿邮箱weiwei@csdn.net

    展开全文
  • linux虚拟机镜像下载

    千次阅读 2021-02-02 17:08:39
    在vmware官网该找到下载 选择要使用的系统 下载的版本 进入下载页面,选择版本并在下载页中点击了解更多 软件详情 复制软件详情中的name,将其替换到文章开头的链接中,将替换后的链接输入到浏览器中,即可完成...

    下载VMware

    下载链接

    https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.0.4-12990004.exe

    如果下载最新版

    img

    在vmware官网该找到下载

    选择要使用的系统

    img

    下载的版本

    进入下载页面,选择版本并在下载页中点击了解更多

    img

    软件详情

    img

    复制软件详情中的name,将其替换到文章开头的链接中,将替换后的链接输入到浏览器中,即可完成下载。 转自原文链接:https://blog.csdn.net/ITloser_cartridge/article/details/91347452

    Linux镜像下载

    阿里云镜像站点:http://mirrors.aliyun.com/centos/7/isos/x86_64/

    下载方法参考链接:https://www.jianshu.com/p/a63f47e096e8

    以上就是良许教程网为各位朋友分享的Linux相关知识。

    展开全文
  • 前面已经介绍了使用Libvirt命令包制作一个虚拟机镜像 [镜像制作]VMWare搭建Openstack——Libvirt命令包(virt)制作虚拟机镜像: 那么我们可能会面临一个问题,假如我们需要部署一个受控集群,首先我们需要获得...
  • 开始在虚拟机上安装需要的各种服务,模拟线上服务器 Linux常用命令: 文件\目录 进入"/home"目录 cd/home 返回上一级目录 cd.. 返回上两级目录 cd../.. 进入个人的主目录 cd 创建目录 mkdir 目录名 同时...
  • 微软官方提供的免费正版 Windows 8.1/Win10/7/XP/Vista 操作系统虚拟机镜像下载 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 相信做过网页开发/前端的同学都知道,测试各个浏览器的兼容性...
  • 前面我们分别介绍了两种虚拟机镜像制作的方法,分别是利用libvirt管理界面和KVM命令来制作虚拟机镜像,其实Libvirt除了提供了manager来制作镜像以外,它还提供了相关的命令行工具,通过这个命令行工具同样也可以对...
  • 为了方便我们进行试验性操作,所以要使用虚拟机。 那么我们如何给自己的pc上安装虚拟机呢: 安装前提: vmx|svm ###全虚拟化的指令集【安装虚拟化的前提...这里我们采用镜像安装,即需要提前下载rhel−server−7...
  • 虚拟机镜像安装

    2019-07-22 01:24:19
    虚拟机镜像的安装 (1)下载好虚拟机iso镜像安装包 (2)命令virt-manager 打开虚拟机管理器 点击左上角创建新虚拟机按钮 (3)选择"Local install media"这个选项 --> Forward (4)点击Browse…按钮 (5)Browse ...
  • 10.4 QCOW2虚拟机镜像

    千次阅读 2015-08-15 21:30:14
    如果找到的L1 table或L2 table的地址偏移为0,则表示磁盘镜像对应的区域尚未分配。   引用计数  每一个cluster都有一个引用计数,当没有任何快照再使用这个cluster时,cluster可以被删除。 针对每一个...
  • 博主本人固态空间不够,之前有将虚拟机从固态盘移动至了机械盘中存储,之后再移入固态盘启动虚拟机时突然发现无法启动了,这可把我吓一跳,不过最终还是找到了一个解决方法,这里和大家分享下经验! Handle ...
  • mininet 虚拟机镜像的导入与使用

    千次阅读 2017-10-10 22:49:33
    使用xshell进行登陆,在xshell中创建新会话(IP地址输入第1步中输入虚拟机中mininet VM的IP地址),注意你需要设置一个地方,在我们连接配置的地方,找到左边树形中的SSH,单击“隧道”后,在右边的页面上有个X11...
  • 1、软硬件条件 操作系统:Windows 10 Pro CPU:支持虚拟化技术 ...输出:含有Windows Server 2019 Standard(桌面体验)的Open ...7) 在目录C中找到windows2019-image.raw.img文件,即为制作好的Open Stack镜像文件
  • 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整的计算机系统。所以,你可以将它理解为基于你的一台电脑“生出”好几台一样(操作系统)或者相异(不同的操作...
  • 保姆级教程:安装geant4完整步骤+可视化界面+虚拟机镜像使用说明 安装视频 b站:安装视频链接 视频里面编辑的软件:Typora 截图软件:QQ自带的 虚拟机软件版本:vmware workstation15.1.0 geant4软件版本:geant...
  • 然后,点击findbox【寻找box】,找到自己需要的boxhttps://app.vagrantup.com/boxes/search 这里我需要的是centos7,点击进入详情页https://app.vagrantup.com/centos/boxes/7 然后,这里选择currently ...
  • 首先,VMWARE是什么,它的功能是什么,VMware ESXi是VMware开发bai的企业级虚拟机管理程序,用于部du署和服务虚拟计算机。ESXi 是专为zhi运行虚拟机、最大限度降dao低配置要求和简化部署而设计。作为虚拟机管理器...
  • virtualbox 的虚拟机文件为vdi,是一种增量保存镜像文件. 之前一直使用fedora环境,为了一些工作需要不得不装了XP虚拟机做些测试,并且保存了将近30G的快照.现在切换回windows环境,仍然需要把虚拟机用起来.官方没有...
  • 发布于 2014-12-11 作者 " rel="author" style="color:rgb(244,114,208)">陈阳 ...同时,随着该基础镜像的可用,我们期待很快看到更多来自社区的基于 FreeBSD 的开源镜像,从而更加充实现有的可用 Linu
  • 这使得我们可以使用与每个 VM Depot 虚拟机镜像有关的特定信息进行查找。 可用的限定符包括: 限定符(区分大小写) 说明 tag (or keyword) 镜像可以包含说明性的标记(关键字),由...
  • 虚拟机复制镜像操作方法

    千次阅读 2019-06-30 22:11:50
    4 选择“打开虚拟机”,此时会提示选择.vmx文件,找到.vmx,打开即可,之后还会提示你选择.vmdk文件,照做就是。之后我们点击“开启虚拟机” 5.弹出对话框,选择“我已复制该虚拟机”完成 参考连接:...
  • 从网上下了一个ubuntu vmware 镜像  拷贝后变成命名为 vm1 设置 了一下网络(用bridge模式) 主要是 eth0 (配置文件 /etc/network/interfaces 以及 dns 服务器 /etc/resolv.conf 网络服务都正常 第二次直接...
  • 安装VMware虚拟机镜像文件

    千次阅读 2019-08-14 16:57:25
    安装VMware workstation pro (15)虚拟机以及CentOS 7镜像文件 1.在以下网址http://xiazai.zol.com.cn/heji/10050/找到最新的VMware 版本(不过这种捆绑软件太多,下载完了以后又要删) 2.接下来就下载centos7 到...
  • 找到镜像 点击下一步   给虚拟机起名字,找到存放位置 然后下一步 根据需求选cpu核数 根据需求选择 内存 选择NAT 模式网络连接 创建新的虚拟磁盘 不要选择物理磁盘 不然会把自己电脑的磁盘格式化掉 ...
  • Mac OS X Lion虚拟机完整镜像_Intel版

    千次阅读 2012-05-13 22:49:02
    Mac OS X Lion虚拟机完整镜像_Intel版 博客分类:  Mac OS http://mac.pcbeta.com/thread-45168-1-1.html   下面是用户共享的文件...【Mac OSX Lion v10.7 11A390虚拟机镜像】 Ma
  • Windows Azure功能又更新了。...功能更新:两个预览版的服务(网站和移动)进入商用,虚拟机服务支持SQL 2014和Win 2012 R2 具体情况可见http://weblogs.asp.net/scottgu/archive/2013/06/27/windows-azure-ge

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,841
精华内容 15,536
关键字:

怎么找到虚拟机的镜像