kvm虚拟化

3 篇文章 0 订阅

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index

https://docs.openstack.org/image-guide/obtain-images.html

http://cloud.centos.org/

http://cloud-images.ubuntu.com/

什么是虚拟化?

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

为什么要用虚拟化?

512G 内存,4路 8核16线程 cpu,12* PCI-E 1T的SSD;ntp服务,资源浪费,10 tomcat多实例,6个数据库,2个Hadoop

既不想资源浪费,服务的安全隔离性,虚拟化

场景1:同一台物理机运行多个php版本
场景2:机房的迁移,解决了硬件和系统的依赖
场景3:openstack环境,软件发布体检
场景4:开发环境和测试环境,使用虚拟化
场景5:业务的快速部署

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

在这里插入图片描述

虚拟化引擎

1、vmware esxi : x86

2、Hyper-v

3、xen

4、kvm

QEMU与KVM

QEMU是一个开源项目,实际就是一台硬件模拟器,可以模拟许多硬件,包括x86架构处理器、AMD64架构处理器等

QEMU的好处是因为是纯软件模拟,所以可以在支持的平台模拟支持的设备

QEMU的缺点是因为是纯软件模拟,所以非常慢

kvm只是一个内核模块,只提供CPU和内存,使用qemu模拟器模拟IO设备(磁盘、网卡)

KVM虚拟机=KVM内核模块+QEMU模拟器

在这里插入图片描述

Libvirt 与KVM

Libvirt是一套开源的虚拟化管理工具,主要由3部分组成

一套API的lib库,支持主流的编程语言,包括C、python、Ruby等

libvirtd服务

命令行工具virsh

libvirt可以实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加

kvm虚拟化软件的安装

Kernel-based Virtual Machine

查看硬件是否支持虚拟化

egrep 'vmx|svm' /proc/cpuinfo

yum install libvirt* virt-* qemu-kvm* -y
yum install qemu-kvm libvirt virt-install virt-manager bridge-utils

KVM:Kernel-based Virtual Machine

libvirt 作用:虚拟机的管理软件
virt virt-install virt-clone 作用:虚拟机的安装和克隆
qemu-kvm qemu-img 作用:复制管理虚拟机的磁盘

虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!
xen(半) 性能特别好,需要使用专门修改之后的内核
KVM 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核

安装一台kvm虚拟机

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


systemctl start libvirtd.service
systemctl status libvirtd.service

建议虚拟机内存不要低于1024M

nat模式(default)

virt-install --os-type=linux --os-variant rhel7 --name centos7 --memory 1024,maxmemory=2048 --vcpus 1,maxvcpus=8 --disk /opt/centos2.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-Minimal-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type qemu

桥接

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024,maxmemory=2048 --vcpus 1,maxvcpus=8 --disk /opt/centos2.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

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

qcow2: 支持快照

添加多块网卡

–network bridge=br0 --network bridge=br1

退出vnc全屏

ctrl + alt +shift +f

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

列表list

virsh list --all

开机start

virsh start centos7

关机shutdown

virsh shutdown centos7

拔电源关机destroy

virshdestroy centos7

导出配置dumpxml

/etc/libvirt/qemu/centos7.xml

virsh dumpxml centos7 >centos7-off.xml

删除虚拟机undefine

推荐:先destroy,在undefine

virsh undefine centos7

导入虚拟机define

virsh define centos7.xml

修改配置edit

virsh edit centos7

重命名domrename

**关机执行**virsh domrename centos7 web01

挂起suspend

suspend web01

恢复resume

resume web01

查询vnc端口号vncdisplay

virsh vncdisplay web01

kvm虚拟机随虚拟化软件自启动

virsh autostart web01

kvm虚拟机关闭自启动

virsh autostart --disable web01

console登录

**kvm虚拟机****中执行**
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot

宿主机连接kvm虚拟机

virsh console web01

退出kvm虚拟机

ctrl+]

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

磁盘扩容

qemu-img resize test.qcow2 8G
qemu-img resize test.qcow2 +1G

raw转qcow2

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

qemu-img convert -f raw -O qcow2  oldboy.raw   oldboy.qcow2
virsh edit centos7                                       
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/oldboy.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='
0x0'/>
</disk>

创建快照

virsh snapshot-create centos7

查看快照

virsh snapshot-list centos7

还原快照

virsh snapshot-revert centos7 --snapshotname 1516574134

删除快照

virsh snapshot-delete centos7 --snapshotname 1516636570

kvm虚拟机克隆

kvm虚拟机完整克隆

virt-clone --auto-clone -o centos7 -n web

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链接克隆

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

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

2.导入虚拟机并进行启动测试

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

https://docs.openstack.org/image-guide/obtain-images.html

http://cloud.centos.org/

http://cloud-images.ubuntu.com/

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/CentOS-7-x86_64-GenericCloud-1811.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

kvm虚拟机的桥接网络

1、virsh iface-bridge eth0 br0

2、

virsh edit centos7
    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0'/>

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

3、修改kvm虚拟机的ip
/etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.111
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5

修改默认(default)网络

查看

virsh # net-list
Name                 State      Autostart     Persistent
----------------------------------------------------------
default              active     yes           yes

编辑

net-edit default

停止

net-destroy default

启动

net-start  default

kvm虚拟机在线热添加硬盘

创建磁盘

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

添加磁盘

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

摘除磁盘

virsh detach-disk centos7 vdb

虚拟机磁盘扩容

1、在kvm虚拟机,umount

2、摘除磁盘

virsh detach-disk centos7 vdb

3、扩容

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

4、添加磁盘

virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
5、在虚拟机中
xfs_growfs /dev/vdb

根分区扩容

1、**在宿主机上关闭虚拟机并调整虚拟机磁盘大小**
qemu-img resize oldboy.qcow2 +10G
2、虚拟机中fdisk重新分区(删除旧分区,新建分区)
fdisk /dev/vda
3、**重启之后,执行**
xfs_growfs /dev/vda1#自动扩展XFS文件系统到最大的可用大小

如果虚拟机磁盘文件系统是ext4

resize2fs /dev/vda1

热操作网卡

永久添加

virsh attach-interface web01 --type bridge --source br0 --model virtio --config

临时添加

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

删除网卡

detach-interface web01 --type bridge --mac 52:54:00:1e:79:47

热操作内存、CPU

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/centos2.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/centos2.qcow2 --boot hd --network bridge=br0 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

热调整内存

virsh setmem web02 1024M --live --config

热操作cpu(只能增加

virsh setvcpus web02 6 --live --config

kvm虚拟机热迁移

1:两边的环境(桥接网卡)
2:实现共享存储(nfs)
3:虚拟机桥接网络

4:在线热迁移
本机 虚拟机 web03 迁移到 10.0.0.12

virsh migrate web03 qemu+ssh://10.0.0.12/system --live --unsafe

5:图形界面、vnc服务端、virt-manager

yum groups install "GNOME Desktop"
yum install tigervnc-server.x86_64 virt-manager
yum install openssh-askpass.x86_64

6:启动vnc和停止vnc

vncserver  :0
vncserver  -kill  :0

exsi虚拟机迁移

ova文件转换为qcow2文件

yum install virt-v2v
virt-v2v -i ova centos.ova -o local -os /data/test1 -of qcow2

p2v迁移(物理机到kvm虚拟机的迁移)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxingge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值