KVM

 一、虚拟化

1.1概念

  将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象 、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。

1.2应用数据化的原因

  1)同一台物理机运行多个不同版本应用软件

  2)硬件依赖性较低

  3)便于数据迁移

1.3虚拟化的优势

  1)提高应用兼容性

  2)降低运营成本

  3)加速应用部署

  4)提高服务器可用性

  5)提高资源利用率

  6)动态调度资源

  7)降低能源消耗

 1.4虚拟化产品对比表

 

 

二、KVM

2.1、KVM

  1)KVM是开源软件

  2)是x86架构且硬件支持虚拟化技术(如intel VT或AMD-V)的Linux全虚拟化解决方案

  3)包含为处理器提供底层虚拟化可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)

  4)需要经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面

  5)能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。

2.2、KVM简介

  KVM全称Kernel-based Virtual Machine,翻译过来是基于内核的虚拟机,实际它是Linux内核的一个模块。该模块将Linux变为一个Hypervisor,由Quramnet开发,支持x86、s390、Powerpc等CPU。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
  KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。


2.3、KVM架构
从GUI到Linux内核,包括以下5个组件:
1)virt-manager: 用来管理VM的GUI/CUI用户接口;它使用libvirt API调用VM的各项功能
2)libvirt: 工具集及接口,作为较通用的服务器虚拟化软件,支持xen、vmware vSpher,qemu/KVM。
3)qemu:    是KVM内核模块交互的模拟器,处理多种客户机系统请求的I/O;一个qemu进程对应一个客户机系统
4)KVM模块:   用于处理VM Exits和VM Entry指令
5)Linux内核:  处理客户机系统调度

2.4、Virtual Machine Manager

  1)虚拟机管理员,可以让用户管理多个虚拟机

  2)创建、编辑、引导或停止虚拟机

  3)查看并控制每个虚拟机的控制台

  4)查看每部虚拟机的性能及使用率

  5)查看每部正在运行中的虚拟机以及主控端的即时性及使用率信息

  6)无论在本机或远程,皆可使用KVM、Xen、QEMU

 

三、KVM的部署

3.1、部署环境

  1)如果在workstation上做实验,应当将处理的虚拟化功能打开

  2)如果真实生产环境应当修改BIOS,开启虚拟化

  3)你的KVM需要有足够的内存和磁盘空间

  4)安装CentOS 7.4


  5)关闭防火墙、selinux 并重启:

vim /etc/sysconfig/selinux

  SELINUX=disabled

systemctl disable firewalld.service

重启后查看:

[root@localhost ~]# getenforce
Disabled
[root@localhost ~]# systemctl status firewalld.service

  6)查看cpu是否支持虚拟化

验证cpu是否支持kvm,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的

3.2、安装相关软件包

  1)配置网络

vim /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network.service

  2)配置yum源(能连接外网的情况下)

[root@localhost yum.repos.d]# mkdir -p repo.bak
[root@localhost yum.repos.d]# mv *.repo repo.bak/
[root@localhost yum.repos.d]# ls
repo.bak
[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo  repo.bak

更新yum源:

yum clean all

yum makecache

yum repolist

  3)安装KVM软件包

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

说明:qemu-kvm    ----模拟计算机的工具,为KVM虚拟机提供IO设备

           libvirt            ----管理虚拟机模块

           virt-install     ----命令行的虚拟机创建安装工具

   virt-manager ----图形界面管理虚拟机

           bridge-utils   ----网桥工具

yum -y install  python-virtinst  libvirt-python libguestfs-tools

pyhon-virtinst         -----包含python模块和工具(virt-install,virt-clone和virt-image)

           用于安装和克隆虚拟机使用libvirt。

           它完全支持paravirtulized客人和客人虚拟客人。

                                     支持的虚拟机管理程序是Xen,qemu(QEMU)和kvm

libguestfs-tools      ------virt-cat等命令的支持软件包

  4)验证安装结果

  5)开启kvm服务,并且设置其开机自动启动

systemctl enable libvirtd

systemctl start libvirtd

查看网络配置ifconfig:

  安装KVM成功后会在宿主机上自动生成一个虚拟网桥,用来虚拟机和宿主机之间的通信

  可以看到网卡多了一个virbr0的网口,这个是libvirt默认的nat网口(默认IP是192.168.122.1),在更新的版本会发现有virbr0-nic、vnet0等网口,这些都是给虚拟机用的网口。

3.3、安装虚拟机

  1)配置网桥

先将原来的物理网卡ens33 备份一份

 cp /etc/sysconfig/network-scripts/ifcfg-ens33 /root/

创建新文件ifcfg-br0 :

cat /etc/sysconfig/network-scripts/ifcfg-br0
BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.3.50
NETMASK=255.255.255.0
GATEWAY=192.168.3.1

 修改原来的物理网卡ens33:

cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
DEVICE=ens33
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

重启网络服务:

systemctl restart network

  2)创建镜像目录并上传镜像

kvm可以很好的支持linux虚拟机,windows虚拟机需要另外装驱动。

ls /home/iso/
CentOS-7.4-x86_64-DVD-1708.iso

  3)创建虚拟机存放文件目录

mkdir -p /home/kvm

  4)使用virt-install创建虚拟机

virt-install --name centos7_kvm --memory 512 --vcpus=1 --disk /home/kvm/centos7_kvm.img,format=qcow2,size=20 --network bridge=br0 --os-type linux --os-variant=rhel7.4 --cdrom /home/iso/CentOS-7.4-x86_64-DVD-1708.iso --noautoconsole --vnc --vncport=5910 --vnclisten=0.0.0.0

virt-install 工具的相关选项说明:
--name        虚拟机名称
--memory      内存大小
--vcpus= vcpu
--disk        创建硬盘 制定硬盘路径,格式,大小
--network     指定网络
--os-type     指定操作系统类型
--os-variant= 指定操作系统版本
--cdrom       指定光驱安装操作系统
--noautoconsosle 虚拟机创建完毕后不会自动切换tty
--vnc         使用vnc
--vncport     vnc端口

 注意:这里参数最好加上--noautoconsole,不然本tty就会一直被占用,会误以为失败死机

 

   5)检查虚拟机状态,确认运行

 virsh list

   6)图形安装操作系统

kvm中虚拟机创建成功

 

另一种方式安装虚拟机: 

mkdir -p /kvmdir/iso  /kvmdir/vmdir             先创建两个目录

dd if=/dev/sr0 of=/kvmdir/iso/centos7.iso   制作镜像

qemu-img create -f qcow2 /kvmdir/vmdir/vm_centos7.qcow2 20G   制作磁盘文件

virt-install -n vm_centos7 -r 512 --vcpus=1 --location=/kvmdir/iso/centos7.iso --disk path=/kvmdir/vmdir/vm_centos7.qcow2,size=20,format=qcow2,sparse --accelerate --nographics -x 'console=ttyS0'

上面创建虚拟机命令最终需要你配置系统基础设置,带 [!] 基本都是要配置的,按照顺序往下配置,按对应的数字以此进行设置。一步步配置下去即可

 安装虚拟机时 不同的参数:

mkdir -p /var/linux/images
qemu-img create -f qcow2 /var/linux/images/centos74.img 20G

virt-install --name centos71 --ram 512 --vcpus 1 --disk path=/var/linux/images/centos74.img,size=10 --os-type linux --os-variant rhel7 --graphics none --console pty,target_type=serial --location=/kvmdir/iso/centos7.iso  --extra-args 'console=ttyS0,115200n8 serial'

若想在虚拟机创立后就可以使用console连的话,需要在virt-install的时候加入extra-args参数

 

3.4、虚拟机相关命令 

0)常用命令

进入虚拟机:virsh console centos7_kvm

退出虚拟机:ctrl + ]

查看虚拟机状态:virsh list --all

查看运行的虚拟机:virsh list

启动虚拟机:virsh start centos7_kvm

关闭虚拟机:virsh shutdown centos7_kvm

强制关闭虚拟机:virsh destroy centos7_kvm          类似于断电

删除虚拟机:virsh undefine from_vm_centos7        注意要先关机, /etc/libvirt/qemu/ 此目录下对应的文件也会删除

查看当前虚拟机的硬盘信息:qemu-img info /kvmdir/vmdir/vm_centos7.qcow2

 

1)libguestfs-tools包

  libguestfs -tools是一组Linux下的C语言的API,用来访问虚拟机的磁盘映像文件。该工具包内包含的工具有virt-cat、virt-df、virt-list、virt-copy-in、virt-copy-out、virt-edit、guestfs、guestmount、virt-list-filesystems、virt-list-partitions等工具。该工具可以在不启动KVM guest主机的情况下,直接查看guest主机内的文内容,也可以直接向img镜像中写入文件和复制文件到外面的物理机,也可以将guest的镜像文件挂载,功能相当强大。

2)libvirt包

  libvirt是用于管理虚拟化平台的开源的API(libvirt API),后台程序(libvirtd进程)和管理工具(virsh工具集)。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用。libvirtd进程主要实现远程代理、本地环境初始化、根据环境注册各种Driver(qemu、xen、storage)的实现。virsh工具集主要用于管理、操作虚拟主机。

3)virt-install包

  这个包主要安装了virt-install、virt-clone和virt-xml命令,分别用于安装虚拟机系统、克隆虚拟机和编辑虚拟机的xml配置文件。

4)virsh工具使用

 

5)克隆和快照

  虚拟机通过以上命令可以克隆,但是不建议这样做。

  我们可以先创建一个虚拟机的磁盘文件,然后找到/etc/libvirt/qemu,将其中已经存在的虚拟机配置文件(xml结尾)复制一份出来,然后编译复制出来的文件,将虚拟机名、虚拟机磁盘文件位置、uuid、mac地址修改一下,最后通过define命令定义虚拟机,完成复制:

cp vm_centos7.qcow2 vm.qcow2

cd /etc/libvirt/qemu/             这个目录下保存已经安装虚拟机的信息

cp vm_centos7.xml vm.xml

vim vm.xml                           将虚拟机名、虚拟机磁盘文件位置、uuid、mac地址修改一下

virsh define vm.xml

 

3.5、kvm磁盘管理(qemu-img的使用)

1)kvm支持的磁盘类型

raw:这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像;它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案,然而也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等。格式简单,容易转换为其他格式;需要文件系统的支持才能支持sparse file。

qcow2:相对于raw来讲,性能较低。但是特点就是支持压缩、快照、克隆。

2)qcow2盘的支持的磁盘类型

实盘:分配所有磁盘空间并置零,预分配后的虚拟磁盘属于厚盘
稀疏盘:与实盘相反
差异盘:允许以一个虚拟机磁盘为底盘,可节省空间,但相应的I/O性能下降

3)操作

创建一个20G的qcow2的磁盘文件:

  qemu-img create -f qcow2 /kvmdir/vmdir/vm01.qcow2 20G         

创建一个20G的raw的磁盘文件:

  qemu-img create -f raw /kvmdir/vmdir/vm02.raw 20G

将raw格式的磁盘文件转换为qcow2格式:

  qemu-img convert -f raw -O qcow2 /kvmdir/vmdir/vm02.raw /kvmdir/vmdir/vm02.qcow2

基于vm01.qcow2创建一个差异盘:

  create -f qcow2 -o backing_file=/kvmdir/vmdir/vm01.qcow2 /kvmdir/vmdir/vm03.qcow2

4)通过差异盘创建虚拟机

qemu-img create -f qcow2 -o backing_file=/kvmdir/vmdir/vm_centos7.qcow2 /kvmdir/vmdir/from_vm_centos7.qcow2

cd /etc/libvirt/qemu/

cp vm_centos7.xml from_vm_centos7.xml

vim from_vm_centos7.xml                            主机名和UUID一定要修改

virsh define from_vm_centos7.xml

virsh list --all

 

3.6、KVM文件管理

该部分是通过不开启虚拟机的情况下,通过libguestfs-tools对虚拟机的文件进行操作

 

3.7、KVM虚拟机添加硬盘

1)创建一块新硬盘

qemu-img create -f qcow2 /home/kvm/centos7-add.qcow2 2G

2)查看新创建的硬盘信息

qemu-img info /home/kvm/centos7-add.qcow2

3)为虚拟机添加硬盘

virsh attach-disk centos7_kvm /home/kvm/centos7-add.qcow2 vdb --live --cache=none --subdriver=qcow2

说明:attach-disk     附加磁盘设备

   vdb               第二块硬盘

          --live            热添加

          --sudbriver    驱动类型

          detach-disk    分离磁盘设备         这是分离

4)格式化磁盘(在虚拟机里操作)

mkfs.xfs /dev/vdb

挂载后就可以使用了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://blog.csdn.net/qq_29113041/article/details/79412016

 

转载于:https://www.cnblogs.com/jidong0515/p/10419128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值