kvm虚拟化之qemu虚拟机安装

2,296 阅读6分钟

检测是否支持KVM

Kvm是基于x86虚拟化拓展(Intel VT或者 AMD-V)技术的虚拟机软件,所以查看CPU是否支持VT技术,就可以判断是否支持kvm .有返回结果,如果结果中有vmx(inel)或svm(AMD)字样,就说明CPU的支持的.

#cat /proc/cpuinfo | egrep 'vmx|svm'
flags   : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse

关闭selinux,将/etc/sysconfig/selinux中的selinux=enforcing修改为 selinux=disable

#vi /etc/sysconfig/selinux

安装kvm环境

通过yum安装kvm基础包和管理工具

Kvm相关安装包及其作用:
.qemu-kvm 主要的kvm程序包
.Python-virtinst 创建虚拟机所需要的命令行工具和程序库
.virt-manager GUI虚拟机管理工具
.virt-top 虚拟机统计命令
.virt-viewer GUI连接程序,连接到已配置好的虚拟机
.libvirt C语言工具包,提供libvirt服务
.libvirt-client 为虚拟客户机提供的c语言工具包
.virt-install 基于libvirt服务的虚拟机创建命令
.bridge-utils 创建和管理桥接设备的工具

#安装qemu libvirt
yum -y install qemu-kvm qemu-img libvirt virt-install bridge-utils qemu-kvm-tools virt-manager

#可以重启一下宿主机,以便加载kvm模块
Reboot

#查看kvm模块是否被正确加载
#lsmod | grep kvm
kvm_intel             162153  0
kvm                   525259  1 kvm_intel

开启kvm服务,并且设置其开自动启动
#systemctl start libvirtd
#systemctl enable libvirtd

#查看运行情况
#systemctl status libvirtd

设置一下语言环境
#LANG="en_US.UTF-8"

#在根下创建一个目录/data ,(不把虚拟机的文件放在/root或根主要是虚拟机启动之后qemu这些用户没有权限去/root或根下读取虚拟机的配置文件)

#mkdir /data
#cd /data
#wget http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso (下载一个centos的ISO镜像)

安装虚拟机

安装前要设置环境语言为英文LANG="en_US.UTF-8",如果是中文的话某些版本可能会报错。CentOS 7 在这里修改 /etc/locale.conf。

kvm创建虚拟机,特别注意.iso镜像文件一定放到/data 或者根目录重新创建目录,不然会因为权限报错,无法创建虚拟机。

.创建一个虚拟磁盘, -f指定格式, 路径是/data/kvm.qcow2 ,大小为30G
qemu-img create -f qcow2 -o preallocation=metadata /data/kvm.qcow2 30G

首先学virt-install命令,在这里使用-help查看,并且只学习重要的,其他的可以后面学习.

.virt-install -help
-n (name) : 指定虚拟机的名称
-memory (-raw) : 指定内存大小
-cpu : 指定CPU的核数(默认为1)
-cdrom : 指定镜像
-disk: 指定磁盘路径(即预先创建的虚拟磁盘)
-virt-type : 指定虚拟机类型(kvm, qemu , xen)
-network : 指定网络类型

执行创建虚拟机命令

# virt-install --virt-type=kvm --name=centos88 --vcpus=2 --memory=4096 --location=/data/CentOS-7-x86_64-Minimal-1810.iso --disk path=/data/kvm.qcow2,size=20,format=qcow2 --network network=default  --graphics none --extra-args='console=ttyS0' --force

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

步骤1.Timezone settings 时区设置选择 2) Asia亚洲,再选择城市 64) Shanghai上海

Installation Destination 安装目的地

Autopartitioning Options 自动分区选项

[ ] 1) Replace Existing Linux system(s) 替换现有的Linux系统

[x] 2) Use All Space 使用所有空间

[ ] 3) Use Free Space 使用可用空间

Partition Scheme Options 分区方案选项

[ ] 1) Standard Partition 标准分区

[ ] 2) Btrfs Btrfs

[x] 3) LVM LVM(逻辑卷管理)

[ ] 4) LVM Thin Provisioning 精简配置

安装完成默认是进入到系统里面去了.

查看虚拟机

virsh list              # 查看在运行的虚拟机
virsh list --all         # 查看所有虚拟机

#连接到虚拟机的命令
#virsh console centos88 (如果报错,可能是安装完成之后已经在界面进入了,需要退出那个界面,再登录就好了,自己应变一下)

虚拟机基本操作学习

生成kvm虚拟机:virt-install 
查看在运行的虚拟机:virsh list 
查看所有虚拟机:virsh list –all 
查看kvm虚拟机配置文件:virsh dumpxml name 
启动kvm虚拟机:virsh start name 
正常关机:virsh shutdown name 
非正常关机(相当于物理机直接拔掉电源):virsh destroy name 
删除:virsh undefine name(彻底删除,找不回来了,如果想找回来,需要备份/etc/libvirt/qemu的xml文件) 
根据配置文件定义虚拟机:virsh define file-name.xml 
挂起,终止:virsh suspend name 
恢复挂起状态:virsh resumed name

编辑kvm的xml文件,更改虚拟机CPU配置 .配置虚拟机的CPU有两种方式(启动的时候指定核数,更改xml) .第一种方法:为了实现CPU的热添加,就需要更改CPU的最大值,热添加的个数不能超过最大值.

#virsh list --all  查看虚拟机
#virsh edit centos88  打开虚拟机的xml文件,找到如下项

当前为2,改为自动括容,最大为4

<vcpu placement='auto'current="2">4</vcpu>

.重启虚拟机,查看CPU信息,确认CPU的个数,再进行CPU热添加

#virsh shutdown centos88
#virsh start centos88

#virsh setvcpus centos88 --live

再去虚拟机查看cpu信息

.第二种方法:安装的时候指定

#  -vcpus 5,maxcpus=10,cpuset=1-4,6,8    
 -vcpus sockets=2,cores=4,thread=2 

编辑kvm的xml文件,更改虚拟机内存配置

内存的设置拥有一个“气球(balloon)机制”,可以增大减少,但是也要设置一个最大值,默认并没有设置最大值,也可以在安装的时候指定

.#virsh dominfo centos88  查看虚拟机信息

#virsh edit centos88
. <memory unit='KiB'>6000640</memory> (最大内存为6G)
  <currentMemory unit='KiB'>4194304</currentMemory>  (当前内存为4G)

#virsh  setmem centos88 5G   (增大或减小)
能够在线调整的最大内存不能超过为虚拟机分配的最大内存,否则需要关闭虚拟机上调最大内存

通过镜像创建虚拟机

镜像制作原则

.分区的时候,只分一个/根分区,并不需要swap分区,由于虚拟机的磁盘性能就不好,如果设置了swap分区,当swap工作的时候,性能会更差。例如阿里云主机,就没有交换分区。

.镜像制作需要删除网卡(eth0)中的UUID

.关闭selinux,关闭iptables

.安装基础软件的包:net-tools lrzsz screen tree vim wget

创建虚拟机镜像文件

#复制第一次安装的干净系统镜像,作为基础镜像文件,后面创建虚拟机使用这个基础镜像.
#cp  /data/centos.88.qcow2  /data/centos7.base.qcow2

.使用基础镜像文件,创建新的虚拟机镜像
#cp  /data/centos7.base.qcow2   /data/centos7.113.qcow2

创建虚拟机配置文件
.复制第一次安装的干净的系统镜像,作为基础配置文件.
#virsh dumpxml centos88 > /data/centos7.base.xml

.使用基础虚拟机镜像配置文件,创建新的虚拟机配置文件
#cp /data/centos7.base.xml  /data/centos.113.xml

编辑新虚拟机配置文件

主要是修改虚拟机文件名,UUID,镜像地址和网卡地址,其中 UUID 在 Linux 下可以使用 uuidgen 命令生成



<domain type='kvm'>
  <name>centos.113</name>
  <uuid>1e86167a-33a9-4ce8-929e-58013fbf9122</uuid>
  <devices>
    <disk type='file' device='disk'>
      <source file='/home/vms/centos.113.img'/>
    </disk>
    <interface type='bridge'>
      <mac address='00:00:00:00:00:04'/>
    </interface>    
    </devices>
</domain>

# virsh define /data/centos.113.xml