一、KVM介绍
Kernel-basedVirtualMachine 的简称,是一个开源的系统虚拟化模块,自 Linux2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,所以相对于 Xen,其核心源码 很少。KVM 目前已成为学术界的主流 VMM 之一。
KVM 的虚拟化需要硬件支持(如 IntelVT 技术或者 AMDV 技术)。是基于硬件的完全虚拟化。 而 Xen 早期则是基于软件模拟的 Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但 Xen 本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件 VMwareESX 系列是基于软件模拟的 Full-Virtualization。
因为对进程管理比较麻烦,RedHat 发布了一个开源项目 libvirt。libvirt 有命令行工具也有 API,可 以通过图形化界面,完成对虚拟机的管理。大多数管理平台通过 libvirt 来完成对 KVM 虚拟机的管理; 比如 Openstack、Cloudstack、OpenNebula 等。
二、环境准备
硬件环境
首先bios需要开启虚拟化
因为我这里使用的是VMware,所以需要在这里开启虚拟化配置
创建虚拟机步骤
1.准备虚拟机硬盘
2.需要系统 iso 镜像
3.需要安装一个 vnc 的客户端来连接
我这里使用的是迷你镜像,可以去官网上去下载一个
迷你包下载
系统环境
记得关闭防火墙
cat /etc/redhat-release
uname -r
getenforce
systemctl stop firewalld
然后检查一下CPU是否支持虚拟化
KVM其实已经在Centos7内置到系统内核,无需安装
egrep -o '(vmx|svm)' /proc/cpuinfo
grep -E '(vmx|svm)' /proc/cpuinfo
在 linux 平台下,我们可以通过 dmesg|grepkvm 命令来查看。 如果 CPU 没有开启虚拟化的话,显示如下:
安装KVM用户态模块
yum list|grep kvm
yum install -y qemu-kvm qemu-kvm-tools libvirt
libvirt用来管理kvm
kvm属于内核态,不需要安装。但是需要一些类似于依赖的
启动libvirt
systemctl start libvirtd.service
systemctl enable libvirtd.service
启动之后我们可以使用 ifconfig 进行查看,libvirtd 已经为我们安装了一个桥接网卡
libvirtd 为我们启动了一个 dnsmasqp,这个主要是用来 dhcp 连接的,这个工具会给我们的虚拟机分配 IP 地址
ps -ef|grep dns
三、创建虚拟机
首先,先看一下磁盘空间大小
df -h
最好是20G以上
上传镜像
提示:如果使用 rz 上传镜像可能会出现错误,所以我们使用 dd 命令,复制系统的镜像。只需要挂载 上光盘即可。
cd /opt/
dd if=/dev/cdrom of=/opt/CentOS-7.3.iso
创建磁盘
qemu-img create -f qcow2 /opt/CentOS-7.3-x86_64.qcow2 6G
-f 制定虚拟机格式
/opt/Centos 存放路径
6G 代表镜像大小
磁盘格式介绍
raw----裸磁盘不支持快照
qcow2----支持快照。Openstack 使用的方式推荐使用这个。注意:关闭虚拟机后操作。
区别:
全镜像格式(典型代表 raw),特点:设置多大就是多大,写入速度快,方便转换其他格式,性能最 优,但是占用空间大。
稀疏格式(典型代表 qcow2),其特点:支持压缩、快照、镜像,更小的存储空间(即用多少占多少)
qcow2 数据的基本组成单元是 cluster
raw 性能比 qcow2 快
raw 创建多大磁盘,就占用多大空间直接分配,qcow2 动态的用多大占用多大空间。
安装虚拟机
yum install -y virt-install
virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7.3.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/CentOS-7.3-x86_64.qcow2,size=6,format=qcow2
默认连接端口是从5900开始的
virsh list
查看一下端口
netstat -lntup|grep 5900
virt-install 常用参数
1. -n--name= 客户端虚拟机名称
2. -r--ram= 客户端虚拟机分配的内存
3. -u--uuid= 客户端 UUID 默认不写时,系统会自动生成
4. --vcpus= 客户端的 vcpu 个数
5. -v--hvm 全虚拟化
6. -p--paravirt 半虚拟化
7. -l--location=localdir 安装源,有本地、nfs、http、ftp 几种,多用于 ks 网络安装
8. --vnc 使用 vnc ,另有--vnclient=监听的 IP --vncport =VNC 监听的端口
9. -c--cdrom= 光驱 安装途径
10.--disk= 使用不同选项作为磁盘使用安装介质
11. -wNETWORK,--network=NETWORK 连接客户机到主机网络
12. -s--file-size= 使用磁盘映像的大小 单位为 GB
13. -f--file= 作为磁盘映像使用的文件
14. --cpuset=设置哪个物理 CPU 能够被虚拟机使用
15. --os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’)
16. --os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步 优化虚拟机配置
17. --host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV 是随着 libvirt 使用的一个 节点设备名(具体设备如’virshnodedev-list’的显示的结果)
18. --accelerateKVM 或 KQEMU 内核加速,这个选项是推荐最好加上。如果 KVM 和 KQEMU 都支持, KVM 加速器优先使用。
19. -xEXTRA,--extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命 令行参数到安装程序
20. --nographics"virt-install" 将默认使用--vnc 选项,使用 nographics 指定没有控制台被分配给客户机
四、VNC连接创建好的虚拟机并安装系统
因为 centos7 默认网卡发生改变,我们需要修改内核参数,使用 eth0 作为网卡
光标移动到 Install CentOS 上,按 tab 键 输入 net.ifnames=0 biosdevname=0 回车 注意:如果查看 5900 端口开启,但是 VNC 无法连接 KVM 虚拟机时,看下防火墙是否开启。创建的 虚机用 VNC 连接时从默认端口 5900 开始,即虚机一:10.0.0.200:5900 虚机二:10.0.0200:5901
虚拟机安装完成后是关闭了,我们需要启动
virsh list --all
virsh start c73
c73 是虚拟机的名字,是我们创建的时候定义的
这样就算是搭建完成了