侧边栏壁纸
博主头像
汪洋

即使慢,驰而不息,纵会落后,纵会失败,但一定可以达到他所向的目标。 - 鲁迅

  • 累计撰写 190 篇文章
  • 累计创建 74 个标签
  • 累计收到 108 条评论

KVM - 环境部署 - 2

汪洋
2021-07-18 / 0 评论 / 1 点赞 / 337 阅读 / 7,742 字

KVM 安装

判断机器是否支持硬件虚拟化的支持
$ cat /proc/cpuinfo | egrep 'vmx|svm'
Centos7 安装图形化
$ yum groupinstall "X Window System"
$ yum groupinstall "GNOME Desktop"
$ ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

# Centos7 运行级别切换
# 获取当前系统启动模式
$ systemctl get-default
# 由命令行模式更改为图形界面模式
$ systemctl set-default graphical.target
# 由图形界面模式更改为命令行模式
$ systemctl set-default multi-user.target
安装 kvm 虚拟化
$ yum -y install qemu-kvm libvirt virt-install bridge-utils  virt-manager
配置网桥
[root@localhost network-scripts]# cat ifcfg-enp0s25 
  TYPE=Ethernet
  NAME=enp0s25
  DEVICE=enp0s25
  ONBOOT=yes
  BOOTPROTO=none
  NM_CONTROLLED=no
  BRIDGE=br0
  
[root@localhost network-scripts]# cat ifcfg-br0 
  TYPE=Bridge
  BOOTPROTO=static
  DEVICE=br0
  ONBOOT=yes
  IPADDR=192.168.0.103
  NETMASK=255.255.255.0
  GATEWAY=192.168.0.1
  DNS1=114.114.114.114
  DNS2=8.8.8.8
  NM_CONTROLLED=no

KVM 常用命令及其配置

# 1、KVM 虚拟机配置文件及运行状态,--all 显示所有虚拟机(包括已关机)
$ virsh list   --all
  KVM 虚拟机默认配置文件位置: /etc/libvirt/qemu/
  autostart 目录是配置 kvm 虚拟机开机自启动目录

# 2、KVM 虚拟机开机
$ virsh start oeltest01

# 3、KVM 虚拟机关机或断电
# 关机,默认情况下 virsh 工具不能对 linux 虚拟机进行关机操作,linux 操作系统需要开启与启动 acpid 服务。在安装 KVM linux 虚拟机必须配置此服务
$ chkconfig acpid on
$ service acpid restart
# virsh关机
$ virsh shutdown oeltest01
# 强制关闭电源
$ virsh destroy wintest01

# 4、通过配置文件启动虚拟机
$ virsh create /etc/libvirt/qemu/wintest01.xml

# 5、配置开机自启动虚拟机,autostart 目录是 kvm 虚拟机开机自启动目录,可以看到该目录中有 KVM 配置文件链接
$ virsh autostart oeltest01

# 6、导出 KVM 虚拟机及配置文件
$ virsh dumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml

# 7、添加与删除 KVM 虚拟机
# 删除 KVM 虚拟机,说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件
$ virsh undefine wintest01
# 重新定义虚拟机配置文件
# 通过导出备份的配置文件恢复原 KVM 虚拟机的定义,并重新定义虚拟机。
$ mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xml
$ virsh define /etc/libvirt/qemu/wintest01.xml

# 8、编辑KVM虚拟机配置文件,virsh edit 将调用 vi 命令编辑 /etc/libvirt/qemu/wintest01.xml 配置文件。也可以直接通过vi命令进行编辑,修改,保存
$ virsh edit wintest01

# 9、挂起及恢复服务器
$ virsh suspend oeltest01
$ virsh resume oeltest01

# 10、通过命令创建虚拟机
[root@localhost ~]$ virt-install --name=centos1 \
--ram 1024 --vcpus=1 \
--disk path=/root/centos1.img,size=10 \
--accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \
--graphics vnc,port=5921 --network bridge=br0

KVM 虚拟机克隆

# 克隆必须要关闭源主机
[root@node02 ~]$ virsh shutdown centos7.0

# 以 oeltest01 做为源,克隆 oeltest01 虚拟机,并创建名称为 oeltest02 虚拟机,使用磁盘文件 /data/test02.img
[root@node02 ~]$ virt-clone -o centos7.0 -n centos7.1 -f /KVM/2.qcow2

# 终端连接,修改主机名、IP 地址等参数
[root@node02 ~]$ virsh console centos7.1
# 连接不成功,修改 Linux 启动配置
[root@node02 ~]$ cat > /etc/default/grub << EOF
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL="console serial"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"
    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"
    GRUB_DISABLE_RECOVERY="true"
	EOF

[root@node02 ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
[root@node02 ~]$ reboot

KVM 虚拟机快照

kvm 虚拟机默认使用 raw 格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像, zlib 磁盘压缩, AES 加密等。要使用镜像功能,磁盘格式必须为 qcow2 。下面开始 kvm 虚拟机快照备份的过程

1)查看磁盘格式

[root@node02 ~]# qemu-img info /KVM/1.qcow2 

2)raw 格式磁盘需要转换为 qcow2 格式,关闭虚拟机进行磁盘转换

[root@node02 ~]# virsh shutdown  centos7.1

3)转换磁盘格式

[root@node02 ~]# qemu-img convert -f raw -O qcow2 /KVM/2.qcow2  /KVM/2q.qcow2
  -f  源镜像的格式   
  -O 目标镜像的格式

4)修改虚拟机配置文件

[root@node02 ~]# virsh edit centos7.1
      <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/KVM/2q.qcow2'/>
# 修改磁盘类型以及采用的磁盘文件

5)对虚拟机进行快照管理

# 常见虚拟机快照
[root@node02 ~]# virsh snapshot-create 虚拟机名称
# 指定快照别名的方式常见快照
[root@node02 ~]# virsh snapshot-create-as centos7.1 ss1

# 查看虚拟机快照
[root@node02 ~]# virsh snapshot-list centos7.1

# 查看快照的详细信息
[root@node02 ~]# virsh snapshot-current centos7.1

# 查看当前虚拟机镜像文件
[root@node02 ~]# qemu-img info /KVM/2q.qcow2 
# 快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称/

6)从快照恢复虚拟机状态

# 恢复虚拟机必须关机
[root@node02 ~]# virsh shutdown  centos7.1

# 确认恢复快照名称
[root@node02 centos7.1]# virsh snapshot-list centos7.1

# 从选择的快照进行数据还原
[root@node02 centos7.1]# virsh snapshot-revert centos7.1 ss1

7)删除虚拟机快照

# 查看虚拟机快照信息
[root@node02 ~]# qemu-img info /KVM/2q.qcow2

# 从查看到的 info 中获取当前 ID,进行删除
[root@node02 ~]# virsh snapshot-delete centos7.1 tagName

# 重新查看信息确认
[root@node02 ~]# qemu-img info /KVM/2q.qcow2

KVM 热添加

热添加磁盘
# 创建磁盘
[root@node02 centos7.1]# qemu-img create -f qcow2 /KVM/add.qcow2  5G

# 附加磁盘设备
[root@node02 centos7.1]# virsh attach-disk  centos7.1 /KVM/add.qcow2  vdb --live --cache=none --subdriver=qcow2

# 格式化磁盘
[root@localhost ~]# mkfs.xfs /dev/vdb

# 挂载
[root@localhost ~]# mount /dev/vdb /data
磁盘扩容
# 卸载磁盘
[root@localhost ~]# umount /dev/vdb

# 分离磁盘设备
[root@node02 centos7.1]# virsh detach-disk centos7.1 vdb

# 增加磁盘大小
[root@node02 centos7.1]# qemu-img resize /KVM/add.qcow2 +10G

# 附加磁盘设备
[root@node02 centos7.1]# virsh attach-disk  centos7.1 /KVM/add.qcow2  vdb --live --cache=none --subdriver=qcow2

# 挂载
[root@localhost ~]# mount /dev/vdb /data

# 重新分配磁盘空间
[root@localhost ~]# xfs_growfs /dev/vdb
热添加网卡
# 添加 NAT 模式网卡
[root@node02 centos7.1]# virsh attach-interface centos7.1 --type network  --model  virtio --source default

# 添加 Br 模式网卡
[root@node02 centos7.1]# virsh attach-interface web01 --type bridge  --model  virtio --source br0

# 采用 xml 文件进行添加
[root@node02 centos7.1]# virsh edit centos7.1
      <interface type='bridge'>
        <mac address='52:54:00:45:02:55'/>
        <source bridge='br0'/>
        <model type='virtio'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
      </interface>
      <interface type='network'>
        <source network='default'/>
        <model type='virtio'/>
      </interface>
热添加 CPU(目前只能增加不能减小,可关机减小)
[root@node02 centos7.1]# virsh setvcpus web01 --count=2
# 查看当前虚拟机 CPU 逻辑核心数
[root@localhost ~]# cat /proc/cpuinfo| grep "processor"| wc -l

[root@localhost ~]# virsh setvcpus web01 --count=2
热添加内存
[root@node02 centos7.1]# virsh setmem centos7.1 2G
热添加 USB 设备
# 安装 lsusb 命令行工具
[root@node02 centos7.1]# yum -y install usbutils

# 查询 usb 的对应 id
[root@node02 centos7.1]# lsusb

# 创建 usb.xml 用来 kvm 识别 usb
[root@node02 centos7.1]# vi usb.xml
    <hostdev mode='subsystem' type='usb'>
      <source>
        <vendor id='0x0424'/>
        <product id='0x2514'/>
      </source>
    </hostdev>

# 正在运行中的虚机直接挂载 usb
# 挂载,如果是固定一直使用u盘类似于加密狗这样的软件,建议使用 加载到配置项中  使用参数 --persistent
[root@node02 centos7.1]# virsh attach-device [虚机名] usb.xml  
# 卸载
[root@node02 centos7.1]# virsh detach-device [虚机名] usb.xml

KVM 虚拟机热迁移

一、同一宿主机之间的冷迁移
# 查看当前存在的虚拟机
[root@node01 ~]# virsh list

# 查看当前虚拟机使用的磁盘
[root@node01 ~]# virsh domblklist 4

# 拷贝磁盘文件至迁移目录下
[root@node01 disk]#  mv /KVM/centos7.0-1.qcow2  /disk/

# 修改磁盘路径
[root@node01 disk]# virsh edit centos7.0
    <disk type='file' device='disk'>
        <driver name='qemu' type='raw'/>
        # 修改磁盘路劲
        <source file='/disk/1.qcow2'/>
        <target dev='vda' bus='virtio'/>
        <boot order='1'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>

# 启动虚拟机
[root@node01 disk]# virsh start centos7.0
二、不同宿主机之间的冷迁移
# 查看当前存在的虚拟机
[root@node01 ~]# virsh list

# 查看当前虚拟机使用的磁盘
[root@node01 ~]# virsh domblklist 4

# 拷贝磁盘至别的主机节点
[root@node01 ~]# rsync -avz /KVM/1.qcow2 root@node02:/KVM

# 备份虚拟机的定义文件
[root@node01 ~]# virsh dumpxml centos7.0 > /tmp/1.xml

# 拷贝文件至 node02 主机,导入定义文件
[root@node01 ~]# rsync -avz /root/1.xml root@node02:/root
[root@node01 ~]# virsh define /root/1.xml
[root@node02 ~]# virsh  start centos7.0
三、通过命令行进行不同主机间的热迁移
环境说明
centos7.6  172.27.137.11    node01  kvm
centos7.6  172.27.137.12    node02  kvm
centos7.6  172.27.137.13    nfs		  nfs
环境初始化
1、node01,node02 安装 kvm 环境

2、nfs 机器安装配置 nfs-server 服务,其它 kvm 节点安装 nfs 客户端
(all)$ yum -y install nfs-utils rpcbind

3、在 kvm 节点创建如下存储方式

kvm-nfs

4、在 node01 安装 centos 操作系统

5、进行远程 kvm 主机连接:如果出现报错,安装相关软件报文
$ yum -y install openssl-askpass

6、使用命令进行热迁移
$ virsh
  virsh # migrate centos7.0 qemu+ssh://root@node02/system --live --unsafe --persistent --undefinesource

四、通过图形化进行不同主机间的热迁移

环境说明
centos7.6  172.27.137.11    node01  kvm
centos7.6  172.27.137.12    node02  kvm
centos7.6  172.27.137.13    nfs		  nfs
环境初始化
1、node01,node02 安装 kvm 环境

2、nfs 机器安装配置 nfs-server 服务,其它 kvm 节点安装 nfs 客户端
(all)$ yum -y install nfs-utils rpcbind

3、在 kvm 节点创建如下存储方式

kvm-nfs

4、在 node01 安装 centos 操作系统

5、进行远程 kvm 主机连接:如果出现报错,安装相关软件报文
$ yum -y install openssl-askpass

kvm-host

6、进行图形化迁移

kvm-qianyi

0

评论区