虚拟机迁移
迁移的原因(前提:共享存储)
- 尽可能停机时间短(安全等级 三个9)
- 资源不均等
环境准备
报错
冷迁移
1.准备环境(环境一致)桥接网络 #下载软件及启动 [root@kvm02 ~]# yum install -y libvirt virt-install qemu-kvm [root@kvm02 ~]# systemctl start libvirtd [root@kvm02 ~]# systemctl enable libvirtd #生成桥接 [root@kvm02 ~]# virsh iface-bridge eth0 br0 Created bridge br0 with attached device eth0 2.将磁盘和配置文件进行传输过去 #关机 [root@kvm01 opt]# virsh shutdown web02 #导出配置文件 [root@kvm01 opt]# virsh dumpxml web02 > web02.xml #传输磁盘 [root@kvm01 opt]# scp -rp /opt/web02.qcow2 root@10.0.0.162:/opt/ #传输配置文件 [root@kvm01 opt]# scp -rp /opt/web02.xml root@10.0.0.162:/opt/ 3.将主机导入进去 [root@kvm02 opt]# virsh define web02.xml 4.启动测试 [root@kvm02 opt]# virsh start web02 [root@kvm02 opt]# virsh console web02 [root@centos7 ~]# ping baidu.com PING baidu.com (39.156.69.79) 56(84) bytes of data. 64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=32.6 ms --- baidu.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 32.696/32.696/32.696/0.000 ms [c:\~]$ ssh root@10.0.0.172 Connecting to 10.0.0.172:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Last login: Thu Dec 5 23:14:03 2019 [root@centos7 ~]#
没有虚拟环境
主机名 | ip | 内存 | 网络 | 软件需求 | 虚拟化 |
---|---|---|---|---|---|
kvm01 | 10.0.0.11 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
kvm02 | 10.0.0.12 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
nfs01 | 10.0.0.31 | 1G | 无 | nfs | 无 |
注意:需要互相做好host解析
操作步骤:
方法一:
一:在kvm01和kvm02上安装kvm和nfs,配置桥接网卡
#查看kvm的环境 lsmod |grep kvm #安装kvm环境,nfs环境 yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y #启动 systemctl start libvirtd.service mount /dev/cdrom /mnt #创建桥接网络 virsh iface-bridge eth0 br0
二:在nfs01上安装配置nfs
yum install nfs-utils -y mkdir /data vim /etc/exports /data 10.0.0.0/24(w,async.no. root squash,no. all squash) systemctl restart rpcbind systemctl restart nfs
三kvm01和kvm02挂载共享目录/opt
mount -t nfs 10.0.0.31:/data /opt
四安装一台桥接模式的虚拟机
[root@kvm01 opt]# scp -rp test.qcow2 root@10.0.0.162:/data #创建kvm虚拟机 [root@webvirtmgr opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name test --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole 将虚拟机ip配置为10.0.0.111
五命令行热迁移
virsh migrate --live web01 qemu+ssh://10.0.0.12/system --unsafe #进入kvm,测试 ping baidu.com 远程连接kvm
方法二:
热迁移
1.环境准备 三台主机 kvm01 桥接 虚拟化 nfs客户端 kvm02 桥接 虚拟化 nfs客户端 nfs01 10.0.0.0/24 nfs服务端 [root@kvm01 opt]# yum install -y nfs-utils 2.nfs服务端创建共享目录 [root@nfs01 ~]# cat /etc/exports /opt 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash) #启动 [root@nfs01 ~]# systemctl restart rpcbind [root@nfs01 ~]# systemctl restart nfs #客户端检查 [root@kvm02 ~]# showmount -e 10.0.0.31 Export list for 10.0.0.31: /opt 10.0.0.0/24 [root@kvm01 opt]# showmount -e 10.0.0.31 Export list for 10.0.0.31: /opt 10.0.0.0/24 3.客户端创建挂载目录 [root@kvm02 ~]# mkdir /data [root@kvm01 opt]# mkdir /data #进行挂载 [root@kvm02 ~]# mount -t nfs 10.0.0.31:/opt /data [root@kvm01 opt]# mount -t nfs 10.0.0.31:/opt /data 4.创建一个基于共享目录中的主机 [root@kvm01 opt]# virsh dumpxml web01 > web01.xml [root@kvm01 opt]# cp /opt/web01.qcow2 /data/web01.qcow2 #修改配置文件 <name>db01</name> 删除uuid 删除mac <source file='/data/web01.qcow2'/> [root@kvm01 opt]# virsh define web01.xml Domain db01 defined from db01.xml [root@kvm01 opt]# virsh list --all Id Name State ---------------------------------------------------- - centos6 shut off - centos7 shut off - web01 shut off - lb01 shut off - web02 shut off - web03 shut off [root@kvm01 opt]# virsh start web01 5.开始热迁移 #进行ip地址解析 [root@kvm01 opt]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.161 kvm01 10.0.0.162 kvm02 #进行热迁移 [root@kvm01 opt]# virsh migrate --live --verbose web01 qemu+ssh://10.0.0.162/system --unsafe root@10.0.0.162's password: Migration: [100 %] [root@kvm02 opt]# ll /run/libvirt/qemu/web01.xml -rw------- 1 root root 9689 Dec 6 00:26 /run/libvirt/qemu/web01.xml [c:\~]$ ping 10.0.0.171 -t 来自 10.0.0.171 的回复: 字节=32 时间=1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64 请求超时。 来自 10.0.0.171 的回复: 字节=32 时间=1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.171 的回复: 字节=32 时间<1ms TTL=64
六. Virt-manager管理Kvm虚拟机
\#1.安装图形化界面 [root@qiudao /opt]# yum groupinstall "GNOME Desktop" -y \#2.安装vncserver [root@qiudao /opt]# yum install tigervnc-server -y \#3.设置vnc密码 [root@qiudao /opt]# vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? n \#4.开启vnc,配置端口 [root@qiudao /opt]# vncserver :1 A VNC server is already running as :1xauth: file /root/.Xauthority does not exist New 'qiudao:2 (root)' desktop is qiudao:2 Creating default startup script /root/.vnc/xstartupCreating default config /root/.vnc/configStarting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/qiudao:2.log [root@qiudao /opt]# netstat -lntp |grep vnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 31202/Xvnctcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 31202/Xvnctcp6 0 0 :::5902 :::* LISTEN 31202/Xvnctcp6 0 0 :::6002 :::* LISTEN 31202/Xvnc \#下载安装虚拟化管理 [root@qiudao /opt]# yum install virt-manager -y
七KVM图形化管理
1.服务端安装x11
图形界面工具
[root@kvm-node1 ~]# yum install -y xorg-x11-font-utils xorg-x11-server-utils xorg-x11-utils xorg-x11-xauth xorg-x11-xinit
2.服务端开启SSH
隧道转发X11
[root@kvm-node1 ~]# vim /etc/ssh/sshd_config X11Forwarding yes [root@kvm-node1 ~]# systemctl restart sshd
3.Windows
客户端使用Xshell
连接KVM
宿主机
第一步: 连接KVM宿主机, 修改其属性
第二步: 使用xming
接受SSH X11
图形转发
注意: 需要下载对应工具Xming, 然后启动
第三步:重新连接KVM
宿主机, 执行virt-manager
第四步:安装中文字符,解决界面乱码问题
[root@kevin ~]# yum install -y dejavu-lgc-sans-fonts [root@kevin ~]# yum groupinstall -y "Fonts" //调整字体为中文 [root@kvm-node1 ~]# export LANG=zh_CN.UTF-8
注意:
1.如果使用GUI界面Linux则无需安装即可使用virt-manager
2.如果是MAC笔记本, 仅能使用Crt开启X11图形转发, 同时必须下载XQuartz支持转发
八.KVM虚拟机克隆
九.KVM可视化管理
1. 前言
当Kvm宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为Kvm虚拟化的web管理工具,图形化的WEB,让人能更方便的查看Kvm宿主机的情况和操作。
WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个Kvm管理平台,提供对宿主机和虚机的统一管理,它有别于Kvm自带的图形管理工具(virtual machine manager),让Kvm管理变得更为可视化,对中小型Kvm应用场景带来了更多方便。
WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常Kvm的管理操作变的更加的可视化。
2. 特点
操作简单,易于使用
通过libvirt的API接口对Kvm进行管理
提供对虚拟机生命周期管理
3. 功能
#宿主机管理支持以下功能
CPU利用率
内存利用率
网络资源池管理
存储资源池管理
虚拟机镜像
虚拟机克隆
快照管理
日志管理
虚机迁移
#虚拟机管理支持以下功能
CPU利用率
内存利用率
光盘管理
关/开/暂停虚拟机
安装虚拟机
VNC console连接
创建快照
部署
1. 安装相关依赖
官网:https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr
首先要安装Kvm虚拟化环境,这里我将WebVirtMgr服务器和Kvm服务器放在同一台机器上部署的,即单机部署。
\#1.安装epel源 [root@kvm02 ~]# yum install epel-release \#2.安装依赖及环境 [root@kvm02 ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx \#3.安装编译软件 [root@kvm02 ~]# yum -y install gcc python-devel \#4.安装numpy(Python进行科学计算的基础软件包) [root@kvm02 ~]# pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 安装Python需求环境
\#1.从git-hub中下载相关的webvirtmgr代码 [root@kvm02 ~]# cd /usr/local/src/ [root@kvm02 /usr/local/src]# git clone git://github.com/retspen/webvirtmgr.git \#2.安装WebVirtMgr [root@kvm02 /usr/local/src]# cd webvirtmgr/ [root@kvm02 /usr/local/src/webvirtmgr]# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \#3.检查sqlite3 (备注:自带不需要安装,导入模块检查一下。) [root@kvm02 /usr/local/src/webvirtmgr]# python Python 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2 Type "help", "copyright", "credits" or "license" for more information. \>>> import sqlite3 \>>> exit() \#4.初始化账号 [root@kvm02 /usr/local/src/webvirtmgr]# chmod +x manage.py [root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py syncdb
#5.生成配置文件
[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py collectstatic
\#6.添加管理员账号,这个是管理员账号,用上面的admin和这个账号都可以登录 [root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py createsuperuser WARNING:root:No local_settings file found. Username (leave blank to use 'root'): ops Email address: 1176494252@qq.com Password: Password (again): Superuser created successfully. #导入数据库 [root@webvirtmgr webvirtmgr]# python Python 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 >>> exit() \#7.拷贝web到相关目录 [root@kvm02 /usr/local/src/webvirtmgr]# mkdir -pv /var/www mkdir: created directory '/var/www' [root@kvm02 /usr/local/src/webvirtmgr]# cp -rp /usr/local/src/webvirtmgr /var/www/webvirtmgr \#8.设置ssh [root@kvm02 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:CAIi5mok4liJ/kdhHu45iknOPhfla3rG+NLyNVSPwCk root@kvm02 The key's randomart image is: +---[RSA 2048]----+ |+. | |=o . . . | |+o+ .E + . | |O. .+o+.o o | |o+ o+..S. . | |. ..o.o | | . .==.o | |+.o=oBo . | |.*ooXo | +----[SHA256]-----+ [root@kvm02 ~]# ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.162 \#设置加密连接 [root@kvm02 ~]# ssh 10.0.0.182 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60
3. 配置Nginx
\#1.打开/etc/nginx/nginx.conf文件,注释server段 \#2.编辑配置文件 [root@kvm02 ~]# cat /etc/nginx/conf.d/webvirtmgr.conf server { listen 80 default_server; server_name $hostname; \#access_log /var/log/nginx/webvirtmgr_access_log; location /static/ { root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var expires max; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 1024M; # Set higher depending on your needs } } \#3.重新启动nginx服务 [root@kvm02 ~]# systemctl restart nginx \#4.设置权限 [root@kvm02 ~]# chown -R nginx:nginx /var/www/webvirtmgr \#5.创建/etc/supervisord.d/webvirtmgr.ini具有以下内容的文件 [root@kvm02 ~]# cat /etc/supervisord.d/webvirtmgr.ini [program:webvirtmgr] command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py directory=/var/www/webvirtmgr autostart=true autorestart=true stdout_logfile=/var/log/supervisor/webvirtmgr.log redirect_stderr=true user=nginx [program:webvirtmgri-console] command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console directory=/var/www/webvirtmgr autostart=true autorestart=true stdout_logfile=/var/log/supervisor/webvirtmgr-console.log redirect_stderr=true user=nginx \#6.启动守护进程supervisord [root@kvm02 ~]# systemctl start supervisord.service [root@kvm02 ~]# systemctl enable supervisord.service \#7.查看端口 [root@kvm02 ~]# netstat -lntp |grep -E '6080|8000' tcp 0 0 127.0.0.1:6080 0.0.0.0:* LISTEN 14866/ssh tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 14866/ssh tcp6 0 0 ::1:6080 :::* LISTEN 14866/ssh tcp6 0 0 ::1:8000 :::* LISTEN 14866/ssh \#8.浏览器IP地址访问 http://10.0.0.182/login/
只有超级管理员登陆后才能看到"基础构架"窗口
4. 远程连接
\#使用tcp进行对远程libvirtd进行连接访问的配置如下: \#1.修改文件/etc/sysconfig/libvirtd,用来启用tcp的端口 [root@kvm02 ~]# grep -Ev "^$|#" /etc/sysconfig/libvirtd LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf LIBVIRTD_ARGS="--listen" \#2.修改文件/etc/libvirt/libvirtd.conf [root@kvm02 ~]# grep -Ev "^$|#" /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 tcp_port = "16509" listen_addr = "0.0.0.0" auth_tcp = "none" \#3.重启libvirtd [root@kvm02 ~]# systemctl restart libvirtd.service [root@kvm02 conf.d]# cd /var/www/webvirtmgr [root@kvm02 webvirtmgr]# git pull [root@kvm02 webvirtmgr]# ./manage.py collectstatic [root@kvm02 webvirtmgr]# service supervisord restart \#4.查看端口16509是否启动 [root@kvm02 ~]# netstat -lntp|grep 16509 tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 15344/libvirtd \#5.在source host连接dest host远程libvirtd查看信息 [root@kvm02 ~]# virsh -c qemu+tcp://10.0.0.182/system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # #表示成功 virsh # \#6.web端进行tcp连接
十.ESSI简介
VMware商业版 提供虚拟机
#研究EXSI虚拟化和EXSI iso到kvm的 虚拟机迁移 http: L /blog.51cto. com/1 iqingbiao/1742724 virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test -of qcow2 #p2v迁移(物理机到kvm虚拟机的迁移) http; / /blog. csdn. net/tantexian/article/details/ 42869179 老古董:发热量大,配置低2G ddr 400MHZ 750w 关机: U盘启动,工具,把驱动删掉,替换虚拟化的驱 激活Windecs 转到设置”以 老古董:发热量大,配置低2G ddr 400MHZ 750w
#环境准备 另起一台服务器,安装kvm环境。 回到源主机上面,将kvm虚拟主机centos7的镜像和配置文件传输给新的服务器,由于源占用空间太大,将其转换格式之后再进行传输,将其转换成qcow2格式。 #冷迁移 [root@qiudao /opt]# qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2 #将其传输到新的主机上面 [root@qiudao /opt]# scp -rp /opt/centos7.qcow2 10.0.0.13:/opt [root@qiudao /opt]# scp -rp /opt/centos7.xml 10.0.0.13:/opt #回到新的主机上面,进入到/opt目录下查看结果 [root@kvm02 opt]# ll total 1181384 -rw-r--r-- 1 root root 1209729024 2018-08-13 14:11 centos7.qcow2 -rw-r--r-- 1 root root 4951 2018-08-13 10:39 centos7.xml #修改配置文件,将定义的格式raw,改成qcow2格式
\#修改完成,重启服务 [root@qiudao /opt]# systemctl restart libvirtd.service \#进行导入配置文件 [root@qiudao /opt]# virsh define centos7.xml \#启动主机 [root@qiudao /opt]# virsh start centos7 \#进行ssh测试连接
来源:https://www.cnblogs.com/1naonao/p/12013567.html