Aprende KVM en profundidad

Aprende KVM en profundidad

1. Preparación ambiental

Nombre de host IP Sistema operativo Memoria Disco duro
kvm01 10.0.0.11 centos7 4G 50 GRAMOS

Optimización: kvm01 no utiliza particionamiento automático al instalar el sistema, la partición LVM utilizada por particionamiento automático, tarjetas especiales cuando se utiliza kvm

  • Cerrar selinux
[root@kvm02 ~]# grep 'SELINUX=disabled' /etc/selinux/config
SELINUX=disabled
  • Firewalld cerrado
[root@kvm02 ~]# systemctl stop firewalld
[root@kvm02 ~]# systemctl disable firewalld
[root@kvm02 ~]# systemctl status firewalld

Instalar la herramienta de administración de kvm

安装:
yum install libvirt virt-install qemu-kvm -y
介绍:
libvirt服务:管理kvm虚拟机的生命周期
virt-install工具:创建安装虚拟机
qemu-kvm工具:使用qemu-img为虚拟机提供硬盘

Varios software de virtualización en Linux

  • El software qemu es un software de virtualización completa de simulación pura, ¡especialmente lento!
  • El rendimiento de Xen es particularmente bueno, necesita usar un núcleo especialmente modificado, poca compatibilidad.
  • KVM necesita CPU para admitir la virtualización, basada en el núcleo, no es necesario utilizar un núcleo especial, buena compatibilidad y buen rendimiento.

Requisitos previos para instalar la máquina virtual kvm

在window上安装TightVNC
tightvnc官网:http://www.tightvnc.com

vnc是一个跨平台的远程桌面软件,待会安装kvm虚拟机系统的时候使用

启动libvirtd服务
systemctl start libvirtd.service
systemctl status libvirtd.service

Instalar máquina virtual

建议虚拟机内存不要低于1024M,否则安装系统特别慢!

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7.5-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

Segundo, la gestión diaria de máquinas virtuales.

Gestión diaria uno:

  • Lista
  • Inicio
  • Apagado
  • Desenchufe el poder para destruir el destruir

Comandos comunes:

virsh list --all
virsh destroy centos7
virsh shutdown centos7
virsh start centos7

Gestión diaria II:

  • Exportar configuración dumpxml
  • Eliminar indefinido
  • Recomendado: destruir primero, en indefinido
  • Importar configuración definir
  • Modificar configuración editar
  • Cambiar el nombre de domrename (Nota: no se admite en versiones anteriores)
实例:
virsh dumpxml centos7 >centos7.xml
cat centos7.xml 
[root@kvm02 opt]# virsh define centos7.xml (备份的配置文件)
[root@kvm02 opt]# virsh list --all
mv centos2.raw centos7.raw
virsh edit centos7
virsh start centos7
virsh list --all
[root@kvm02 opt]# virsh domrename centos7 web01
Domain successfully renamed
[root@kvm02 opt]# virsh list --all
[root@kvm02 /]# virsh suspend web01
[root@kvm02 /]# virsh resume web01
[root@kvm02 /]# virsh vncdisplay web01
:0
[root@kvm02 /]# virsh autostart web01
域 web01标记为自动开始
[root@kvm02 /]# virsh autostart --disable web01

Tres, inicio de sesión de consola de máquina virtual KVM

1: En circunstancias normales, después de instalar KVM, puede conectarse a la máquina virtual KVM a través de VNC para modificar la IP y otra información. Pero una vez que haya más máquinas virtuales, abrir demasiados puertos causará problemas de seguridad.

2: Muchas veces, estamos conectados a la máquina host a través del trampolín. Su ventana y el host kvm no tienen una ruta directa. En este momento, no se puede usar vnc. ¿Cómo ingresar rápidamente a la máquina virtual KVM para solucionar el problema?

在centos7的kvm虚拟机中执行:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"

reboot重启生效
使用console登录:
[root@kvm02 /]# virsh console web01
连接到域 web01
换码符为 ^]

Cuarto, conversión de formato de disco virtual kvm y gestión de instantáneas

Dos formatos comunes de máquina virtual kvm

  • sin formato: formato sin formato, ocupa mucho espacio, no es adecuado para la transmisión remota, no admite la función de instantánea y tiene un buen rendimiento
  • qcow2: cow (copia en escritura) ocupa poco espacio, es adecuado para la transmisión, admite instantáneas y el rendimiento es un poco peor que el raw
qemu-img create test.raw 10G
qemu-img info test.raw
qemu-img create -f qcow2 test.qcow2 5G
qemu-img info test.qcow2
qemu-img resize test.qcow2 +10G
qemu-img info test.qcow2 
修改磁盘格式:
qemu-img convert -f raw -O qcow2 test.raw test1.qcow2
[root@kvm02 opt]# qemu-img info test1.qcow2 
案例1:
将现有的虚拟机的磁盘格式由raw转换为qcow2,并测试运行
qemu-img convert -f raw -O qcow2 centos7.raw web01.qcow2
virsh edit web01
修改磁盘的配置文件
virsh start web01

Gestión de instantáneas:

创建快照
virsh snapshot-create centos7
查看快照
virsh snapshot-list centos7
还原快照
virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照
virsh snapshot-delete centos7 --snapshotname 1516636570
实例:
虚拟机上创建文件:测试恢复快照后文件消失
dd if=/dev/zero of=/tmp/test.raw bs=100M count=1

virsh snapshot-create web01
virsh snapshot-list web01 
virsh snapshot-revert web01 --snapshotname 1586618763
virsh snapshot-list web01 
virsh snapshot-delete web01 --snapshotname 1586618763
virsh snapshot-list web01 

Quinto, la clonación de la máquina virtual kvm

Clon completo

实现方法:
	virt-clone -o web01 --auto-clone
	virsh dumpxml web01 >web01.xml
    virsh dumpxml web01-clone >web01-clone.xml
    vimdiff web01.xml web01-clone.xml 
    对比克隆前后的配置文件差异
    virsh domrename web01-clone web03
    对克隆机器重命名
    virsh list --all
    virsh edit web03

链接克隆
	实现方法:
	shell脚本

Clon completo: (clon manual)

1:克隆虚拟磁盘文件
cp centos7.qcow2 web03.qcow2
2:生成新的虚拟机配置文件
name修改
uuid删掉
disk路径/opt/web03.qcow2
mac地址删除
3:测试启动
virsh define  web01.xml
实例:
cp web01.qcow2 web04.qcow2
vim web01.xml
virsh define web01.xml (virsh dumpxml web01 >web01.xml)
virsh list --all
virsh start web04

Clon vinculado

链接克隆实战:
基于原磁盘克隆磁盘:
qemu-img create -f qcow2 -b cetnos7.qcow2 web02.qcow2
创建克隆机器:(区别:--boot hd)
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /opt/web02.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

案例:
[root@kvm02 opt]# qemu-img create -f qcow2 -b web01.qcow2 web02.qcow2
[root@kvm02 opt]# qemu-img info web02.qcow2 
[root@kvm02 opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /opt/web02.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
[root@kvm02 opt]# virsh list --all
[root@kvm02 opt]# virsh vncdisplay web02

Sexto, la red puente de la máquina virtual kvm

El propósito de ejecutar la máquina virtual es ejecutar nuestro negocio en la máquina virtual. ¡Ahora los servicios requeridos por la empresa ya se están ejecutando, pero nadie puede acceder a ella excepto en la máquina host! ! !

创建桥接网络
1:virsh iface-bridge eth0 br0
如果命令创建失败,可以手工进行创建:
[root@kvm02 opt]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"(注意点)
[root@kvm02 opt]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"(注意点)
BOOTPROTO="none"
IPADDR="10.0.0.12"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
[root@kvm02 opt]# 
基于桥接网络创建虚拟机(区别:--network bridge=br0)
2:virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

将已有的虚机修改为桥接网络
1:virsh edit web02
    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0’/>
2:修改虚拟机ip地址
/etc/sysconfig/network-scripts/ifcfg-eth0

Diagrama esquemático de la red en modo NAT kvm

Diagrama esquemático de la red del puente kvm

7. Tecnología de adición en caliente de la máquina virtual kvm

La tecnología de adición en caliente consiste en agregar discos duros, memoria, CPU, tarjetas de red y otros dispositivos en línea sin tiempo de inactividad. La tecnología de adición en caliente generalmente se utiliza cuando los recursos de la máquina virtual son insuficientes y no se pueden detener. Una gran ventaja de la computadora sobre la máquina física, ¡hace que la asignación de recursos sea más flexible!

Los tipos de adición en caliente son:

  • 1. Añadir disco duro en caliente
  • 2. Agregar tarjeta de red en caliente
  • 3. Añadir CPU en caliente
  • 4. Agregar memoria en caliente

Agregar disco duro en caliente

[root@kvm02 opt]# qemu-img create -f qcow2 web02-add.qcow2 10G
[root@kvm02 opt]# virsh attach-disk web02 /opt/web02-add.qcow2 vdb --live --cache=none --subdriver=qcow2
成功附加磁盘
虚拟机上配置:
fdisk /dev/vdb
mkfs.xfs /dev/vdb1
mount /dev/vdb1 /mnt
df -h
磁盘扩容案例:
虚拟机配置:
umount /mnt
宿主机配置:
[root@kvm02 opt]# virsh --help | grep disk
    attach-disk                    附加磁盘设备
    detach-disk                    分离磁盘设备
[root@kvm02 opt]# virsh detach-disk web02 vdb
成功分离磁盘
[root@kvm02 opt]# qemu-img resize web02-add.qcow2 +5G
Image resized.
[root@kvm02 opt]# qemu-img info web02-add.qcow2 
[root@kvm02 opt]# virsh attach-disk web02 /opt/web02-add.qcow2 vdb --live --cache=none --subdriver=qcow2
成功附加磁盘
虚拟机配置:
fdisk /dev/vdb
d(删除重新配置)
mkfs.xfs /dev/vdb1
partprobe /dev/vdb
xfs_growfs /mnt(ext 格式的需要resize2fs /mnt)
mount /dev/vdb /mnt
df -h

Agregar tarjeta de red en caliente

添加网卡
virsh attach-interface web02 --type bridge  --model  virtio --source br0

Agregar CPU en caliente

安装参数:
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1,maxvcpus=4 --disk /opt/web02.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

热添加cpu
virsh setvcpus web02 --count=2

Agregar memoria en caliente:

安装参数
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=2048 --vcpus=1,maxvcpus=2 --disk /opt/web02.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0  --noautoconsole

热添加内存
virsh setmem web02 1G

8. Migración en caliente de la máquina virtual kvm

Migración en caliente:

En comparación con la migración en frío de la máquina virtual KVM, es necesario copiar el archivo del disco virtual de la máquina virtual. La migración en caliente de la máquina virtual kvm no necesita copiar el archivo del disco virtual, pero la máquina host a la que se debe migrar debe tener la misma estructura de directorios. Almacenamiento, esta vez a través de los nfs familiares para lograr, por supuesto, también puede usar Glusterfs y otros sistemas de archivos distribuidos para lograr.

En la última sección, aprendimos la tecnología de adición en línea, es fácil de entender. Suponiendo que solo tengo una máquina física con memoria 16G, para hacer un uso completo de los recursos, puedo ejecutar 8 máquinas virtuales con memoria 2G, y luego aumenta la cantidad de acceso, y la memoria 2G de la máquina virtual no es suficiente. Algunas máquinas virtuales deben migrarse primero a otros hosts. Algunas empresas tienen núcleos especiales. El tiempo de pausa no debe ser demasiado largo. En este momento, utilizaremos nuestra migración en caliente.

Proceso de migración en caliente:

Supongamos que tenemos 2 máquinas host kvm01 y kvm02, suspendemos la máquina virtual vm01 en kvm01, enviamos el archivo de configuración de la máquina virtual de vm y los datos en la memoria de tiempo de ejecución a kvm02, se completa la aceptación, kvm02 restaura vm01 y se completa la migración en caliente.

Preparación del entorno de migración en caliente:

Nombre de host ip Memoria Internet Requisitos de software Virtualización
kvm01 10.0.0.11 2G Crear tarjeta de red br0 bridge kvm y nfs Activa la virtualización
kvm02 10.0.0.12 2G Crear tarjeta de red br0 bridge kvm y nfs Activa la virtualización
nfs01 10.0.0.31 1G Ninguno nfs Ninguno

Pasos de migración en caliente

(1): Instale kvm y nfs en kvm01 y kvm02, configure la tarjeta de red del puente

yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y

systemctl start libvirtd.service

virsh iface-bridge eth0 br0

(2): Instalar y configurar nfs en nfs01

yum install nfs-utils -y

mkdir /data

vim /etc/exports

/data 10.0.0.0/24(rw,async,no_root_squash,no_all_squash)

systemctl restart rpcbind

systemctl restart nfs

(3): kvm01 y kvm02 montan el directorio compartido / opt

mount -t nfs 10.0.0.31:/data /opt

(4): instale una máquina virtual basada en el modo puente

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
(这里利用之前保存下来的硬盘,virsh edis web04,将已有的硬盘名称配置到配置文件中)
热迁移的命令:
virsh migrate --live --verbose web04 qemu+ssh://10.0.0.12/system --unsafe
将宿主机10.0.0.11上的kvm虚拟机web04迁移到10.0.0.12

(5): Instale la interfaz gráfica, el servidor vnc y virt-manager en kvm01

yum groups install "GNOME Desktop" -y

yum install tigervnc-server.x86_64 -y

yum install virt-manager -y

Seis: iniciar el servidor vnc

vncserver :1 启动5901端口的vnc服务端

vncserver -kill :1 关闭5901端口的vnc服务端

Siete: use vnc para conectarse al host, use virt-manager para migrar

En este momento, se le pedirá que ingrese la contraseña, que es la contraseña de conexión vnc establecida en el paso anterior 6

! [1587143636550] (

La conexión es exitosa.

Durante el proceso de migración, utilizando la IP de la máquina virtual ping, solo se perdió un paquete.

Supongo que te gusta

Origin www.cnblogs.com/cuiyongchao007/p/12723705.html
Recomendado
Clasificación