什么是虚拟化
虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求
简单点说,假如一台服务器有多余的资源,可以划分出来再部署一台服务器
部署KVM需要硬件的支持
1).安装前准备
服务器或者PC的CPU能支持 VT 技术
虚拟机中安装 KVM 要勾选:处理器:虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)
安装一块60G硬盘(如果空间够大不加硬盘也是可以的)
处理器,内存给高点(本实验内存8G,处理器2,内核2)
硬盘空间必须要大!如果初始容量就不多的话建议加一块硬盘挂载到/目录使用
切记勾选虚拟化,否则不支持
硬件完成后开始软件搭建以及部署
因为添加了新磁盘,所以我们先创建分区以及格式化
[root@localhost ~]# fdisk /dev/sdb
//创建主分区其他全部默认即可,w保存退出
[root@localhost ~]# mkfs.ext4 /dev/sdb1
//将分区格式化为ext4
接着挂载镜像配置yum源
[root@localhost ~]# mount /dev/cdrom /media/
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vim /etc/yum.repos.d/yum.repo
2).安装 KVM 所需软件
[root@localhost ~]# yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils virt-manager libvirt groupinstall "GNOME Desktop"
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
//查看一下cpu中是否有vmx等相关信息,如果没有则安装错误
[root@localhost ~]# lsmod |grep kvm
//查看内核支持的组件
kvm_intel 174841 0
kvm 578518 1 kvm_intel
irqbypass 13503 1 kvm
3).绑定网卡--以太网通道--聚合链路--桥接网络
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
//切换至存放网卡目录
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0
//复制一块网卡出来,br0为Bridge(第一块)桥接网卡
[root@localhost network-scripts]# vim ifcfg-ens33
//更改网卡配置信息
更改为:(除了UUID,其他全部删除,然后添加)
UUID=2d39e38f-9fa9-47c5-b347-7f92b22797ed
BOOTPROTO=none
BRIDGE="br0"
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=ens33
DEVICE=ens33
ONBOOT=none
BRIDGE="br0"
//绑定第一块桥接网卡
[root@localhost network-scripts]# vim ifcfg-br0
更改为:(还是除了UUID全部删除,然后添加)
UUID=2d39e38f-9fa9-47c5-b347-7f92b22797ed
DEVICE=br0
NAME=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.1
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network
//重启下网卡(两块网卡,会有个缓存,重启完最好查看下br0为1.1,ens33没有IP)
4).启动虚拟机管理器
[root@localhost ~]# systemctl restart libvirtd
[root@localhost ~]# mkdir /cp
[root@localhost ~]# mount /dev/sdb1 /cp
//将sdb1磁盘挂载到/cp目录,扩大容量
[root@localhost ~]# virt-manager
//打开虚拟机管理器
双击红格处然后点击存储
然后点击左下角加号创建一个存储池,名称自定义然后点击前进
目标路径可以随便写,不过要记清楚(会自动创建对应目录)点击完成即可
但是我们的磁盘空间在cp目录下,所以必须得放在cp目录下,不然无法使用磁盘空间
同样的方式再创建一个iso镜像的存储池
接着打开iso存储池目录,将镜像放进去,如果一次没进去就多粘贴几次
再打开虚拟机管理器,找到第一个创建的存储池然后点击+号
自定义一个名称,文件格式选择qcow2,空间尽量给大一些
创建完成后点击虚拟机管理器左上角的文件,点击新建虚拟机,保持默认本地安装介质前进
再点击使用ISO镜像,然后浏览选择ISO存储池选择我们刚才上传好的镜像文件点击选择卷,勾选上根据安装介质自动侦测操作系统然后点击前进
如果ISO存储池里没有镜像就刷新一下
这一步保持默认
点击前进然后点击选择或创建自定义存储然后管理
找到第一个存储池然后找到我们创建的qcow2文件系统的文件
完成后下一步勾选在安装前自定义配置点击完成
最后点击引导选项勾选主机引导时启动虚拟机然后点击应用再点击左上角开始安装
接下来的安装就正常安装centos7,不做演示
5).查看一下虚拟机文件
[root@localhost ~]# ls /etc/libvirt/qemu/
autostart centos7.0.xml networks
//虚拟机文件目录
[root@localhost ~]# ls /var/lib/libvirt/images/
//虚拟机磁盘文件目录,当前是没有的,因为还没有给它添加磁盘
6).管理 KVM 虚拟机
virsh list //查看正在运行kvm虚拟机
virsh list –all //查看所有kvm虚拟机状态
virsh start 名字 //启动
virsh shutdown 名字 //关机
virsh destroy 名字 //强制关机
virsh autostart 名字 //自动启动
virsh suspend 名字 //挂起
virsh resume 名字 //恢复
virsh undefine 名字 //删除
virsh edit 名字 //编辑
7).转换磁盘文件格式
KVM 中有两种磁盘文件格式:raw 和 qcow2
raw 读写性能快 qcow2 节省磁盘空间
8.转换磁盘文件格式
KVM中有两种磁盘文件格式:raw和qcow2
raw 读写性能快 qcow2 节省磁盘空间
qemu-img info /datakvm/store/bdqn-kvm.qcow2 //查看当前磁盘格式
image: /datakvm/stor/bdqn-kvm.qcow2
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 4.2G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
如果虚机磁盘文件不是qcow2格式,可以通过“qemu-img”命令转换磁盘文件格式,如执行以下操作可以将tes01虚拟机raw格式磁盘转换至qcow2格式。
将.img转换为.qcow2:
virsh shutdown
find /var/lib/ -name centos7.0.img
[root@localhost ~]# qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/bdqn1.img /var/lib/libvirt/images/bdqn1.qcow2(大欧)
修改XML文件使其生效:
virsh edit centos7.0 //修改<disk></disk>中的raw改为qcow2
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/datakvm/stor/bdqn-kvm.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
删除源文件:
rm -rf /datakvm/stor/ bdqn1.img
[root@localhost ~]# qemu-img info /cp/store/huge_kvm.qcow2
//这条命令可以查看我们该磁盘的文件系统以及大小
如果file format:img,我们需要将它转换成qcow2文件系统
8).给 KVM 中的虚拟机添加硬盘
[root@localhost ~]# virsh destroy centos7.0
//注意:必须关机操作
添加磁盘:
[root@localhost ~]# qemu-img create -f raw /var/lib/libvirt/images/huge.img 5G
//carete创建,-f指定文件系统为raw,创建到这个目录下,磁盘名字叫huge.img,大小5G
Formatting '/var/lib/libvirt/images/huge.img', fmt=raw size=5368709120 //提示信息
将新设备添加到虚拟机的配置文件中:
[root@localhost ~]# virsh edit centos7.0
添加:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/huge.img'/>
<target dev='sdb' bus='ide'/>
</disk>
创建了一块raw磁盘,我们可以将文件系统进行更改,更改为qcow2文件系统
[root@localhost ~]# qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/huge.img /var/lib/libvirt/images/huge.qcow2
//-f:指定要更改的文件系统 -大o:指定要更改为的文件系统 默认存放在虚拟机磁盘文件目录里,原始文件名是huge.img,更改后是huge.qcow2(配置文件也要更改)
- 克隆虚拟机(必须为关机状态)
[root@localhost ~]# virt-clone -o centos7.0 -n centos7.1 -f /var/lib/libvirt/images/huge2.qcow2
-o:指定要克隆的虚拟机 -n:指定克隆出来的虚拟机名字
-f:指定克隆文件的存放位置,名字为huge2.qcow2
注意:克隆需要将刚才添加的磁盘从配置文件删掉,因为不支持克隆磁盘功能
- 快照管理(只支持 qcow2 存储格式)
创建快照virsh snapshot-create 虚拟机名字
创建指定名称的快照virsh snapshot-create-as 虚拟机名字 快照名称
查看快照列表virsh snapshot-list 虚拟机名字
查看虚拟机当前配置状态信息virsh snapshot-current 虚拟机名字
恢复快照virsh snapshot-revert linux1 linux1-bak
删除快照virsh snapshot-delete linux1 linux1-bak
- 使用命令行创建虚拟机
virt-install
参数选项:
--name指定 KVM 虚拟机的名字
--ram内存大小
--file磁盘文件的路径
--vcpus指定虚拟机的 CPU 数量
--file-size=30(默认单位是 G) 设置硬盘大小
--cdrom光驱提供 boot.iso 镜像
--location本地提供 boot.iso 镜像
--network network:default 设置网卡(使用默认)
--vnc --vncport=5911 连接桌面环境的 vnc 端口
virt-install --name=centos7.1 --ram=1024 --vcpus=1 --file=/kvm/centos77.img --file-size=30 --location=/iso/CentOS-7.5-x86_64-DVD-1804.iso --force