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

原文地址:https://www.cnblogs.com/halberd-lee/p/13355393.html