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

 

posted @ 2022-10-25 19:14  kivtx  阅读(169)  评论(0)    收藏  举报