kvm–基础

1:什么是虚拟化?

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

2:为什么要用虚拟化?

512G 内存,4路 8核16线程  64核 cpu,12* PCI-E 1T的SSD;ntp服务,资源浪费,10 tomcat多实例,6个数据库,2个Hadoop,
既不想资源浪费,服务的安全隔离性,虚拟化

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

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

场景3:openstack环境,软件发布体检

场景4:开发环境和测试环境,使用虚拟化

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

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

一:kvm虚拟化软件的安装

yum install libvirt* virt-* qemu-kvm* -y


KVM:Kernel-based Virtual Machine  
libvirt  作用:虚拟机的管理软件
libvirt:kvm,xen,qemu,lxc....
virt   virt-install virt-clone   作用:虚拟机的安装和克隆
qemu-kvm  qemu-img 作用:复制管理虚拟机的磁盘
虚拟化软件:
qemu      软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
xen(半)   性能特别好,需要使用专门修改之后的内核,兼容性差!
KVM(linux)    全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核
性能较好,兼容较好

二:安装一台kvm虚拟机

分发软件TightVNC或者VNC Viewer 4.exe

vnc:远程的桌面管理工具
systemctl start libvirtd.service
systemctl status libvirtd.service

建议虚拟机内存不要低于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-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

--virt-type kvm    虚拟化的类型
--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 
--noautoconsole

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

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

virsh
列表list(--all)
开机start
关机shutdown
拔电源关机destroy

导出配置dumpxml  例子:virsh dumpxml centos7 >centos7-off.xml
删除undefine  推荐:先destroy,在undefine
导入配置define   
修改配置edit(自带语法检查)
重命名domrename (低版本不支持)
挂起suspend
恢复resume
查询vnc端口号vncdisplay

reboot     (低版本不支持)

四:kvm虚拟机开机启动和console登录

开机启动autostart,前提:systemctl enable libvirtd;
取消开机启动autostart --disable

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

reboot

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

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

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

raw:  裸格式,占用空间比较大,不支持快照功能,性能较好,
qcow2:cow  (copy on write)占用空间小,支持快照,性能比raw差一点


qemu-img info  test.qcow2
创建一块qcow2格式的虚拟硬盘:qemu-img create -f qcow2 test.qcow2 2G

raw转qcow2:qemu-img convert -f raw     -O qcow2           oldboy.raw   oldboy.qcow2
                     convert [-f fmt]   [-O output_fmt]    filename     output_filename

virsh edit web01:					 
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/opt/centos.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='
0x0'/>
</disk>

virsh destroy web01
virsh start web01					 

					 
创建快照virsh snapshot-create centos7
查看快照virsh snapshot-list centos7

还原快照virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照virsh snapshot-delete centos7 --snapshotname 1516636570

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

六:kvm虚拟机克隆

virt-clone --auto-clone -o centos7 -n guoyouxiu (完整克隆)

a:拷贝虚拟机磁盘文件
b:生成虚拟机的配置文件
  <name>49-web03</name>
  <uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
  <source file='/opt/49-web03.qcow2'/>
  <mac address='52:54:00:4e:5b:89'/>
c:导入虚拟机并进行启动测试

kvm链接克隆
a.基于源磁盘文件,创建链接磁盘文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

后置备

b:生成虚拟机的配置文件
c:导入虚拟机并进行启动测试
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

七:kvm虚拟机的桥接网络

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

1:创建桥接网卡
virsh iface-bridge eth0 br0

取消桥接网卡
iface-unbridge br0

2:virsh edit centos7

    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0'/>
在宿主机上,重启虚拟机生效

3:测试虚拟机网络

八:热添加技术

kvm虚拟机在线热添加硬盘
临时生效
virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 
永久生效
virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 --config
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

kvm虚拟机在线热添加内存
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04   --memory 512,maxmemory=2048 --vcpus 1 --disk /opt/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=8 --disk /opt/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虚拟机热迁移(共享的网络文件系统)

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:在线热迁移

扩展研究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

p2v迁移(物理机到kvm虚拟机的迁移)
http://blog.csdn.net/tantexian/article/details/42869179

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


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

iso镜像,U盘 启动盘    PE
打包所有根目录的文件,上传到kvm服务器,输出一个qcow2格式,替换驱动,
打赏

One Comment

  • Hello.

    My name is Natalia. I am an expert in posting articles and texts on various websites.

    Would you be interested in a mutual cooperation? In fact, I have to propose you something but before starting working answer please this questionnaire in the link below: https://forms.gle/58NDRfrHg3RMdRcW7

    It takes no more than 3 minutes but will clarify all the details of the project and accelerate each stage of your future partnership.

    Thank you in advance for your time and I’m looking forward to a fruitful collaboration.

    If you require any further information about the questionnaire or anything else, feel free to contact me letpartner@hellopartners.ru .

    Best regards!

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注