卡塔尔世界杯冠军_女子乒乓球世界杯 - ecmipu.com

KVM虚拟化

KVM虚拟化

=============================================================

0.环境介绍

宿主机:内存4G+ 纯净的系统CentOS-7

1:什么是虚拟化?

虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

2:为什么要用虚拟化?

2.1:虚拟化的软件

阿里云 kvm开源

azure

vmware ESXI商业软件

2.2:使用虚拟化的原因

没有虚拟化之前:相同的服务不能跑在一台机器上,但,随着 计算机的硬件配置越来越高

512G 内存,4路 8核16线程 ,12* PCI-E 1T的SSD;

ntp服务,安装多个mysql,安装多个tomcat,安装....等不可以有端口冲突, linux开源的,很多软件都有依赖包openssl nginx;

为了充分利用资源,软件运行环境的隔离,只有虚拟化才行实现。

2.3:虚拟化使用场景

场景1:

同一台物理机运行多个php版本 php5.3(openssl,gd) php5.5 php7.2

场景2:

机房的迁移,解决了硬件和系统的依赖

场景3:

openstack环境,软件发布方式,还有比如zabbix的搭建方式

场景4:

开发环境和测试环境,使用虚拟化

只靠一台物理服务器,虚拟30台虚拟机

产品 -- 开发 -- 运维 -- 测试

so结尾,linux 库文件

场景5:

业务的快速部署

从头安装系统,安装服务,配置

克隆虚拟机,改ip,

2.4:虚拟化作用:

提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖

3:kvm虚拟化管理软件的安装

KVM软件全称:

KVM:Kernel-based Virtual Machine #属于内核的命令

下载KVM需要的软件包

yum install libvirt virt-install qemu-kvm -y

软件介绍:

libvirt 作用:虚拟机的管理软件,管理虚拟机的生命周期

libvirt可以管理的虚拟机: kvm,xen,qemu,lxc....

virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具

qemu-kvm :依赖包 qemu-img (qcow2,raw) 作用:管理虚拟机的虚拟磁盘

qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!

xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差! redhat 5.5 xen

KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核

centos6 kvm

性能较好,兼容较好

4:基于KVM安装一台虚拟机

环境准备

分发软件:

TightVNC或者VNC Viewer 4.exe

软件介绍:

vnc软件:远程的桌面管理工具,相当于向日葵,跟微软的远程桌面更相似,输出KVM的图形化界面

将iOS镜像上传到宿主机中

第一步:

在阿里云上下载需要的镜像 centOS7.5

将镜像下载到winds本地,然后进行上传

第二步:

将centOS镜像进行上传到宿主机中,可以使用光盘挂载运用dd命令进行上传,还可以使用XFtp命令进行上传

第一种:使用光盘+dd命令上传ISO镜像

第一步:

现将宿主机进行关机

第二步:

挂载光盘

选择硬件=》处理器=》【勾线】虚拟化 Intel VT -x/EPT 或AMD-V/RVI(V)

选择硬件——>CD/DVD——>[勾选]使用ISO映像文件——>添加ISO镜像存放的路径——>点击确定

开启宿主机,查看光盘是否挂载成功

左下角光盘上带点绿则为挂载成功,

若没有成功则查看上面那操作的步骤是否正确及已生效

刻录ISO镜像

cd /opt/

dd if=/dev/cdrom of=Centos-7.5-x86_64-DVD.iso

将ISO镜像刻录到/opt目录下,刻录的时间必将长,需要耐心等待,不可以将ISO镜像刻录到root目录下

ls -lh 进行查看是否刻录成功,ISO镜像大小为4G左右,如有镜像大小差距较大,则为刻录失败,需要重新进行刻录。

第二种:使用XFtp进行上传镜像

在xshell中点击,进行打开xftp,进行传输

将本地镜像镜像的位置放在搜索框中,在接收的地址进行更改,点击鼠标进行来回拖拽就可以了

4.1 在KVM宿主机中创建虚拟机

1.启动ibvirtd.service

在宿主机上进行执行

systemctl start libvirtd.service

systemctl status libvirtd.service #检查状态

10.0.0.11 宿主机

2.在KVM中创建虚拟机

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

在KVM上创建虚拟机命令

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-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

参数介绍:

--virt-type kvm 虚拟化的类型(qemu)

--os-type=linux 系统类型

--os-variant rhel7 系统版本 Redhat企业版7

--name centos7 虚拟机的名字

--memory 1024 虚拟机的内存

--vcpus 1 虚拟cpu的核数

--disk /opt/centos2.raw,format=raw,size=10 磁盘创建的路径,类型,磁盘大小:默认单位G

--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso iso镜像存放的位置,不可以放在、root目录下

--network network=default 使用默认NAT的网络

--graphics vnc,listen=0.0.0.0

--noautoconsole 不自动连接,在你执行完上面的命令后就会推出,不加此参数,执行完命令后会夯在命令行,只有等你将虚拟机配置完成后才会退出

raw: 此磁盘格式不支持做快照,性能好

qcow2: 此磁盘格式支持快照,但性能没有raw好

此图为创建虚拟机命令成功的样例

检查虚拟主机是否创建成功

[root@oldboy opt]# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 2485/qemu-kvm

有5900端口,表示成功

4.2 使用VNC连接创建好的虚拟机

双击打开VNC进行连接

服务器:宿主机的IP地址,端口为KVM的默认端口5900

加密:选择默认

最后点击确认就可以连接了

示例图:

4.3 初始化虚拟机系统

这是在KVM中查找centOS系统镜像,按ESC键进行退出,不去查找centOS镜像,如果没有这个界面可以直接进行下一步

安装系统的界面即为成功,接下来就是安装系统,选择系统的语言,我选择的是English

更改以下地方

然后点击安装系统,设置root密码即可

4.4 登录创建的虚拟机

安装完系统后,VNC会自动断开,重新连接也将连接不上

原因:安装系统后,虚拟主机会成为关机状态,需要开启,才可以连接

查看KVM中所有的虚拟主机

[root@oldboy opt]# virsh list --all

Id Name State

----------------------------------------------------

- centos2 shut off

开启centos2虚拟机

[root@oldboy opt]# virsh start centos2

Domain centos2 started

查看开启的虚拟主机

[root@oldboy opt]# virsh list

Id Name State

----------------------------------------------------

3 centos2 running

4.5安装centOS系统时出错解决方法

推到重来,重新安装,直接以下命令即可重新安装

virsh list --all

virsh undefine centos7

virsh destroy centos7

rm -fr /opt/centos2.raw

5:kvm虚拟机的virsh日常管理和配置

常用命令:

列表list(--all)

virsh list --all #查看KVM中所有的虚拟主机

virsh list 查看KVM中开启虚拟主机

开机start

virsh start centos2

正常关机shutdown

virsh shutdown centos2

拔电源关机destroy

virsh destroy centos2

导出配置,备份配置文件 dumpxml

virsh dumpxml centos7 #查看配置文件,内存,cup磁盘,镜像等,虚拟主机的配置信息

virsh dumpxml centos7 >centos7-off.xml #导出配置文件

删除虚拟机undefine

virsh undefine web03

导入配置,恢复配置文件define

virsh define web02.xml

修改配置edit(自带语法检查)

virsh edit centos7 #修改位置文件

重命名domrename (低版本不支持)

虚拟主机只有在关机的状态下才可以修改

virsh domrename centos7 centos2 将centos7主机名修改为centos2,和磁盘名称一致

或者就修改配置文件,来修改名称

挂起suspend

virsh suspend centos2

恢复resume

virsh resume centos2

查询vnc端口号vncdisplay,可以使用这个端口进行登录

[root@oldboy opt]# virsh vncdisplay centos2

:0

5.1 虚拟主机目录迁移

第一步:关闭虚拟机

virsh shutdown centos2

第二步:将磁盘迁移目录

mv /opt/centos2.raw /data/

第三步:修改虚拟主机配置文件

virsh edit centos2

配置文件

搜索disk关键字,修改

第四步:启动虚拟主机

virsh start centos2

磁盘目录迁移成功

6:kvm虚拟机开机启动和console 控制台 登录

6.1 设置KVM开机自启

kvm运行业务程序背景

在突然断电后,所有程序就会被关闭,当再次通电之后之后,真实主机可以自己启动,但是KVM中所有的虚拟主机不会启动,假如在半夜突然断电后,再次通电,不仅需要你登录KVM进行开启主机,还会耗费大量时间,特别是在虚拟主机量特别大的情况下,会耽误业务的运行,所以要设置开启自启动

前提:设置libvirtd开机自启

systemctl enable libvirtd

开机启动autostart,

virsh autostart centos2

取消开机启动autostart --disable

virsh autostart --disable centos2

查看是否开机自启,

ll /etc/libvirt/qemu/autostart/ #查看这个目录下的内容,KVM的开启自启,其实就是通过常见软连接实现的,你也可以自己创建链接

total 0

lrwxrwxrwx 1 root root 29 May 20 11:54 centos2.xml -> /etc/libvirt/qemu/centos2.xml

6.2 console控制台登录

配置命令行版虚拟主机

centos7的kvm虚拟机:

要实现console控制台登录,需要修改系统内核参数

在命令行执行:

grubby --update-kernel=ALL --args="console=ttyS0,115200n8"

--update-kernel=ALL 帮助我们修改内核参数

--args="console=ttyS0 修改的内容:通过console可以输出一份

115200n8 比特率,可以加或不加,

你不修改系统内核参数,在执行参数的时候,会进不去,卡在那个页面

内核参数重启生效

重启KVM宿主机

reboot

作业1:实现centos6的kvm虚拟机,console命令行登录?

安装一台centos6的kvm虚拟机

console命令行登录

作业2:centos6实现没有swap分区,启动进系统

7:kvm虚拟机虚拟磁盘格式转换和快照管理

7.1 在KVM中创建虚拟机的两种磁盘格式

第一种raw格式:

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-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

第二种qcow格式:

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

kvm两种格式介绍:

raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 一次新分配所有空间,占用空间大

qcow2:cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 会根据自身的文件的大小去一点点中宿主机拿去

7.2 查看磁盘的格式:

qemu-img info test.qcow2

[root@oldboy ~]# qemu-img info /opt/oldboy.qcow2

image: /opt/oldboy.qcow2 磁盘名称

file format: qcow2 磁盘类型

virtual size: 10G (10737418240 bytes) 磁盘总大小

disk size: 196K 磁盘空间占用大小

cluster_size: 65536 簇大小,就是block大小

Format specific information:

compat: 1.1

lazy refcounts: false

7.3调整磁盘空间容量,扩容

qemu-img resize /opt/oldboy.qcow2 +1G

将oldboy.qcow2磁盘上进行扩容1G :

[root@oldboy opt]# qemu-img resize /opt/oldboy.qcow2 +1G

Image resized.

[root@oldboy opt]#

[root@oldboy opt]# qemu-img info /opt/oldboy.qcow2

image: /opt/oldboy.qcow2

file format: qcow2

virtual size: 11G (11811160064 bytes)

disk size: 260K

cluster_size: 65536

Format specific information:

compat: 1.1

lazy refcounts: false

7.4 创建一块qcow2格式的虚拟硬盘:

qemu-img create -f qcow2 test.qcow2 2G

7.5 两种磁盘格式转换

raw转qcow2

转换的示例:

qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2

转换的格式:

convert [-f fmt] [-O output_fmt] filename output_filename

转换文件格式需要修改配置文件,修配置文件,修改的内容如下

修改配置文件中的磁盘格式:

virsh edit cemtos2

压缩磁盘空间

原因:当你删除空间后,空间不会进行释放,必要的时候可以将它进行压缩

压缩命令:

qemu-img convert -c -f qcow2 -O qcow2 centos2.qcow2 oldboy.qcow2

命令解释:

-c 压缩参数

-f 原磁盘格式

-O

7.6 KVM虚拟机的快照

创建快照virsh snapshot-create centos7

查看快照virsh snapshot-list centos7

还原快照virsh snapshot-revert centos7 --snapshotname 1516574134

删除快照virsh snapshot-delete centos7 --snapshotname 1516636570

注意:

raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

8:kvm虚拟机克隆

8.1 完整克隆虚拟机

第一步:

virt-clone -o centos2 -n web01 --auto-clone

参数介绍:

-o 原虚拟机

-n 新虚拟机

--auto-clone 克隆

注意:一般情况下克隆指定的名称后,磁盘文件名称会按照指定的主机名称创建,但有时例外

第二步:生成虚拟机磁盘文件

qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

第三步:生成虚拟机的配置文件

virsh dumpxml web02 >web03.xml

修改配置文件

修改主机名称

49-web03

删除uuid,因为相同的UUID会出错,删除UUID配置在使用虚拟主机的时候,还是会自动生成的

8e505e25-5175-46ab-a9f6-feaa096daaa4

修改磁盘配置文件路径

删除Mac地址,相同的Mac地址在使用的时候也是会出错的,删除Mac在启动服务的时候,系统是会默认生成的

第四步:导入虚拟机并进行启动测试

virsh define web03.xml

进行测试

virsh start web03

8.2 kvm链接克隆

基于源磁盘文件,创建链接磁盘文件

第一步:创建链接磁盘文件

qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2

-f 磁盘格式

-b 创建链接

将web03.qcow2磁盘链接到web04.qcow2

第二步:生成虚拟机的配置文件并修改配置文件

virsh dumpxml web03 >web04.xml

修改配置文件

修改主机名称

49-web04

删除uuid,因为相同的UUID会出错,删除UUID配置在使用虚拟主机的时候,还是会自动生成的

8e505e25-5175-46ab-a9f6-feaa096daaa4

修改磁盘配置文件路径

删除Mac地址,相同的Mac地址在使用的时候也是会出错的,删除Mac在启动服务的时候,系统是会默认生成的

第三步:导入虚拟机并进行启动测试

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

第四步:进行启动测试

virsh start web04

8.2.1 使用脚本一键化执行KVM连接克隆

第一种方式:

自动kvm链接克隆 模板机(web02) 新虚拟机

virsh dumpxml web02 >$new.xml

old_disk=`virsh dumpxml web02|grep 'qcow2'|grep -oP "(?<=file=')[^']+"`

dir=`dirname $old_disk`

qemu-img create -f qcow2 -b $old_disk ${dir}/$new.qcow2

sed -ri 's#()(.*)()#\1'$new'\3#g' $new.xml

sed -i '//d' $new.xml

sed -ri "s#()#\1${dir}/$new.qcow2\3#g" $new.xml

sed -i '/

virsh define $new.xml

virsh start $new

第二种方式

#!/bin/bash

dir=/data

#第一步:

read -p "请输入老虚拟机名称:" name1

read -p "请输入新虚拟机名称:" name2

qemu-img create -f qcow2 -b $dir/${name1}.qcow2 $dir/${name2}.qcow2

#第二步:基于已有磁盘,启动一台新虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name $name2 --memory 1024 --vcpus 1 --disk ${dir}/${name2}.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

9:kvm虚拟机的桥接网络

9.1 :创建桥接网卡

virsh iface-bridge eth0 br0

会修改我们的网卡配置文件,或者手写配置文件

取消桥接网卡

virsh iface-unbridge br0

虚拟主机网络默认是NAT模式,网段192.168.122.0/24

默认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

桥接模式主机创建

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /data/web02.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

变化得地方:--network

修改已存在主机的网卡模式

virsh edit centos7

修改的内容:

在宿主机上,重启虚拟机生效

3:测试虚拟机网络

10:热添加技术

kvm虚拟机在线热添加硬盘

临时生效

virsh attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2

永久生效

virsh attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 --config

热扩容

创建新硬盘

qemu-img create -f qcow2 /data/web03-add01.qcow2 10G

附加新硬盘

virsh attach-disk web03 --source /data/web03-add01.qcow2 --target vdb --subdriver qcow2

虚拟机中:

fdisk -l

mkfs.xfs /dev/vdb

mount /dev/vdb /mnt

....

扩容:

umount /mnt

剥离硬盘

virsh attach-disk web03 --target vdb

扩容:

qemu-img resize /data/web03-add01.qcow2 +10G

再插上硬盘

virsh attach-disk web03 --source /data/web03-add01.qcow2 --target vdb

虚拟机中:

fdisk -l

mount /dev/vdb /mnt

df -h

xfs_growfs /dev/vdb

df -h

ls /mnt

作业3:扩容kvm虚拟机的根分区

kvm虚拟机在线热添加网卡

kvm虚拟机在线热添加内存

kvm虚拟机在线热添加cpu

qemu-img create -f qcow2 add01.qcow2 5G

virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2

virsh detach-disk centos7 vdb

虚拟机磁盘扩容:

在kvm虚拟机,卸载

virsh detach-disk centos7 vdb

qemu-img resize /data/centos7-add01.qcow2 +5G

virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

在虚拟机中:xfs_growfs /dev/vdb

根分区扩容:

1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小

qemu-img resize oldboy.qcow2 +10G

2)虚拟机中fdisk重新分区

fdisk /dev/vda

3)重启之后,执行xfs_growfs /dev/vda1,

如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1

kvm虚拟机在线热添加网卡

virsh attach-interface web04 --type bridge --source br0 --model virtio

detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

kvm虚拟机在线热添加内存

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

临时热添加内存

setmem web04 1024M --live

永久增大内存

setmem web04 1024M --config

kvm虚拟机在线热添加cpu

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核数

setvcpus web04 4 --live

永久添加cpu核数

setvcpus web04 4 --config

11:virt-manager和kvm虚拟机热迁移(共享的网络文件系统)

冷迁移kvm虚拟机:配置文件,磁盘文件

热迁移kvm虚拟机:配置文件,nfs共享

1):

yum groupinstall "GNOME Desktop" -y

yum install openssh-askpass -y

yum install tigervnc-server -y

vncpasswd

vncserver :1

vncserver -kill :1

2):kvm虚拟机热迁移

1:两边的环境(桥接网卡)

2:实现共享存储(nfs)

3:虚拟机桥接网络

4:在线热迁移

作业3:扩容kvm虚拟机的根分区

作业4:扩展研究EXSI虚拟化和EXSI iso到kvm的虚拟机迁移

http://blog.51cto.com/liqingbiao/1742724

virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test -of qcow2

作业5:p2v迁移(物理机到kvm虚拟机的迁移)

http://blog.csdn.net/tantexian/article/details/42869179

老古董:发热量大,配置低 2G ddr 400MHZ 750w

老古董:发热量大,配置低 2G ddr 400MHZ 750w

。。。。

一台新集群 64G ddr4 2400MHZ 550w

iso镜像,U盘 启动盘 win PE

打包所有根目录的文件,上传到kvm服务器,输出一个qcow2格式,替换驱动,

kvm宿主机 2000台

查看每一个宿主机有多少台虚拟机?

查看每一个宿主机还剩多少资源?

查看每一台宿主机,每一个虚拟机的ip地址?

kvm管理平台,数据库工具

信息:宿主机,总配置,剩余的总配置

虚拟机的信息,配置信息,ip地址,操作系统

带计费功能的kvm管理平台,openstack ceilometer计费

自动化管理kvm宿主机,云主机定制化操作

部署openstack

克隆一台openstack模板机:4G内存,开启虚拟化,挂载centos7.4的光盘

上传脚本openstack-mitaka-autoinstall.sh到/root目录

上传镜像:cirros-0.3.4-x86_64-disk.img到/root目录

上传配置文件:local_settings到/root目录

上传openstack_rpm.tar.gz到/opt下,并解压

sh /root/openstack-mitaka-autoinstall.sh

大概10-30分钟左右

访问http://10.0.0.11/dashboard

域:default

用户名:admin

密码:ADMIN_PASS

注意: 在windows系统上修改host解析(10.0.0.11 controller)

添加node节点:

修改ip地址

hostnamectl set-hostname compute1

重新登录让新主机名生效

cd /opt/

rsync -avz 10.0.0.11:/opt/repo .

上传脚本 openstack_node_autoinstall.sh

sh openstack_node_autoinstall.sh

openstack controller主控制节点,node节点, kvm宿主机

node节点, kvm宿主机

node节点, kvm宿主机

node节点, kvm宿主机

node节点, kvm宿主机

Copyright © 2022 卡塔尔世界杯冠军_女子乒乓球世界杯 - ecmipu.com All Rights Reserved.