KVM
安装KVM
准备一台虚拟机并开启虚拟化

准备好镜像文件
[root@localhost ~]# ls /opt/ centos2.raw CentOS-7-x86_64-DVD-1810.iso
安装kvm虚拟化管理软件
yum install libvirt virt-install qemu-kvm -y
systemctl start libvirtd
systemctl enable libvirtd
建议虚拟机内存不要低于1024M
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
vnc:远程的桌面管理工具
设置VNC

点击Option
点击Advanced
点击Expert
找到ColourLevel
默认值是pal8.修改成rgb222或者full
连接后安装系统

列表
virsh list
开机
virsh start centos7
关机
virsh shutdown centos7
拔电源关机
virsh destroy centos7
接触虚拟机记得第一时间打快照
导出配置dumpxml
virsh dumpxml centos7 > centos7-dump.xml
删除 推荐:先destroy,在undefine
virsh undefine centos7
导入配置
virsh define centos7-dump.xml
编辑配置
virsh edit centos7
压缩
raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用50G
qcow2: cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G
把raw格式压缩为qcow2格式并启动
[root@localhost opt]# ll -h 总用量 5.7G -rw------- 1 qemu qemu 10G 10月 26 11:44 centos7.raw -rw-r--r-- 1 qemu qemu 4.3G 10月 25 16:59 CentOS-7-x86_64-DVD-1810.iso
[root@localhost opt]# qemu-img convert -c centos7.raw -O qcow2 centos7.qcow2
修改centos7 xml文件
[root@localhost opt]# virsh edit centos7 <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/opt/centos7.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk>
virsh destroy centos7
virsh start centos7
[root@localhost opt]# virsh list Id 名称 状态 ---------------------------------------------------- 7 centos7 running
[root@localhost opt]# virsh list Id 名称 状态 ---------------------------------------------------- 7 centos7 running
console命令行登录
在kvm centos7虚拟机上操作
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
[root@localhost ~]# cat /boot/grub2/grub.cfg linux16 /vmlinuz-0-rescue-7d79a0ab69b449eb8994b30a692da3c8 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet console=ttyS0,115200n8
reboot
在宿主机上用console登录kvm虚拟机
按一次回车
[root@localhost opt]# virsh console centos7 连接到域 centos7 换码符为 ^] CentOS Linux 7 (Core) Kernel 3.10.0-957.el7.x86_64 on an x86_64 localhost login:
快照
raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
创建快照
virsh snapshot-create-as centos7 centos7-snap-01
查看快照
virsh snapshot-list centos7
还原快照
virsh snapshot-revert centos7 --snapshotname centos7-snap-01
删除快照
virsh snapshot-delete centos7 --snapshotname centos7-snap-01
克隆
克隆前需要关闭相关虚拟机
完整克隆
virt-clone --auto-clone -o centos7 -n centos7-clone
[root@localhost opt]# ls
centos7-clone.qcow2 centos7.qcow2 centos7.raw CentOS-7-x86_64-DVD-1810.iso web-10.qcow2 web-20.qcow2
链接克隆
生成虚拟机磁盘文件
qemu-img create -f qcow2 -b centos7.qcow2 web-20.qcow2
查看磁盘文件信息
qemu-img info web-20.qcow2
如遇到mac地址冲突可删除配置文件中的mac标签
<mac address='52:54:00:d3:07:a5'/>
链接克隆创建桥接网络虚拟机
链接克隆,生成虚拟机磁盘文件
qemu-img create -f qcow2 -b centos7.qcow2 web-20.qcow2
关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
创建桥接网卡
virsh iface-bridge ens33 br0

默认NAT模式需要修改配置
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
virsh edit centos7
<interface type='bridge'>
<mac address='52:54:00:55:aa:fa'/>
<source bridge='br0'/>
在宿主机上,重启虚拟机生效
桥接模式导入虚拟机并进行启动测试
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web-20 --memory 1024 --vcpus 1 --disk /opt/web-20.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

使用Xshell连接web-20

设置域开机自启
virsh autostart web-20
热添加技术
kvm虚拟机在线热添加硬盘
创建磁盘文件
qemu-img create -f qcow2 -b centos7.qcow2 add.qcow2
临时生效
virsh attach-disk web-20 /opt/add.qcow2 vdb --subdriver qcow2
永久生效
virsh attach-disk web-20 /opt/add.qcow2 vdb --subdriver qcow2 --config
mkfs.xfs /dev/vdb mount /dev/vdb /mnt/
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 8.0G 1.2G 6.9G 15% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 1014M 133M 882M 14% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/vdb 12G 33M 12G 1% /mnt
继续扩充磁盘
umount /mnt/
在kvm虚拟机,卸载磁盘
virsh detach-disk web-20 vdb
增加容量
qemu-img resize /opt/add.qcow2 +5G
重新附加磁盘
virsh attach-disk web-20 /opt/add.qcow2 vdb --subdriver qcow2
在虚拟机进行扩容操作
mount /dev/vdb /mnt/ xfs_growfs /dev/vdb
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 8.0G 1.2G 6.9G 15% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 1014M 133M 882M 14% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/vdb 15G 33M 15G 1% /mnt
磁盘不建议缩容
kvm虚拟机在线热添加网卡
virsh attach-interface web-20 --type bridge --source br0 --model virtio
删除网卡
virsh detach-interface web-20 --type bridge --mac 52:54:00:94:c3:cf
kvm虚拟机在线热添加内存
临时热添加内存
virsh setmem web-20 1024M --live
永久增大内存
virsh setmem web-29 1024M --config
出现错误
[root@localhost opt]# virsh setmem web-20 2048M --live 错误:无效参数:无法将内存设置为高于最大内存
在添加虚拟机时应注意设置最大内存数--memory 512,maxmemory=2048
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
内存可以随意在线增大减小
kvm虚拟机在线热添加cpu
在添加虚拟机时应注意设置最大cpu数 --vcpus 1,maxvcpus=10
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加cpu核数
virsh setvcpus web-20 4 --live
永久添加cpu核数
virsh setvcpus web-20 4 --config
cpu数只能增加
kvm虚拟机热迁移
冷迁移kvm虚拟机:配置文件,磁盘文件
热迁移kvm虚拟机:配置文件,nfs共享
热迁移描述:
相比KVM虚拟机冷迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机热迁移无需拷贝虚拟磁盘文件,
但是需要迁移到的宿主机之间需要有相同的目录结构虚拟机磁盘文件,也就是共享存储,本文这部分内容通过nfs来实现,当然也可以采
用Glusterfs集群文件系统来实现.
环境要求:
主机名 ip 内存 网络 软件需求 虚拟化 kvm01 192.168.88.99 2G 创建br0桥接网卡 kvm和nfs 开启虚拟化 kvm02 192.168.88.100 2G 创建br0桥接网卡 kvm和nfs 开启虚拟化 nfs01 192.168.88.10 1G 无 nfs 无
操作步骤:
在三台服务器上做好host解析和hostname
hostnamectl set-hostname nfs hostnamectl set-hostname kvm01 hostnamectl set-hostname kvm02
cat > /etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.88.10 nfs 192.168.88.99 kvm01 192.168.88.100 kvm02 EOF
一:在kvm01和kvm02上安装kvm和nfs,配置桥接网卡
yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y
systemctl start libvirtd.service
systemctl enable libvirtd.service
关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
virsh iface-bridge eth33 br0
二:在nfs上安装配置nfs
yum install nfs-utils -y systemctl start nfs systemctl enable nfs.service mkdir /data -p
[root@nfs ~]# vim /etc/exports /data 192.168.88.0/24(rw,async,no_root_squash,no_all_squash)
systemctl restart rpcbind
systemctl restart nfs
systemctl enable nfs
三:kvm01和kvm02挂载共享目录/mnt
mount -t nfs 192.168.88.10:/data /mnt
四:基于挂载目录安装一台基于桥接模式的虚拟机
cp centos7.qcow2 /mnt/
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name qianyi --memory 512,maxmemory=1024 --vcpus 1 --disk /mnt/centos7.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
把在kvm01的虚拟机热迁移到kvm02
热迁移命令:
virsh migrate --live --verbose qianyi qemu+ssh://192.168.88.100/system tcp://192.168.88.100 --unsafe

浙公网安备 33010602011771号