1. 什么是虚拟化
虚拟化,通过模拟计算机的硬件,来实现同一台计算机上运行多个不同的操作系统的既技术
2. 为什么要使用虚拟化
为了充分利于资源,软件运行环境的隔离,只要有虚拟化才能实现。
虚拟化提高了资源的利用率,服务的安全性隔离,解决了系统和硬件之间的依赖。
3. kvm虚拟化软件的安装
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install libvirt virt-install qemu-kvm virt-manager
virt-install 命令行安装工具
virt-manager 图形界面安装工具
qemu-kvm 磁盘管理
systemctl start libvirtd
systemctl enable libvirtd
相关工具
-
VNC:远程的桌面管理工具
-
libvirt 作用:虚拟机管理软件
-
libvirt:kvm,xen,qemu,lxc…
-
virt virt-install virt-clon 作用:虚拟机的安装工具和克隆工具
-
qemu-kvm qemu-img 作用:管理虚拟机的虚拟磁盘
虚拟机软件
-
qemu 软件纯模拟全虚拟机软件,特别慢!AIX,兼容性好
-
xen(半)性能特别好,需要使用专门修改后的内核,兼容性差!
-
KVM(linux)全虚拟机,他有硬件支持CPU、基于内核,而且不需要使用专门的内核,性能较好、兼容性好。
4.安装一台kvm虚拟机
下载软件TghVNC或者VNC viewer 4.exe 用于远程连接虚拟机
#创建虚拟机磁盘镜像格式
[root@localhost opt]# qemu-img create -f raw /opt/CentOS-7.4-x86_64.img 10G
#创建虚拟机磁盘镜像 qcow2 格式
[root@localhost opt]# qemu-img reate -f qcow2 /opt/test01.qcow2 10G
[root@localhost opt]# virt-install --os-type=linux --os-variant rhel7 --name test01 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=10 --cdrom=/kvm/disk/CentOS-7-x86_64-DVD-1810.iso --disk path=/kvm/disk/test.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
开始安装......
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
virt-instal #命令安装工具
--virt-type kvm #指定创建类型
--os-type=linux #操作系统类型
--os-variant rhel7 #操作系统具体类型
--name test01 #虚拟机名称
--memory 512,maxmemory=1024 #内存大小
--vcpus 1,maxvcpus=10 #cpu内核数量
--cdrom=/kvm/disk/CentOS-7-x86_64-DVD-1810.iso #指定镜像源
--disk path=/kvm/disk/test.qcow2 #磁盘路径
--network bridge=br0 --network network=default #指定网卡类型 桥接模式 默认网卡类型
--graphics vnc,listen=0.0.0.0 #启用图像化加载,vnc监听地址。 默认端口号5900 会一次累加
--noautocnsole #支持console连接
- –virt-type kvm 虚拟化的类型(qemu)
- –so-type=linux 系统类型
- –os-variat rhel7 系统版本
- –name centos 虚拟机的名字
- –memory 1024 虚拟机的内存
- –vcpu 1 虚拟机的核数
- –disk /opt/centos2.raw,format=raw,size=10
- –cdrom
磁盘类型
raw: 10G 不支持做快照,性能好
qcow2:支持快照
5. kvm虚拟机的virsh日常管理和配置
说明 | 命令 |
---|
查看当前运行的虚拟机 | virsh list (-all 查看所有主机) |
开机 | virsh start 【虚拟机名称】 |
关机 | virsh shutdown 【虚拟机名称】 |
重启虚拟机 | virsh reboot 【虚拟机名】 |
强制关机 | virsh destroy 【虚拟机名称】 |
挂起虚拟机 | virsh suspend 【虚拟机名称】 |
恢复挂起的虚拟机 | virsh resume 【虚拟机名称】 |
虚拟机重名命 | virsh domrename 【old虚拟机名称】【new虚拟机名称】 |
导出虚拟机xml文件 | virsh dumpxml 【虚拟机名】> 【xml文件名】 |
删除虚拟机 | virsh undefine 【虚拟机名】 |
导入虚拟机 | virsh define 【xml文件名】 |
修复虚拟配置xml | virsh edi 【虚拟机名】 |
创建快照 | virsh snapshot-create 【虚拟机名称】 |
创建快照并命名 | virh snapshot-create-as 【虚拟机名称】 【快照名称】 |
查看快照 | virsh snapshot-list 【快照名称】 |
还原快照 | virsh snapshot-revert 【虚拟机名称】 【快照名称】 |
删除快照 | virsh snapshot-delete 【虚拟机名称】【快照名称】 |
虚拟机克隆 | virt-clone --auto-clone -o 【虚拟机名】】 -n 【新虚拟机名】 |
自动加载虚拟机 | virsh autostart【虚拟机名称】 |
查询虚拟机vnc端口号 | virsh vncdisplay 【虚拟机名】 |
使用console方式连接 | virsh console 【虚拟机名】 |
qemu-img命令
说明 | 命令 |
---|
创建虚拟机磁盘文件 | qemu-img create 【磁盘名】 |
调整虚拟机磁盘容量大小 | qemu-img -d 【磁盘名】+5G 或者修改为指定大小 10G |
查看磁盘信息 | qemu-img info 【磁盘名】 |
6.kvm虚拟机开机启动和console登录
6.1 kvm虚拟机开机自启动 前提systemctl enable libvirtd
virsh autostart 【虚拟机名】
virsh autostart --disable 【虚拟机名】
6.2 centos7的kvm虚拟机console口
#在虚拟机执行
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot 重启虚拟机
宿主机连接kvm虚拟机
[root@kvm opt]
连接到域 centos7
换码符为 ^] //按住ctrl+] 退出
[root@localhost ~]
7.kvm虚拟机磁盘格式转换和快照管理
7.1虚拟磁盘格式转换
raw:裸格式,占用空间较大,不支持快照功能,性能较好
qcow2:cow (copy on write) 占用空间小,支持快照,性能比raw差一点
qcow2安装模式
virt-install --virt-type- kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpu 1 disk /data/web02.qcow2 --cdrom=/opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
raw安装模式
virt-install --virt-type- kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpu 1 disk /data/web02.raw --cdrom=/opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
7.2qemu-img常用命令
说明 | 命令 |
---|
创建qcow2磁盘文件 | qemu-img create -f qcow2 【磁盘名】 5G |
创建raw格式磁盘文件 | qemu-img create -f raw 【磁盘名】 5G |
调整虚拟机磁盘容量大小 | qemu-img resize 【磁盘名】+5G 或者修改为指定大小 10G |
查看磁盘信息 | qemu-img info 【磁盘名】 |
不管是什么格式的虚拟磁盘,都不要缩容!
convert 磁盘转换格式
#qemu-img convert -f raw -O qcow2 test.raw test.raw.pcow2
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/centos7.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
7.2 快照管理
说明 | 命令 |
---|
创建快照 | virsh snapshot-create 【虚拟机名称】 |
创建快照并命名 | virh snapshot-create-as 【虚拟机名称】 【快照名称】 |
查看快照 | virsh snapshot-list 【快照名称】 |
还原快照 | virsh snapshot-revert 【虚拟机名称】 【快照名称】 |
删除快照 | virsh snapshot-delete 【虚拟机名称】【快照名称】 |
8.虚拟机的克隆
8.1 完整克隆
virt-clone --auto-clone -o 虚拟机名 -n 新虚拟机名
8.2 手动克隆:
复制磁盘文件
cp web00.qcow2 web01.qcow2
virsh dumpxml centos7 > web01.xml
vim web01.xml
<name>web01</name> //修改
<uuid>f859d86f-351b-4291-9cc0-469 e853c0006</uuid> //删除
<source file='/data/web01.qcow2'/> //修改
<mac address='52:54:00:bc:dd:5b'/> //删除
导入到虚拟机并进行启动测试
virsh define web01
virsh start web01
8.3 链接克隆
#1.基于原磁盘文件,创建连接磁盘文件
qemu-img create -f qcow2 -b 原磁盘文件 创建磁盘文件
#2.导入虚拟机并进行启动测试
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=3000 --vcpus 1,maxvcpus=10 --disk 磁盘名称 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
9.kvm虚拟机网络
默认的虚拟机网络是NAT模式网段是192.168.122.0/24
(1)用户模式(NAT):这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外网访问虚拟机网络
(2)桥接模式(Bridge):这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的主机可以直接访问到虚拟机内部
9.1 第一次安装选择的网卡模式
默认NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512 --vcpus 1 disk /data/web02.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
桥接模式
[root@kvm ~]# virsh iface-bridge ens33 br0 #创建桥接
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512 --vcpus 1 disk /data/web02.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
9.2 修改网卡桥接模式
#创建桥接网卡 ens33为真实网卡
[root@kvm ~]# virsh iface-bridge ens33 br0 #创建桥接
#此时br0就会占用ens33网络的ip地址
[root@kvm ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.154.131 netmask 255.255.255.0 broadcast 192.168.154.255
inet6 fe80::20c:29ff:fee5:a571 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e5:a5:71 txqueuelen 1000 (Ethernet)
RX packets 20464 bytes 1603615 (1.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15324 bytes 2169921 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@kvm ~]# virsh iface-unbridge ens33 br0 //删除命令
#查看虚拟交换绑定情况
[root@kvm ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29e5a571 yes ens33
virbr0 8000.52540000e202 yes virbr0-nic
vnet1
vnet2
vnet3
#取消桥接网卡
iface-unbridge br0
#更改虚拟机配置文件为桥接模式
<interface type='bridge'>
<mac address='52:54:00:56:48:53'/>
<source bridge='br0'/>
#在宿主机上,重启虚拟机生效
9.3. 创建多个 virbrn虚拟网卡
编写虚拟机网卡xml文件
vim virbrn3.xml
<network>
<name>192.168.20.0</name>
<uuid>66010a76-cfed-4ab7-9b0f-5a00e7549b14</uuid>
<bridge name='virbr3' stp='on' delay='0'/>
<mac address='52:54:00:35:30:44'/>
<ip address='192.168.20.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.20.129' end='192.168.20.254'/>
</dhcp>
</ip>
</network>
创建
virsh net-create --file virbrn3.xml
virsh net-start 192.168.20.0
virsh net-autostart 192.168.20.0
virsh net-list
10.热添加技术
10.1 kvm虚拟机在线添热添加硬盘
10.1.1 热添加磁盘命令
#先创建磁盘
qemu-img create -f qcow2 add01.qcow2 5G
#临时生效
virsh attach-disk web01 /data/oldboy.qcow2 vdb --subdrver qcow2
#永久生效
virsh attach-disk web01 data/oldboy.qcow2 vdb --subdrver qcow2 --config //重启后才会生效
virsh attach-disk web01 /kvm_disk/web01.vdb.qcow2 vdb --cache none --subdriver qcow2
#磁盘分离
virsh detach-disk centos7 vdb
10.1.2 添加磁盘后对虚拟机磁盘进行扩容流程
#1.取消虚拟机磁盘挂载
[root@web02 ~]# umount -lf /data
#2.对虚拟机磁盘进行分离
[root@kvm kvm_disk]# virsh detach-disk web02 vdb
#3.扩容磁盘
[root@kvm kvm_disk]# qemu-img resize web02.vdb.qcow2 +5G
#4.查看磁盘容量信息
[root@kvm kvm_disk]# qemu-img info web02.vdb.qcow2
#5.重新添加磁盘到虚拟机
[root@kvm kvm_disk]# virsh attach-disk web02 /kvm_disk/web02.vdb.qcow2 vdb --subdriver qcow2
#6.虚拟机查看磁盘信息
[root@web02 ~]# fdisk -l
磁盘 /dev/vdb:16.1 GB, 16106127360 字节,31457280 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
#7.虚拟机重新挂载磁盘
[root@web02 ~]# mount -a
#8.虚拟机查看容量大小发现磁盘容量没有改变
[root@web02 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/vdb xfs 10G 33M 10G 1% /data
#9.刷新虚拟机磁盘容量
xfs_growfs /data
#10.再次查看磁盘容量发现你以改变
[root@web02 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/vdb xfs 15G 33M 15G 1% /data
10.1.3 根分期扩容
#1.关闭虚拟机
[root@kvm kvm_disk]# virsh destroy web02
#2.扩容磁盘
[root@kvm data]# qemu-img resize web02.qcow2 +5G
#3.启动虚拟机并对磁盘添加分期
[root@kvm data]# virsh start web02
#4.修改虚拟机分区
[root@web02 ~]# fdisk -l
#5.重启虚拟机
[root@web02 ~]# reboot
#6.刷新磁盘
xfs格式:xfs_growfs /dev/sda1
ext4 resize2fs /dev/sda1
10.2 kvm虚拟机在线添加网卡
10.2.1 操作命令
#临时添加网卡
virsh attach-interface web01 --type bridge --source br0 --model virtio
#永久添加网卡
virsh attach-interface web01 --type bridge --source br0 --model virtio --config
#删除网卡
virsh detach-interface web01 bridge --mac 52:54:00:ea:fa:77
#查看虚拟机网卡信息
[root@kvm ~]# virsh domiflist web01
接口 类型 源 型号 MAC
vnet0 bridge br0 virtio 52:54:00:56:eb:b4
vnet2 bridge br0 virtio 52:54:00:07:20:36
10.3 kvm虚拟机在线添加内存
第一次安装需要添加参数:
–memory 512,maxmemory=2048 //分配容量与最大分配内存容量
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 ---vcpus 1 --disk --memory 512,maxmemory=2048 /data/web01.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
#临时热添加内存
virsh setmem web01 1024M --live
#永久增大内存
virsh setmem web01 1024M --config
10.4 kvm虚拟机在线添加cpu
第一次安装需要添加参数:
–vcpus 1,maxvcpus=10 //分配cpu与最大使用内核数量
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web01.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
#临时添加cpu核数
setvcpus web01 4 --live
#永久添加cpu核数
setvcpus web01 4 --config
11.kvm热迁移
热迁移条件:
kvm热迁移需要将磁盘文件进行文件共享nfs
为什么要热迁移
1.尽可能停机实践短!
服务安全等级
11.1 操作案例
要求:将kvm01中的test01虚拟机热迁移至web01系统
11.1.1 准备环境
kvm01 192.168.10.1 192.168.154.1
kvm02 192.168.10.2 192.168.154.2
nfs—server 192.168.10.3 192.168.154.3
11.1.2 nfs-server 操作
[root@nfs-server ~]
[root@nfs-server ~]
[root@nfs-server ~]
[root@nfs-server ~]
[root@nfs-server ~]
11.1.3 kvm01操作
[root@kvm02 ~]
[root@kvm02 ~]
[root@kvm02 ~]
[root@kvm02 ~]
[root@kvm02 ~]
[root@kvm02 ~]
--unsafe 即使不安全也要强制迁移
--persistent 目的地中的持久 VM
--undefinesource 在源中取消定义 VM
--copy-storage-all 使用全磁盘复制的非共享存储进行迁移
11.1.3 web01操作
此时web01中已经存在虚拟机test01 并且是运行状态 中间迁移只丢1个包
[root@web01 disk]
Id 名称 状态
5 test03 running
6 test01 running
11.1.4 图形界面操作
需要安装vnc软件于和桌面环境
yum -y groupinstall GNOME 桌面
[root@web01 ~]
[root@web01 ~]
11.2 EXSI虚拟化到kvm虚拟机迁移
流程
首选导出ESXI中的的虚拟机为ova格式copy到kvm虚拟机中进行格式转换
#安装转换格式组件
[root@kvm02 ~]# yum -y install virt-v2v
#将ova转换为qcow2格式
[root@kvm02 ~]# virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test.qcow2 -of qcow2
#创建虚拟机并启动
[root@kvm02 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)