KVM虚拟化

1:什么是虚拟化?

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

什么是云计算?
云计算是一种按量付费的模式,它的底层主要通过虚拟化技术来实现的!

云计算的服务类型:
a:IAAS  基础设施即服务
b:PAAS 平台即服务   
c:SAAS  软件即服务

2:为什么要用虚拟化?

kvm: 兼容较好,性能较好!  支持内存压缩技术

qemu:最早,最慢,兼容性最强,模拟所有硬件,   x86,arm,power AIX

xen:  性能最好,兼容性最查,使用专门定制的内核,

vmware ESXI商业软件: 最贵,好用

virtual box: 开源

没有虚拟化之前:
计算机的硬件配置越来越高

512G 内存,4路 8核16线程 ,12* PCI-E 1T的SSD;
ntp服务,安装多个mysql,安装多个tomcat,安装.... 

linux开源的,很多软件都有依赖包openssl  nginx

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


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

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

场景3:openstack环境,软件发布方式

场景4:开发环境和测试环境,使用虚拟化
只靠一台物理服务器,30台虚拟机

场景5:业务的快速部署  
从头安装系统,安装服务,配置
克隆虚拟机,改ip,

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

KVM安装

1.内存不能小于4G
处理器选择虚拟化Intel VT-x/EPT 或者AMD-V/RVI(V)

2.kvm虚拟化管理软件的安装
yum install libvirt virt-install qemu-kvm -y

3.在windows上安装VNC 安装操作用的
    VNC Viewer 4.exe或者TightVNC

4.启动服务并加入开机自启
systemctl start libvirtd.service
systemctl enable libvirtd.service


5.安装虚拟机,需要一个ISO镜像(如果重新安装虚拟机,需要把修改磁盘分区的名字和主机名)
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos1.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

检查端口
netstat -lntup|grep 5900
使用VNC进行连接

--virt-type kvm    虚拟化的类型(qemu)
--os-type=linux    系统类型
--os-variant rhel7 系统版本
--name centos7     虚拟机的名字 
--memory 1024      虚拟机的内存
--vcpus 1          虚拟cpu的核数
--disk /opt/centos2.raw,format=raw,size=10  磁盘的格式
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso   使用的镜像
--network network=default   使用默认NAT的网络
--graphics vnc,listen=0.0.0.0   图形图像使用VNC客户端进行安装
--noautoconsole

raw:10G  不支持做快照,性能好
qcow2:   支持快照

6.进行安装KVM

①磁盘分区只用分一个根分区
②KDUMP关闭 Enable kdump
③开启网卡自启动
④调整时区

7.KVM的管理命令(主配置文件在 /etc/libvirt/qemu/)

virsh list              查看运行状态的虚拟机
virsh list --all        查看所有虚拟机
virsh shutdown 主机名  关机虚拟机
virsh destroy  主机名  拔电源关机
virsh reboot 主机名        重启
virsh dumpxml web > web.xml   备份    
virsh undefine 主机名   删除虚拟机
virsh define  web.xml   恢复虚拟机

做迁移
mv /opt/web.qcow2 /data/web.qcow2 
virsh edit web  然后修改配置文件(找到磁盘分区disk 修改磁盘分区的新位置,启动测试)

virsh domrename web web01    修改主机名(需要先关机)
virsh suspend   web01       挂起虚拟机
virsh resume  web01     恢复挂起(需要注意一下时间)
virsh vncdisplay  web01  查看主机的端口号

virsh autostart web01   开机自启 前提systemctl enable libvirtd.service  (在/etc/libvirt/qemu/autostart/ 查看有哪些主机是开机自启)
virsh autostart --disable web01   关闭开机自启

console登录

需要配置KVM虚拟主机的内核(修改完重启reboot) 先把原先的配置文件进行备份
在虚拟主机上用ip addr  查看IP  在shell上连接
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"  网卡为eth的
grubby --update-kernel=ALL --args="net.ifnames=0  biosdevname=0"    网卡为ens的

virsh console web01 按两下回车登录
退出Ctrl +]

磁盘管理:

raw:  裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输           总50G 占用2G
qcow2:cow  (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输  总50G 占用2G
qcow2支持扩容,不支持缩容,raw支持扩容也支持缩容 (不要缩容,容易丢失数据)


qemu-img create -f qcow2 /data/centos.qcow2 10G     创建qcow2的磁盘 不加-f 默认为raw
qemu-img info /data/web.qcow2 (加磁盘的路径)  查看磁盘的信息
qemu-img resize /data/web.qcow2 20G(原来10G先在扩成20G 或者写+10G)   扩展磁盘大小

磁盘转换:raw转换为qcow2(虚拟机要关闭)
qemu-img convert -f raw -O qcow2    /data/web.raw /data/web.qcow2
                  原格式  目标格式   源文件       目标文件
改完之后需要修给配置文件
virsh edit web
修改前
 <driver name='qemu' type='raw'/>
 <source file='/data/web.raw'/>
修改后
 <driver name='qemu' type='qcow2'/>
 <source file='/data/web.qcow2'/>

快照管理

virsh snapshot-create-as web01(主机名) --name int_OK(快照名)  创建快照
virsh snapshot-list web01           查看快照 
virsh snapshot-revert web01 --snapshotname(指定恢复快照的名称) int_OK        还原快照(注意时间)
virsh snapshot-delete web01 --snapshotname int_OK       删除快照
raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

克隆管理(尽量克隆不带快照的模板机)

1.完整克隆(必须关机或者挂起)
   自动克隆
   virt-clone --auto-clone -o web01 -n web02
   手动
   cp web01.qcow2 web02.qcow2   拷贝1的磁盘
   virsh dumpxml web01 > web02.xml  拷贝web01的配置文件
   修改vim web02.xml
   <name>web02</name>   修给web01名字为web02
   <uuid>d2b27539-ca27-4978-a1d0-264e04cd42f8</uuid>   删除uuid这行(开机自动生成)
   <source file='/data/web02.qcow2'/>     修改web01磁盘目录为web02的磁盘目录
   <mac address='52:54:00:70:4e:58'/>     删除mac addr的mac的地址(开机自动生成)

   导入web02的配置文件(然后开机)
   virsh define web02.xml  

2.链接克隆
qemu-img create -f qcow2 -b web01.qcow2 web03.qcow2    拷贝1的磁盘 类型为 qcow2 以web01为引用盘 
virsh dumpxml web01 > web03.xml  拷贝web01的配置文件
   修改vim web02.xml
   <name>web03</name>   修给web01名字为web03
   <uuid>d2b27539-ca27-4978-a1d0-264e04cd42f8</uuid>   删除uuid这行(开机自动生成)
   <source file='/data/web02.qcow2'/>     修改web01磁盘目录为web03的磁盘目录
   <mac address='52:54:00:70:4e:58'/>     删除mac addr的mac的地址(开机自动生成)

   导入web03的配置文件(然后开机)
   virsh define web03.xml  
   
   
   最简单的链接克隆
   qemu-img create -f qcow2 -b web01.qcow2 web04.qcow2    拷贝1的磁盘 类型为 qcow2
   
   virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd  --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

KVM的桥接网络

1.创建桥接网卡(只能零时添加,开机就没)
virsh iface-bridge eth0(绑定的网卡) br0(桥接网卡的名称)
取消桥接网卡
virsh iface-unbridge br0
如果命令行执行不成功可以
vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"

vim /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.11"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
STP="on"
DELAY="0"

重新创建一个虚拟主机(前提有磁盘)
 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd(必须先有磁盘,直接读取磁盘)  --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

登录虚拟主机
virsh console web04
dhclient 获取ip地址(服务器必须是开启DHCP模式)
查看IP地址 用ssh连接

修改旧的的虚拟主机网络(先关机,修改完配置重启||开机修改 需要先关机,在开机,不能reboot)
修改前
    <interface type='network'>
      <mac address='52:54:00:70:4e:58'/>
      <source network='default'/>
修改后
    <interface type='bridge'>
      <mac address='52:54:00:70:4e:58'/>
      <source bridge='br0'/>

启动 virsh start web04

KVM虚拟主机在线热添加磁盘

先添加一块盘
qemu-img create -f qcow2 /data/web04_add.qcow2 10G   
添加到虚拟主机上
virsh attach-disk web04(主机名) /data/web04_add.qcow2(新盘位置,必须是绝对路径) vdb(在虚拟主机上叫什么名字) (默认添加raw盘)
virsh detach-disk web04 vdb  取消挂载的盘
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2  正确的添加盘的格式
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2 --config  写到配置文件中,永久挂载(不加 --config 都是临时添加)
登录到虚拟主机
virsh console web04  
fdisk -l  查看磁盘情况
mkfs.xfs /dev/vdb   格式化盘
mount /dev/vdb /mnt   挂载磁盘
如果vdb盘不够用 ,需要先扩容
umount /mnt

在服务器上再把vdb给取消挂载
virsh detach-disk web04 vdb  取消挂载的盘
qemu-img resize /data/web04_add.qcow2 10G   给磁盘添加内存
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2  再把vdb添加到虚拟主机上

在虚拟主机上先挂(不能直接格式化,不然数据会丢)
fdisk -l 看磁盘容量添加了没有
mount /dev/vdb /mnt  挂载
xfs_growfs /dev/vdb   更新分区表
查看数据是否丢失


根分区扩容:
1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
qemu-img resize web02.qcow2 +10G

2)虚拟机中fdisk重新分区
fdisk /dev/vda

3)重启之后,执行xfs_growfs /dev/vda1,
如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1

KVM虚拟主机在线热添加网卡

先查看在存在的网卡类型
 virsh edit web04
    <model type='virtio'/>
virsh attach-interface web04 bridge br0 --model virtio --config  添加桥接网卡 添加网卡model 指定网卡类型 不加config就是临时添加
virsh attach-interface web04 network default --model virtio --config  添加net网卡
virsh detach-interface web04 bridge|network取消网卡类型 --mac 跟上mac地址  拆除网卡

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(内存只能添加到2048)

在虚拟主机上
free -m   查看内存

virsh setmem web04 1024M 添加内存(根据创建虚拟主机的时候设置最大添加到多少 ,不能超过最大限制)
virsh setmem web04 1024M --config 永久生效
virsh setmem web04 512M   减内存(不建议使用)

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的核数最大添加到10个)

lscpu 查看CPU的核数(CPU(s))

virsh setvcpus web04 2  添加cpu的核数
virsh setvcpus web04 2 --config 添加到配置文件

如果想在原有的KVM虚拟主机上添加内存和CPU
virsh edit web04
 修改前
 <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>
修改后
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static' current='4'>10</vcpu>

KVM虚拟主机的迁移

冷迁移
把配置文件和磁盘发送到另一台服务器上,另一台服务器需要有KVM的管理环境

热迁移 
主机  ip地址        软件                  配置要求
kvm01 10.0.0.11     kvm管理软件+nfs客户端  2G,开启虚拟化
kvm02 10.0.0.12     kvm管理软件+nfs客户端  2G,开启虚拟化
nfs01 10.0.0.31     nfs服务端              1G
    
1)准备两台kvm宿主机,配置桥接网络,nfs客户端
2)安装nfs服务端
3)kvm宿主机挂载nfs服务端,挂载点一定要是同一个目录
4)启动一台新虚拟机,该虚拟机磁盘文件存储在共享存储上

NFS主机上
yum install nfs-utils -y  下载nfs
vim /etc/exports 配置nfs
/data 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)

mkdir /data  创建共享目录
systemctl restart nfs  启动 
cat /var/lib/nfs/etab  查看是否启动成功

KVM01和KVM02上配置(两台主机名不能一样,需要做hosts解析)

vim /etc/hosts    做hosts解析
10.0.0.11  kvm01
10.0.0.12  kvm02

mount 10.0.0.31:/data /opt  挂载


在KVM01上创建虚拟主机并实现热迁移
cp /data/web04_add.qcow2 /opt/  拷贝web04的磁盘文件

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web05(不能和现有的虚拟主机主机名一样) --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/web04.qcow2(指定读取的磁盘) --boot hd  --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

virsh migrate --live --verbose web05(虚拟主机名) qemu+ssh://10.0.0.12/system --unsafe   热迁移的命令

在KVM02上查看
virsh list 查看迁移的主机有没有迁移过来


图形化热迁移(需要安装VNC客服端)
在kvm01上安装图形界面、vnc服务端和virt-manager
yum groups install "GNOME Desktop" -y
yum install tigervnc-server.x86_64 -y
yum install virt-manager -y

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

netstat -lntup 找到Xvnc(590X)的端口
window进行连接即可
https://www.qstack.com.cn/archives/368.html 详细请查看
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容