文章目录
Linux云计算虚拟化-KVM桌面虚拟化技术
1. 什么是虚拟化?
虚拟化技术:
①仿真虚拟化:对系统硬件没有要求,性能最低。如:vmware。
②半虚拟化:虚拟机可以使用真机物理硬件,性能高,但需要修改内核。如:xen。rhel5以上自带xen,需要安装对应的内核。
③全虚拟化:直接使用物理硬件,性能高。如:kvm。rhel6支持kvm。
KVM:kernel-based virtual machine
,基于linux内核的虚拟机。kvm的虚拟化需要硬件支持(Intel VT技术或AMD V技术),是基于硬件的完全虚拟化。在kvm模型中,每台kvm虚拟机都是一个由linux调度程序管理的标准进程,可以在用户空间启动客户机操作系统。支持创建linux、windows虚拟机。
查看cpu是否支持虚拟化技术:http://detail.zol.com.cn/1257/1257000/param.shtml
可以看到,是支持的。
2. 部署kvm虚拟环境【类似于vmware】
①检查vmware虚拟机的cpu是否支持虚拟化,这里要勾上。
[root@server ~]# cat /proc/cpuinfo |grep vmx
②安装kvm虚拟化服务
# 安装虚拟化服务及其管理工具
yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y
# qemu-kvm kvm主程序,kvm虚拟化模块
# virt-manager kvm图形化管理工具
# libvirt 虚拟化服务
# libguestfs-tools 虚拟机的系统管理工具
# virt-install # 安装虚拟机的实用工具、
# libvirt-python # python调用libvirt虚拟化服务的api接口库文件
# 开启虚拟化服务,并设置开机自启
[root@server ~]# systemctl start libvirtd
[root@server ~]# systemctl enable libvirtd
[root@server ~]# systemctl is-enabled libvirtd
enabled
# 查看是否正确加载kvm模块
[root@server ~]# lsmod | grep kvm
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
③使用virt-manager虚拟系统管理器
# 查看是否支持中文
[root@server ~]# echo $LANG
zh_CN.UTF-8
3. 配置kvm网络桥接功能
# 安装桥设备工具
[root@server ~]# yum install -y bridge-utils
[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# ls ifcfg-*
ifcfg-ens32 ifcfg-lo
[root@server network-scripts]# cp ifcfg-ens32 ifcfg-br0
[root@server network-scripts]# vim ifcfg-ens32 # 使用桥设备上网
BRIDGE="br0" # 最后一行加上这句,ens32绑定到桥接设备br0上,如果ens32配置的是静态IP地址,还需要把网络配置信息删除掉。即IP地址、子网掩码、网关地址、DNS去掉。
[root@server network-scripts]# vim ifcfg-br0 # 桥设备有IP地址,可以正常上网
# 清空原来的内容
DEVICE="br0"
NM_CONTROLLED="yes"
BOOTPROTO=none # 如果是dhcp,最后四个元素要去掉。
ONBOOT=yes
TYPE="Bridge"
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=192.168.10.1
[root@server network-scripts]# systemctl restart network
# 可以看到,桥设备br0已经建立,绑定在桥设备上的网卡有ens32。
4. 创建kvm虚拟机
①挂载磁盘设备,用于存放kvm虚拟机的镜像文件。
# 可以直接使用磁盘设备/dev/sdb,也可以使用其分区
[root@server ~]# ls /dev/sdb
/dev/sdb
[root@server ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 临时挂载/dev/sdb,这里挂载到kvm默认镜像文件下
[root@server ~]# mount /dev/sdb /var/lib/libvirt/images/
[root@server ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 8.0G 4.4G 3.7G 55% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 378M 24K 378M 1% /run/user/0
/dev/sdb 50G 33M 50G 1% /var/lib/libvirt/images
# 永久挂载磁盘设备/dev/sdb
[root@server ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="b8997424-a9b0-4391-b323-46af89abcf4b" TYPE="xfs"
[root@server ~]# vim /etc/fstab
UUID=b8997424-a9b0-4391-b323-46af89abcf4b /var/lib/libvirt/images xfs defaults 0 0
[root@server ~]# mount -a
②上传centos7镜像
# 该目录为kvm默认存放镜像的目录
[root@server ~]# ls /var/lib/libvirt/images/
[root@server ~]# cd /var/lib/libvirt/images/
[root@server images]# ll
总用量 0
[root@server images]# rz
[root@server images]# ll
总用量 286720
-rw-r--r--. 1 root root 293601280 6月 20 07:49 CentOS-7-x86_64-DVD-1810.iso
③创建虚拟机
[root@server ~]# virt-manager
新建虚拟机:
选择安装方式:
选择镜像:
配置内存和cpu:
配置磁盘空间:
设置虚拟机名称:
开始安装:
这里是最小化安装的镜像:
后续的安装,和vmware上装虚拟机一致,这里不多介绍。
5. 配置kvm虚拟机上网
①激活网卡:ONBOOT设置为yes
②重启网络服务并查看ip地址
③使用xshell连接kvm虚拟机
重启vmware虚拟机,由于已经设置了kvm虚拟机开机自启,故重启vmware虚拟机后会自动启动kvm虚拟机,无需手动启动。
6. kvm虚拟机常用命令
# 列出正在运行的kvm虚拟机
[root@server ~]# virsh list
Id 名称 状态
----------------------------------------------------
3 centos7-kvm running
# 列出所有的kvm虚拟机,包括已关闭的
[root@server ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
3 centos7-kvm running
# 关闭虚拟机
[root@server ~]# virsh shutdown centos7-kvm
域 centos7-kvm 被关闭
# 开启虚拟机
[root@server ~]# virsh start centos7-kvm
域 centos7-kvm 已开始
# 自动启动虚拟机
[root@server ~]# virsh autostart centos7-kvm
域 centos7-kvm标记为自动开始
如果遇到centos6
使用virsh shutdown
命令无法关闭虚拟机,可能是因为kvm虚拟机最小化安装centos6系统时默认没有安装acpid服务,所以不会处理shutdown发来的关机信号,需要手动安装并启动acpid服务。
安装步骤:
①配置网络
②配置yum源
③使用yum安装acpid服务【yum install -y acpid
】
④启动acpid服务【安装后默认开机自启】