【KVM相关】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

注:添加虚拟网卡,如出现Failed to attach interface,internal error: No more available PCI slots错误提示,可尝试使用以下方法添加,添加完成后,重启虚拟机即可

[root@localhost ~]# virsh attach-interface vm94 --type bridge --source br1 --model virtio --config 
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}
  • 删除虚拟机:virsh undefine {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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值