KVM虚拟机 安装入门
KVM虚拟化
KVM 全称是Kernel-based Virtual Machine (基于内核的虚拟机)
KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
#KVM 是作为内核模块实现的
KVM安装
kvm虚拟化平台软件一般安装在操作系统为 centos
-
准备一台虚拟机
- 配置能给多少给多少(因为是在VMware中再创建KVM),比较吃配置 - 我这边给了8H8G后续可能还会加 - 镜像是centos7 - 桌面化安装一台KVM-server
按照顺序点击,前提是你的
CPU支持虚拟化
,如果不支持,可以出门左转了
-
打开虚拟机,安装KVM
查看cpu是否支持虚拟化 [root@kvm-server ~]# cat /proc/cpuinfo |grep -E 'vmx|svm' 有打印信息说明cpu支持虚拟化
-
关闭防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/sysconfig/selinux
- 注意:如果虚拟机ping不通,就把防火墙开起来
-
需求内核(rhel6以上)
[root@kvm-server ~]# uname -r 3.10.0-1160.105.1.el7.x86_64
-
如果之前安装kvm了清理环境:卸载kvm
[root@kvm-server ~]# yum remove `rpm -qa | egrep 'qemu|virt|kvm'` -y
[root@kvm-server ~]# rm -rf /var/lib/libvirt /etc/libvirt/
-
升级系统(在安装虚拟机出错的情况下,一般是操作系统的版本问题)
[root@kvm-server ~]# yum upgrade -y //升级所有包同时也升级软件和系统内核
-
安装软件
[root@kvm-server ~]# yum install *qemu* *virt* librbd1-devel -y
其实下载的是下面的几款软件
[root@kvm-server ~]# yum install qemu-kvm libvirt virt-manager librbd1-devel -y 后续如果出现 guest os卡住不动的情况,请清理kvm环境后,使用这个命令安装软件包
qemu-kvm 主包 libvirt api接口 virt-manager 图形化界面
在所谓的kvm技术中,应用到的其实有2个东西:
qemu+kvm
kvm
负责cpu虚拟化+内存虚拟化
,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu
是模拟IO设备
(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。#kvm与xen的区别:
1.xen是红帽6之前红帽5的虚拟化应用,7出来之后用kvm替代了。2.KVM内置于Linux,是内核模块,可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
-
启动服务
centos7: [root@kvm-server ~]# systemctl start libvirtd
-
查看kvm模块加载
[root@kvm-server ~]# lsmod |grep kvm kvm_amd 2177304 0 kvm 653976 1 kvm_amd #因为我是amd的cpu,英特尔的应该是 kvm_intel irqbypass 13503 1 kvm 看到有这两行,说明支持kvm模块
KVM guestos图形方式部署虚拟机
-
启动图形化
[root@kvm-server ~]# virt-manager
会弹出一个页面--------和VMware差不多,一路点就可以了
注意安装完成一台虚拟机之后,网络模式默认是NAT的,应该也只有这一种网络
-
Guest os安装问题解析
-
用图形安装guest os 的时候 创建的小虚拟机黑屏卡住不动
升级系统 [root@kvm-server ~]# yum upgrade -y
-
升级系统后安装guest os的时候还是卡住不动
需要在安装宿主机的时候安装兼容性程序(有的就没有安装也可以使用,这可能是bug)
-
如果安装了各种兼容程序之后还是不行
[root@kvm-server ~]# rpm -qa |grep kvm 如果打印的结果中有 qemu-kvm-ev 这个包,那么请从清理环境重新来
-
KVM guest os完全文本方式安装虚拟机
1.安装ftp
[root@kvm-server ~]# yum install -y vsftpd
2.创建挂载目录并挂载
[root@kvm-server ~]# mkdir /var/ftp/centos7u4
挂载
因为我之前将iso镜像文件上传到了kvm-server的root目录下
如果不一样,记得带上镜像文件所在的绝对路径
[root@kvm-server ~]# mount CentOS-7-x86_64-DVD-2207-02.iso /var/ftp/centos7u4/
mount: /dev/loop0 写保护,将以只读方式挂载
3.安装
[root@kvm-server ~]# virt-install --connect qemu:///system -n 虚拟机名称 -r 2050 --disk path=/var/lib/libvirt/images/虚拟机名称.img,size=5 --os-type=linux --os-variant=centos7.0 --vcpus=1 --location=ftp://KVM主机IP/centos7u4 -x console=ttyS0 --nographics
- 虚拟机名称记得更改
- KVM主机IP就是你这台虚拟机的IP
参数解释:
-n name
-r 以M为单位指定分配给虚拟机的内存大小
--disk 指定作为客户机存储的媒介 size以G为单位的存储
--os-type 系统类型
--os-variant 系统类型版本
--vcpus 指定核数,不能超过物理cpu
--location 客户虚拟机安装源下载,必须为镜像挂载在ftp目录下
-x console=ttyS0 执行终端0
--nographics 无图形,文本模式
-
注意
virt-install bash: virt-install: 未找到命令... #如果显示这个结果执行下面两个命令
[root@kvm-server ~][root@kvm-server ~]# yum install libguestfs-tools -y [root@kvm-server ~]# yum install virt-install.noarch -y
-
注意
ERROR 验证安装位置出错:打开 URL ftp://10.31.162.89/centos7u4 失败:[Errno 111] 拒绝连接。 #如果显示这个结果,需要vsftp匿名授权,添加以下内容
[root@kvm-server ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES //开启匿名登录 anon_upload_enable=YES //匿名读 anon_mkdir_write_enable=YES //匿名写 第一个可能已经开启 第二第三个是注释内容,可以取消注释,也可以直接添加
4.命令安装
- 选择2 use test mode
- 将所有的!进行编辑,编辑好的状态是×
- 更改时间选2 -- 1 set timezone-- 2 Asia -- 65 Shanghai
- 设置磁盘5 -- c to continue -- 2 Use All Space -- c to continue -- 3 LVM -- c to continue
- 设置密码8 -- 自己设定一个密码 -- yes
- 设置完成-- b
- 开始创建,大概20分钟左右
- 出现installation complete. press return to quit--按回车退出--下面的操作根据提示点点就可以了
- 设置成这样就大致差不多了,
b
开始安装就可以了
KVM guest os 模板镜像+配置文件 方式安装虚拟机
1.虚拟机配置文件
[root@kvm-server ~]# ls /etc/libvirt/qemu
networks vm2.xml
2.储存虚拟机的介质
[root@kvm-server ~]# ls /var/lib/libvirt/images/
vm2.img
==============================
define方式创建好,不会启动
create方式创建好,会启动
# 拷贝模板镜像和配置文件
[root@kvm-server ~]# cp /etc/libvirt/qemu/vm2.xml /etc/libvirt/qemu/vm3.xml(自定义名字)
[root@kvm-server ~]# cp /var/lib/libvirt/images/vm2.img /var/lib/libvirt/images/vm3.img (自定义名字)
# 修改配置文件
[root@kvm-server ~]# vim /etc/libvirt/qemu/vm3.xml
domain type='kvm'>
<name>vm3</name> #名字不能一样需要修改
<uuid>2e3fa6db-ff7f-41c3-bc8f-0428e81ebb57</uuid> #uuid不能一样需要修改
<memory unit='KiB'>1024000</memory> #内存,可选
<currentMemory unit='KiB'>1024000</currentMemory> #当前内存与上面定义一样
<vcpu placement='static'>2</vcpu> #cpu可选
<os>
...
...
...
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm3.img'/> #磁盘镜像需要修改
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
...
...
...
</controller>
<interface type='network'>
<mac address='52:54:00:82:d6:3c'/> #mac地址不能一样需要修改,只能修改后三段。
<source network='default'/>
<model type='virtio'/>
#必须修改name,uuid,mac地址,磁盘文件名字,其余可选
用vim修改完之后需要define一下配置文件
[root@kvm-server ~]# virsh define /etc/libvirt/qemu/vm3.xml
重启一下:
[root@kvm-server ~]# systemctl restart libvirtd
宿主机开启路由转发:
[root@kvm-server ~]# vim /etc/sysctl.conf
[root@kvm-server ~]# sysctl -p
net.ipv4.ip_forward = 1
查看虚拟机列表:
[root@kvm-server ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- vm2 关闭
- vm3 关闭