• kvm虚拟机


    kvm虚拟机

    1 安装

     

    1.1 检查宿主机处理器是否支持虚拟化

    egrep -o 'vmx | svm' /proc/cpuinfo | wc -l
    

    如果显示数值是 0,则表示该 CPU 不支持虚拟化。

    1.2 配置或设置宿主机

    需要通过bios 或者 其他(比如在使用vmware时,使用vmware设置)开启CPU虚拟化。

    1.3 关闭 iptables/firewall 和 selinux

    setenforce 0
    sed -i 's/SELINUX=enforce/SELINUX=disable/g' /etc/selinux/conf
    #CentOS6
    service iptables stop
    chkconfig iptables off
    #CentOS 7 / 8
    systemctl stop firewalld
    systemctl disable firewalld
    

    1.4 安装KVM软件包

    yum install -y kvm virt-* libvirt bridge-utils qemu-img device-mapper-libs virt-top
    

    1.5 查看 kvm 模块是否加载到内核

    lsmod | grep kvm_intel
    kvm_intel              53484  0
    kvm                   316506  1 kvm_intel
    

    如果没有加载,可以尝试执行命令:modprobe kvm_intel,或者重启主机。

    1.6 设置网络

     

    1.6.1 bridge

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-eth0 ifcfg-br0
    cat >  ifcfg-eth0 <<EOF
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    BRIDGE=br0
    EOF
    
    cat > ifcfg-br0 <<eof
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=10.1.192.12
    PREFIX=24
    GATEWAY=10.1.192.1
    DNS1=10.1.1.6
    NAME=br0
    eof
    
    # 重启网络
    CentOS 6
    service network restart
    CentOS 7/8
    systemctl restart network
    systemctl restart NetworkManager
    

    1.6.2 NAT

    NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。 因此,NAT网络案例性更高。

    1. 安装依赖包
      yum install dnsmasq iptables bridge-utils -y
      
    2. 定义虚拟网络

      我们可以直接编辑虚拟网络文件,以生成我们自己需要的网络。如果已经存在bridge网络,也可以先删除再生成。 如果是全新配置,可以直接生成虚拟网络

      • 编辑已存在的网络

        virsh net-edit default
        
      • 删除已存在的虚拟网络

        virsh net-undefine default
        
      • 定义虚拟网络

        virsh net-define /usr/share/libvirt/networks/default.xml
        
      • NAT网络配置示例 示例1:

          <?xml version="1.0" encoding="utf-8"?>
        
        <network>
          <name>default</name>
          <uuid>dc69ff61-6445-4376-b940-8714a3922bf7</uuid>
          <forward mode="nat"/>
          <bridge name="virbr0" stp="on" delay="0"/>
          <mac address="52:54:00:81:14:18"/>
          <ip address="192.168.122.1" netmask="255.255.255.0">
            <dhcp>
              <range start="192.168.122.2" end="192.168.122.254"/>
              <host mac="00:25:90:eb:4b:bb" name="guest1" ip="192.168.5.13"/>
              <host mac="00:25:90:eb:34:2c" name="guest2" ip="192.168.7.206"/>
              <host mac="00:25:90:eb:e5:de" name="guest3" ip="192.168.7.207"/>
              <host mac="00:25:90:eb:7e:11" name="guest4" ip="192.168.7.208"/>
              <host mac="00:25:90:eb:b2:11" name="guest5" ip="192.168.7.209"/>
            </dhcp>
          </ip>
        </network>
        
      • NAT生效

        virsh net-start default
        

    1.7 启用服务

    /etc/init.d/libvirtd start
    /etc/init.d/messagebus restart
    

    1.8 创建磁盘镜像

    其实这个步骤可以不做。在创建虚拟机时,可以自动生成。

    在创建虚拟机之前,要先创建一个qcow2格式的磁盘文件,以供创建虚拟机时使用。 磁盘格式有多种,现在用得较多的是qcow2格式。更多关于格式的说明,见:虚拟机格式.

    qemu-img create -f qcow2 -o preallocation=metadata /data/kvm/test01.qcow2 500G
    

    1.9 创建虚拟机

     

    1.9.1 方式1-通过ISO安装

     
    1. CentOS7
      virt-install --name CentOS-6.1.8.16.43 --ram=16384 --vcpus=8,maxvcpus=32 --location=/home/isoandimages/rhel-server-6.1-x86_64-dvd.iso 
      --disk path=/home/systempool/centos6.1.43.qcow2,size=50 --network bridge=br0 --graphics=none 
      --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"
      
    2. CentOS6
      1. qemu-img create -f qcow2 /home/systempool/centos6.1.43.qcow2 20G 查看文件:

        # ll *6*
        -rw-r--r-- 1 root root 197120 Jul 20 13:02 centos6.1.43.qcow2
        

        可以看到初始生成的文件,大小只有不到200k。

      2. 创建虚拟机

        virt-install --name CentOS-6.1.8.16.43 --ram=16384 --vcpus=8,maxvcpus=32 --location=/home/isoandimages/rhel-server-6.1-x86_64-dvd.iso --disk path=/home/systempool/centos6.1.43.qcow2 --network bridge=br0,mode=virtio --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"
        
    3. 参数说明
      简写参数参数全称说明
      -n –name 虚拟机名称,需全局唯一
      -r –ram 虚拟机内在大小,单位为MB
        –memory  
        –vcpus N[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#][,cpuset=1-4,6,8]
          VCPU个数及相关配置
        –cpu CPU模式及特性假如,coreduo,+x2apic
          可以使用qemu-kvm -cpu ?来获取支持的CPU模式;
        –metadata 配置一些基本信息,比如name=foo,title="My title",uuid=..,description="…"
      <安装方法   >
      -c –cdrom CDROM:光盘安装介质;
      -l –location LOCATION:安装源URL,支持FTP、HTTP及NFS等,如http://10.10.100.150:8320
        –pxe 基于PXE完成安装;
        –livecd 把光盘当作LiveCD;
        –os-type DISTRO_TYPE:操作系统类型,如linux、unix或windows等;
        –os-variant DISTRO_VARIANT:某类型操作系统的变体,如rhel5、fedora8等;
      -x –extra-args 根据–location指定的方式安装GuestOS时,用于传递给内核的额外选项
          例如指定kickstart文件的位置,–extra-args "ks=http://172.16.0.1/class.cfg"
        –boot 指定安装过程完成后的配置选项,如指定引导设备次序、使用指定的而非安装的kernel/initrd
          –boot cdrom,hd,network:指定引导次序;
          –boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”
      < 存储   >
        –disk 指定存储设备及其属性;格式为–disk /path,opt1=val1,opt2=val2等;常用的选项有:
          device:设备类型,如cdrom、disk或floppy等,默认为disk;
          bus:磁盘总结类型,其值可以为ide、scsi、usb、virtio或xen;
          perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;
          size:新建磁盘映像的大小,单位为GB;
          cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写)
          format:磁盘映像格式,如raw、qcow2、vmdk等
          sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间
        –nodisks 不使用本地磁盘,在LiveCD模式中常用
      <网络配置   >
      -w –network opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为:
          bridge=BRIDGE:连接至名为“BRIDEG”的桥设备名,如br0
          network=NAME:连接至名为“NAME”的网络;
          type=direct,source=IFACE[,source_mode=MODE],通过macvtap直接连接主机IFACE
          model='e1000','rtl8139', 'virtio'等
          filterref,可用值可以通过命令virsh nwfilter-list获得
          其他,更多,可以通过命令man virt-install 来查看
          mac:固定的MAC地址;省略此选项时将使用随机地址,但无论何种方式,对于KVM来说
          其前三段必须为52:54:00
        –nonetworks 虚拟机不使用网络功能;
      < 图形配置   定义虚拟机显示功能相关的配置,如VNC相关配置>
        –graphics TYPE,opt1=val1,opt2=val2
          指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机
          启动后对其进行访问的接口;
          TYPE:指定显示类型,可以为vnc、sdl、spice或none等,默认为vnc;
          port:TYPE为vnc或spice时其监听的端口;
          listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1
          可以通过修改/etc/libvirt/qemu.conf定义新的默认值;
          password:TYPE为vnc或spice时,为远程访问监听的服务进指定认证密码
          –noautoconsole:禁止自动连接至虚拟机的控制台
      <设备选项   指定文本控制台、声音设备、串行接口、并行接口、显示接口等>
        –serial CHAROPTS:附加一个串行设备至当前虚拟机,根据设备类型的不同,可以使用不同的选项,
          格式为“–serial type,opt1=val1,opt2=val2,…”,例如:
          –serial pty:创建伪终端;
          –serial dev,path=HOSTPATH:附加主机设备至此虚拟机;
        –video VIDEO:指定显卡设备模型,可用取值为cirrus、vga、qxl或vmvga;
      < 虚拟化平台   虚拟化模型(hvm或paravirt)、模拟的CPU平台类型、模拟的主机类型、hypervisor类型(如kvm、xen或qemu等)以及当前虚拟机的UUID等>
      -v –hvm 当物理机同时支持完全虚拟化和半虚拟化时,指定使用完全虚拟化;
      -p –paravirt 指定使用半虚拟化;
        –virt-type 使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令获取;
      < 其他   >
        –autostart 指定虚拟机是否在物理启动后自动启动;
        –print-xml 如果虚拟机不需要安装过程(–import、–boot),则显示生成的XML而不是创建此虚拟机
          默认情况下,此选项仍会创建磁盘映像;
        –force 禁止命令进入交互式模式,如果有需要回答yes或no选项,则自动回答为yes;
        –dry-run 执行创建虚拟机的整个过程,但不真正创建虚拟机、改变主机上的设备配置信息及将其创建
          的需求通知给libvirt;
      -d –debug 显示debug信息;

    1.9.2 方式2-clone虚拟机

    virt-clone 主要是用来克隆kvm虚拟机,并且通过 Options、General Option、Storage Configuration、Networking Configuration 等不同选项对新的虚拟机进行一些特殊的定义。 示例:

    virt-clone -o centos7.8.2003-50  -n centos7.8.2003-51 -f /home/systemimages/centos7.8.2003-50.qcow2 --nonsparse
    

    参数说明:

    Options
    --version:查看版本
    -h,--help:查看帮助信息
    --connect=URI:连接到虚拟机管理程序 libvirt 的URI
    
    General Option
    -o ORIGINAL_GUEST, --original=ORIGINAL_GUEST:原来的虚拟机名称
    -n NEW_NAME, --name=NEW_NAME:新的虚拟机名称
    --auto-clone:从原来的虚拟机配置自动生成克隆名称和存储路径。
    -u NEW_UUID, --uuid=NEW_UUID:克隆虚拟机的新的UUID,默认值是一个随机生成的UUID
    
    Storage Configuration(存储配置):
    -f NEW_DISKFILE, --file=NEW_DISKFILE:指定新的虚拟机磁盘文件
    --force-copy=TARGET:强制复制设备
    --nonsparse:不使用稀疏文件复制磁盘映像
    
    Networking Configuration:(网络配置)
    -m NEW_MAC, --mac=NEW_MAC:设置一个新的mac地址,默认是一个随机的mac
    

    clone 虚拟机,会生成两个文件,一个

    1.10 删除虚拟机

    virsh destroy <虚拟机> virsh undefine <虚拟机>

    2 基本管理

     

    2.1 查看所有虚拟机

    virsh list --all
    

    由此引申的,查看所有虚拟机对应的操作系统文件:

    virsh list --all |grep -v "Id" |egrep -v '^-'|awk '{print "echo "$2 ";virsh dumpxml "$2"| grep file="}' |sh
    

    示例如下:

    centos7.0-04-6-32
          <source file='/home/systempool/centos7.8-system-clone-2'/>
    centos7.0-06-8-32
          <source file='/home/systempool/centos7.8-system-clone-4'/>
    centos7.0-6-16-32
          <source file='/home/systempool/centos7.8-system-clone'/>
    centos7.0-6-16-33
          <source file='/home/systempool/centos7.8-system-clone-1'/>
    centos7.0-32-64-31
          <source file='/home/systempool/centos7.8-system'/>
    centos7.0-05-8-32
          <source file='/home/systempool/centos7.8-system-clone-3'/>
    

    2.2 查看所有虚拟机IP

    virsh 是没有参数让我们直接查看所有虚拟机的IP地址的。我们这里写一个脚本,用来查询所有虚拟机IP。 主要的思路就是网上说的,先dumpxml 查询出mac 地址,然后再通过arp 过滤 MAC地址,得出IP地址:

    yum install -y nmap
    nmap -PR xx.xx.xxx.0/24  # 时间有点儿长,要耐心等待。这个命令可以在宿主机上做一个定时任务。
    virsh list --all |grep -v "Id"|egrep -v '^-'|awk '{print "echo -n "$2" ; virsh dumpxml "$2"|grep "mac address=""}'|sh| sed 's/     <mac address=//g'|sed 's//>//g'|awk '{print "echo -n "$1";arp -a |grep "$2}'|sh
    

    结果示例:

    centos7.0-04-6-32? (xx.xx.xxx.34) at 52:54:00:a8:9a:29 [ether] on eno1
    centos7.0-06-8-32? (xx.xx.xxx.36) at 52:54:00:74:ea:c5 [ether] on eno1
    centos7.0-6-16-32? (xx.xx.xxx.32) at 52:54:00:6a:9a:30 [ether] on eno1
    centos7.0-6-16-33? (xx.xx.xxx.33) at 52:54:00:b6:38:a1 [ether] on eno1
    centos7.0-32-64-31? xx.xx.xxx..31) at 52:54:00:d1:86:ce [ether] on eno1
    centos7.0-05-8-32? (xx.xx.xxx.35) at 52:54:00:ec:89:17 [ether] on eno1
    

    2.3 查看所有虚拟机磁盘

    virsh list --all |grep -v "Id" |egrep -v '^-'|awk '{print "echo "$2 ";virsh dumpxml "$2"| egrep "source [fd]""}' |sh
    

    示例:

    centos7.0-05-8-32
          <source file='/home/systempool/centos7.8-system-clone-3'/>
          <source dev='/dev/vpsstoragevg/storage05'/>
    

    2.4 查看虚拟机资源配置

    virsh dominfo <虚拟机>
    

    示例:

    Id:             15
    Name:           centos7.8
    UUID:           e937b70a-1eb9-498d-b2ab-eb7544cae5a5
    OS Type:        hvm
    State:          running
    CPU(s):         8
    CPU time:       439.9s
    Max memory:     67108864 KiB
    Used memory:    67108864 KiB
    Persistent:     yes
    Autostart:      disable
    Managed save:   no
    Security model: none
    Security DOI:   0
    

    2.5 显示虚拟机分区信息

    virt-df <虚拟机>
    

    示例:

    # virt-df centos7.8
    Filesystem                   1K-blocks       Used  Available  Use%
    centos7.8:/dev/sda1            1038336     157304     881032   16%
    centos7.8:/dev/sdb1          524029956    1960664  522069292    1%
    centos7.8:/dev/centos/root    36805060    6287568   30517492   18%
    

    2.6 查看CPU/内存的资源使用率

    virt-top
    

    2.7 启停

    virsh start <虚拟机>
    virsh autostart <虚拟机>
    virsh autostart --disable <虚拟机>
    virsh suspend <虚拟机>
    virsh resume <虚拟机>
    virsh reboot <虚拟机>
    virsh shutdown <虚拟机>
    virsh destroy <虚拟机>
    

    2.8 调整最大内存配置

    # 查看允许的最大值
    virsh dominfo <虚拟机>|grep mem
    # 关闭虚拟机,调整虚拟机的内存,前提条件是maxmem > current_mem,因此需要先将maxmem 调大。
    # 而调整maxmem 则是需要在虚拟机关闭的状态下调整的。
    virsh shutdown <虚拟机名>
    virsh setmaxmem <虚拟机名> <大小单位KB>
    # 示例:
    virsh setmaxmem centos7 --size 67108864 --config
    # 启动虚拟机
    virsh start <虚拟机>
    # 调整虚拟机分配内存
    virsh setmem <虚拟机> <大小>
    

    2.9 磁盘扩容(需要重启)

    qemu-img resize /data/kvm/<file>.qcow2 +50G
    virsh shutdown <虚拟机>
    virsh start <虚拟机>
    

    reboot 后不能识别新添扩展的空间,必须先彻底关闭虚拟机再打开。 新扩容出来的空间,需要分区和格式化。

    2.10 添加删除磁盘

     

    2.10.1 添加物理磁盘给虚拟机

    1. 添加物理磁盘或者分区

      这里以添加lv 分区为例。

      # lvcreate -L 500G -n storage07 vpsstoragevg
      # lsblk
      NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda                        8:0    0  1.8T  0 disk
      ├─sda1                     8:1    0    1G  0 part /boot
      └─sda2                     8:2    0  1.8T  0 part
        ├─centos-root          253:0    0   50G  0 lvm  /
        ├─centos-swap          253:1    0    4G  0 lvm  [SWAP]
        └─centos-home          253:2    0  1.7T  0 lvm  /home
      sdb                        8:16   0 14.6T  0 disk
      ├─vpsstoragevg-storage01 253:3    0  500G  0 lvm
      ├─vpsstoragevg-storage02 253:4    0  500G  0 lvm
      ├─vpsstoragevg-storage03 253:5    0  500G  0 lvm
      ├─vpsstoragevg-storage04 253:6    0  500G  0 lvm
      ├─vpsstoragevg-storage05 253:7    0  500G  0 lvm
      ├─vpsstoragevg-storage06 253:8    0  500G  0 lvm
      └─vpsstoragevg-storage07 253:9    0  500G  0 lvm
      
    2. 给虚拟机添加磁盘

      virsh attach-disk <虚拟机> /dev/sdb vbd --driver qemu --mode shareable
      virsh detach-disk kvm vdb
      

      示例:

      virsh attach-disk centos7.8-4-16-42 /dev/vpcstoragevg/storage03 vdb --driver qemu --mode shareable
      

      无需重启,即可正常识别:

      # lsblk
      NAME                        MAJ:MIN RM   SIZE RO MOUNTPOINT
      sr0                          11:0    1  1024M  0
      vda                         252:0    0    40G  0
      ├─vda1                      252:1    0   500M  0 /boot
      └─vda2                      252:2    0  39.5G  0
        ├─VolGroup-lv_root (dm-0) 253:0    0  21.8G  0 /
        └─VolGroup-lv_swap (dm-1) 253:1    0  17.7G  0 [SWAP]
      vdb                         252:16   0   500G  0
      └─vdb1                      252:17   0   500G  0
      

      而且虚拟机中的配置也已自动添加:

      ..........
      <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none'/>
        <source dev='/dev/vpcstoragevg/storage03'/>
        <backingStore/>
        <target dev='vdb' bus='virtio'/>
        <shareable/>
        <alias name='virtio-disk1'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
      </disk>
      .......
      

    2.10.2 添加虚拟磁盘给虚拟机

    1. 创建虚拟磁盘

      qemu-img create -f qcow2 -o preallocation=metadata /home/systempool/centos6.1.43_2.qcow2 500G
      Formatting '/home/systempool/centos6.1.43_2.qcow2', fmt=qcow2 size=536870912000 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off
      
    2. 添加虚拟磁盘

      <disk type='file' device='disk'>
         <driver name='qemu' type='qcow2'/>
         <source file='/home/systempool/centos6.1.43_2.qcow2'/>
         <target dev='vdb' bus='virtio'/>
         <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
       </disk>
      

      需要修改的内容如下:

      source file --> 指向我们新创建的虚拟磁盘
      target dev  --> vdb ,给虚拟磁盘,在虚拟机中映射一个新的磁盘名。
      address type slot --> 每个设备都会指定一个slot , 与之前的slot 不能一样.
      
    3. 重启虚拟机

      virsh shutdown <虚拟机>
      virsh start <虚拟机>
      
    4. 磁盘分区及格式化

      parted /dev/vdb "mklabel gpt"
      parted /dev/vdb "mkpart data 1 100%"
      mkfs.ext4 /dev/vdb1
      mkdir /data
      mount /dev/vdb1 /data
      EXT4-fs (vdb1): mounted filesystem with ordered data mode
      

    2.11 在线调整CPU

    cpu 与memory 不同,没有Maxcpu 配置。在dominfo 中只有一行cpu相关的配置:

    virsh dominfo  centos7|grep CPU(s)
    CPU(s):         8
    

    要调整CPU 个数,也必须要重启虚拟机。

    virsh shutdown <虚拟机>
    virsh setvcpus <虚拟机> 3
    virsh start <虚拟机>
    

    2.12 删除虚拟机

    # 关闭虚拟机
    virsh shutdown <虚拟机>
    或者
    virsh destroy <虚拟机>
    # 删除配置文件
    virsh undefine <虚拟机>
    # 删除虚拟机文件,如果虚拟机文件名不能明确确定与虚拟机的对应关系,需要借助本章第一小节,查看所有主机名与文件的对应关系命令。
    rm <虚拟机文件>
    

    2.13 通过console登录虚拟机

    virsh console <虚拟机名或者id>
    断开使用 Ctrl + ]
    

    2.14 调整网卡

     

    2.14.1 添加虚拟机网卡

    virsh attach-interface halberd --type bridge --source br0
    

    [root@kvm ~]# virsh dumpxml halberd > /etc/libvirt/qemu/halberd.xml [root@kvm ~]# virsh define /etc/libvirt/qemu/halberd.xml

    2.14.2 删除虚拟机网卡

    virsh detach-interface halberd --type bridge --mac 52:54:00:14:86:cf
    

    2.14.3 指定网卡品牌、系列

    网卡默认类型是 rtl 品牌的网卡,这里设置为 intel 网卡 e1000 系列。修改如下配置文件即可。

    <interface type='bridge'>
      <mac address='52:54:00:b5:68:a4'/>
      <source bridge='br0'/>
      <model type='e1000'/>      # 添加设置字段
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    

    重启虚拟机,在虚拟机中查看:

    lspci | grep "Ethernet"
    00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
    

    3 快照

     

    3.1 创建快照的条件

    虚拟机是关机状态。 虚拟机镜像格式是 qcow2。

    3.2 创建快照

    [root@kvm ~]# virsh snapshot-create halberd

    3.3 查看快照列表

    virsh snapshot-list halberd
    
    qemu-img info /data/kvm/halberd.img
    

    3.4 切换快照

    virsh snapshot-revert halberd 1477285698
    

    3.5 查看当前快照

    virsh snapshot-current halberd
    

    3.6 删除快照

    virsh snapshot-delete halberd 1477285698
    

    3.7 快照文件存储位置

    /var/lib/libvirt/qemu/snapshot

    4 虚拟机格式

     

    4.1 格式说明

      目前常用虚拟机镜像格式:raw、cow、qcow、qcow2、vmdk。

     1)raw

      raw格式:老牌的镜像格式,用一个字来说就是裸,也就是赤裸裸,你随便dd一个file就模拟了一个raw格式的镜像。由于裸的彻底,性能上来说的话还是不错的。centos6上KVM和XEN默认的格式还是这个格式。centos7以上默认是qcow2 。

      裸的好处还有就是简单,支持转换成其它格式的虚拟机镜像对裸露的它来说还是很简单的(如果其它格式需要转换,有时候还是需要它做为中间格式),空间使用来看,这个很像磁盘,使用多少就是多少(du -h看到的大小就是使用大小)。   例: qcow2 转为 vmdk 方法是: qcow2 转为 raw ,然后把raw转为vmdk 。也可以直接qcow2转为vmdk

      佳能相机上的高保真用的就是这格式。RAW的原意就是“未经加工”。可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW理解为“数字底片”

      缺点:不支持snapshot快照。

     2)cow、qcow、qcow2

      cow格式:还没有成熟,就被放弃了。后来被qcow格式所取代。

      qcow格式:刚刚出现的时候有比较好的特性,但其性能和raw格式对比还是有很大的差距,目前已经被新版本的qcow2取代。

      qcow2格式:现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能。qcow2格式支持snapshot快照,可以在镜像上做多个快照,具有以下优点:更小的存储空间;支持创建image镜像;支持多个snapshot快照,对历史snapshot进行行管理;支持zlib的磁盘压缩;支持AES的加密。

     3)vmdk

      vmdk格式:VMware的格式,整体性能最好,因为VMware就是做虚拟化起家。从性能和功能上来说,vmdk应该算最出色的,由于vmdk结合了VMware的很多能力,目前来看,KVM和XEN使用这种格式的情况不是太多。但就VMware的企业级虚拟化Esxi来看,它的稳定性和各方面的能力都很好。

    4.2 格式转换

    格式转换使用qemu-img convert -f [源镜像格式] -O [目标镜像格式] [源镜像地址] [目标镜像地址]

      例如,将centos7.0由qcow2格式转换为raw格式

    qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/centos7.0.raw
    # 查看格式
    qemu-img info /var/lib/libvirt/images/centos7.0.raw
    

    修改配置文件中的格式(这种方式不需要重启libvirtd):

    virsh edit centos7.0
    //修改第33~34行
          <driver name='qemu' type='raw'/>
          <source file='/var/lib/libvirt/images/centos7.0.raw'/>
    

    还有一种是直接编译配置文件,编辑完成后需要重启libvirtd.

    systemctl restart libvirtd
    

    Author: halberd.lee

    Created: 2020-07-21 Tue 15:39

    Validate

  • 相关阅读:
    浮点数二分
    [模板]整数二分
    Mybatis实现增删改查
    如何使用 KEIL 下载 HEX 文件?
    线程CPU使用率该如何计算?
    单片机里面的CPU使用率是什么鬼?
    ASP.NET Core 3.1使用JWT认证Token授权 以及刷新Token
    ASP.NET Core 3.1使用Swagger API接口文档
    Visual Studio 默认git拉取Github出错 No error could not read Username for 'https://github.com': terminal prompts disabled
    ASP.NET Core 3.1使用log4net/nlog/Serilog记录日志
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/13355393.html
Copyright © 2020-2023  润新知