• 【Linux相关】kvm部署配置


    一、kvm安装

    1、CentOS

    • yum安装
    yum install -y qemu-kvm libvirt virt-install

    二、虚拟机部署

    1、配置网桥

    1.1、ubuntu系统

    配置虚拟网卡br0,将虚拟网卡桥接到物理网卡enp11s0f1

    root@node219:/data1# cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    
    auto enp4s0f1
    iface enp4s0f1 inet static
    address 172.16.21.219
    netmask 255.255.255.0
    
    auto br0
    iface br0 inet static
    address 172.16.19.197
    netmask 255.255.255.0
    
    bridge_ports enp11s0f1
    bridge_stp off

    1.2、centos系统

    配置虚拟网卡br0 ,将虚拟网卡桥接到物理网卡enP1p8s0f3

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enP1p8s0f3
    BOOTPROTO=none
    DEVICE=enP1p8s0f3
    ONBOOT=yes
    NM_CONTROLLED=no
    BRIDGE=br0
    
    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
    BOOTPROTO=static
    DEVICE=br0
    TYPE=Bridge
    NM_CONTROLLED=no
    IPADDR=172.16.21.161
    NETMASK=255.255.255.0
    GATEWAY=172.16.21.205
    DNS1=114.114.114.114
    DNS2=8.8.8.8
    ONBOOT=yes

    2、创建虚拟机

    2.1、创建虚拟磁盘

    创建qcow2格式的虚拟磁盘文件ft2000.qcow2,磁盘大小为100G
    注:如需为虚拟机创建快照,磁盘格式必须为qcow2,如使用raw磁盘格式,则需要转换成qcow2格式,转换命令:qemu-img convert -f raw -O qcow2 {xx.raw} {xx.qcow2}

    root@node219:/data1# qemu-img create -f qcow2 ft2000.qcow2 100G

    2.2、创建虚拟机

    root@node219:/data1# virt-install --connect qemu:///system --virt-type kvm --name ft2000 --disk path=./ft2000.raw --ram 4096 --vcpus 4 --network bridge=br0 --memballoon model=virtio --cdrom=./zf-ft2000server.iso --graphics vnc,port=5900,listen='0.0.0.0' --autostart --noautoconsole --os-type=linux
    • --name :虚拟机名称,此处为ft2000
    • --disk path :虚拟机磁盘文件存放路径,此处为./ft2000.raw
    • --ram :虚拟机内存大小,默认大小为MB,此处为4096(即4G)
    • -vcpus :虚拟机CPU个数,此处为4
    • --network bridge :虚拟机使用网桥名称,此处为br0
    • --cdrom :虚拟机虚拟光盘映射镜像路径(用于系统安装),此处为zf-ft2000server.iso

    2.3、连接虚拟机

    修改虚拟机ft2000启动端口后,开启虚拟机

    root@node219:~# virsh edit ft2000
    <graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0'>
    <listen type='address' address='0.0.0.0'/>
    </graphics>
    root@node219:~# virsh start ft2000

    使用VNC Viewer访问虚拟机地址172.16.19.197:5904进行连接访问

    正常来说,VNC(RFB协议)会根据网络质量自动调整画面质量,如KVM服务器VNC服务不能根据网络质量适配画面质量时,使用VNC Viewer 访问虚拟机控制台出现Attempting to reconnect to VNC Server Protocol error:invalid message type 20 错误信息,此时需要手动调整画面质量为具体一个等级(比如说Medium中等质量),VNC会话选择Properties -->Options ,更改Picture qualityMedium (默认为Automatic

    注:
    1、若环境无法通过VNC访问虚拟机,则可通过以下方法连接

    \查看当前虚拟机longsong网络Mac地址
    [root@localhost data02]# virsh edit longsong
    <interface type='network'>
    <mac address='52:54:00:d1:a1:be'/>
    <source network='default'/>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    
    \通过arp -a查询Mac地址对应IP地址
    [root@localhost data02]# arp -a 
    XiaoQiang (192.168.31.1) at 50:d2:f5:92:8d:b1 [ether] on enp0s3f0
    ? (192.168.122.100) at 52:54:00:61:1f:f9 [ether] on virbr0
    ? (192.168.122.49) at 52:54:00:d1:a1:be [ether] on virbr0
    
    \宿主机直接ssh对应IP地址即可
    [root@localhost data02]# ssh 192.168.122.49

    2、若环境无法通过VNC访问虚拟机,则可通过virsh console {vm-name} 命令行连接到虚拟机控制台

    三、常用操作

    1、虚拟磁盘操作

    1.1、添加虚拟磁盘

    • 创建虚拟磁盘文件,磁盘格式为qcow2,磁盘大小为50G
    root@node219:/data1# qemu-img create -f qcow2 /data2/ft2000-1.img 50G
    • 添加磁盘到虚拟机上
    root@node219:/data1# virsh attach-disk ft2000 /data2/ft2000-1.img sdc --cache none --subdriver qcow2 --config

    注:如需在线添加,则在命令后添加参数--live

    2、虚拟网卡操作

    2.1、添加虚拟网卡

    • 查看虚拟机网卡列表
    root@node221:/data1# virsh domiflist vm94
    Interface  Type       Source     Model       MAC
    -------------------------------------------------------
    vnet0      bridge     br1        virtio      52:54:00:81:83:1c
    • 添加虚拟网卡到虚拟机vm94
    root@node221:/data1# virsh attach-interface vm94 --type bridge --source br1
    Interface attached successfully
    
    root@node221:/data1# virsh domiflist vm94
    Interface  Type       Source     Model       MAC
    -------------------------------------------------------
    vnet0      bridge     br1        virtio      52:54:00:81:83:1c
    vnet3      bridge     br1        virtio      52:54:00:38:4e:88

    2.2、删除虚拟网卡

    删除虚拟机vm94网卡(mac地址为52:54:00:38:4e:88)

    root@node221:/data1# virsh detach-interface vm94 --type bridge --mac 52:54:00:38:4e:88 --config

    3、克隆虚拟机

    root@node219:/data1# virt-clone -o ft2000 -n vm201 -f /data1/vm201.raw -f /data1/vm201-1.img
    • -o :后接模板虚拟机名称
    • -n :后接目标虚拟机名称
    • -f :后接目标虚拟机磁盘文件存放位置,当存在多个磁盘时,指定多个路径即可,示例模板虚拟机ft2000有一个系统盘和一个数据盘

    4、虚拟机导入导出

    • 虚拟机导出
    #查看当前虚拟机列表
    root@node69:/data/# virsh list --all
    Id    Name                           State
    ----------------------------------------------------
    -     ft2000-template                shut off
    
    #查看虚拟机磁盘文件和虚拟磁盘映射关系
    root@node69:/data/# virsh domblklist ft2000-template
    Target     Source
    ------------------------------------------------
    sda        /data/ft2000-template.raw
    sdb        -
    
    #导出虚拟机配置文件
    root@node69:/data/# virsh dumpxml ft2000-template  > ft2000-template.xml
    • 虚拟机导入将虚拟机磁盘文件和配置文件拷贝到目标端,导入虚拟机文件即可
    root@node67:/data# ll
    total 55873340
    drwxrwxrwx  2 node67       node67        4096 Sep 21 18:04 ./
    drwxr-xr-x 27 root         root          4096 Sep 19 11:53 ../
    -rw-------  1 root         root   53687091200 Sep 21 17:54 ft2000-template.raw
    -rw-r--r--  1 root         root          4642 Sep 21 18:04 ft2000-template.xml
    -rw-r--r--  1 libvirt-qemu kvm     3527180288 Sep 11 17:09 zf-ft2000server.iso
    
    root@node67:/data# virsh define ft2000-template.xml 
    Domain ft2000-template defined from ft2000-template.xml
    
    root@node67:/data# virsh list --all
    Id    Name                           State
    ----------------------------------------------------
    -     ft2000-template                shut off

    5、重装虚拟机

    因使用需求,需要对虚拟机进行重装系统操作,更改虚拟机配置信息后,重新启动虚拟机即可
    相关配置信息修改如下:

    • os更改启动方式为cdrom(从光驱启动),默认为hd(从硬盘启动)
    • cdrom增加配置<source file='/disk2/ft2500-zf/Kylin-Server-V10_U1-Release-Build02-20210729-arm64.iso'/>,指定ISO文件路径,更改dev为hdc
      注:需要对ISO多级父目录赋予执行权限chmod 755 -R /disk2/,否则启动虚拟机会因权限不足启动失败error: internal error: qemu unexpectedly closed the monitor: Permission denied
    <domain type='kvm'>
      <os>
        <boot dev='cdrom'/>
      </os>
      <devices>
        <disk type='file' device='cdrom'>
          <source file='/disk2/ft2500-zf/Kylin-Server-V10_U1-Release-Build02-20210729-arm64.iso'/>
          <target dev='hdc' bus='scsi'/>
        </disk>
      </devices>
    </domain>

    6、基础操作命令

    6.1、虚拟机管理

    • 查看当前宿主机所有虚拟机:virsh list --all
    • 查看当前宿主机所有存储池:virsh pool-list
    • 命令行连接到某一台虚拟机:virsh console {VM-name}注:按下Ctrl ]退出连接
    • 关闭虚拟机:virsh shutdown {VM-name}
    • 开启虚拟机:virsh start {VM-name}
    • 强制关闭虚拟机:virsh destroy {VM-name}
    • 删除虚拟机:virshundefine {VM-name}
    • 开启虚拟机开机自启动:virsh autostart {VM-name}
    • 关闭虚拟机开机自启动:virsh autostart --disable {VM-name} --nvram
    • 编辑虚拟机配置文件:virsh edit {VM-name}

    6.2、虚拟机快照

    • 创建虚拟机快照:virsh snapshot-create-as {VM-name} --name {snap-name} --description "{snap-description}"
    • 查看虚拟机快照列表信息:virsh snapshot-list {VM-name}
    • 查看虚拟机某一快照具体信息:virsh snapshot-info {VM-name} {snap-name}
    • 恢复虚拟机快照:virsh snapshot-revert {VM-name} {snap-name}

    四、Q&A

    1、error: Failed to connect socket to '/var/run/libvirt/libvirt-sock'

    • 问题描述:
      使用virsh命令操作失败,提示error: Failed to connect socket to '/var/run/libvirt/libvirt-sock'
    [root@localhost home]# virsh define vm50.xml 
    error: failed to connect to the hypervisor
    error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
    • 解决措施:
      启动libvirtd服务,设置开机自启动
    systemctl start libvirtd
    systemctl enable libvirtd

    五、批量操作

    1、批量克隆虚拟机

    #!/usr/bin/env bash
    DIR=$(cd `dirname $0`; pwd)
    cd $DIR
    
    for i in `seq 88 90`
    do
    #virsh undefine vm$i --nvram
    #rm -rf /data1/vm$i.raw
    virt-clone -o ft2000 -n vm$i -f /data1/vm$i.raw
    qemu-img create -f qcow2 /data1/vm$i-1.img 50G
    qemu-img create -f qcow2 /data1/vm$i-2.img 50G
    virsh attach-disk vm$i /data1/vm$i-1.img sdc --cache none --subdriver qcow2 --config
    virsh attach-disk vm$i /data1/vm$i-2.img sdd --cache none --subdriver qcow2 --config
    done
  • 相关阅读:
    最新Xcode7.x环境下上架iOS App到AppStore 完整流程
    rails提供的validators
    Ruby 符号【转】
    xaml学习笔记
    fedora安装rails缺少js runtime和cannot load such file -- sqlite3/sqlite3_native解决办法
    学习笔记——敏捷开发
    结队编程(电梯调度问题)
    【转】javascript操作Select标记中options集合
    【软件工程】Word frequency program
    【转】诗社之死
  • 原文地址:https://www.cnblogs.com/luxf0/p/15990461.html
Copyright © 2020-2023  润新知