- 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 off1.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=yes2、创建虚拟机 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 100G2.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
修改虚拟机ft2000启动端口后,开启虚拟机
root@node219:~# virsh edit ft2000root@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 quality 为Medium (默认为Automatic)
注:
1、若环境无法通过VNC访问虚拟机,则可通过以下方法连接
查看当前虚拟机longsong网络Mac地址 [root@localhost data02]# virsh edit longsong通过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 --config2.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 --config3、克隆虚拟机
root@node219:/data1# virt-clone -o ft2000 -n vm201 -f /data1/vm201.raw -f /data1/vm201-1.img
- -o :后接模板虚拟机名称
- -n :后接目标虚拟机名称
- -f :后接目标虚拟机磁盘文件存放位置,当存在多个磁盘时,指定多个路径即可,示例模板虚拟机ft2000有一个系统盘和一个数据盘
- 虚拟机导出
#查看当前虚拟机列表 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 off5、重装虚拟机
因使用需求,需要对虚拟机进行重装系统操作,更改虚拟机配置信息后,重新启动虚拟机即可
相关配置信息修改如下:
- os更改启动方式为cdrom(从光驱启动),默认为hd(从硬盘启动)
- cdrom增加配置
,指定ISO文件路径,更改dev为hdc
注:需要对ISO多级父目录赋予执行权限chmod 755 -R /disk2/,否则启动虚拟机会因权限不足启动失败error: internal error: qemu unexpectedly closed the monitor: Permission denied
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}
- 创建虚拟机快照: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}
- 问题描述:
使用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



