安装KVM虚拟机
开机后查看CPU是否支持全虚拟化
1、查看CPU是否支持硬件虚拟化技术。 CPU要支持
例:
查看自己的CPU是否支持全虚拟化虚拟化技术且是64位的
Intel:cat /proc/cpuinfo | grep --color vmx
AMD :cat /proc/cpuinfo | grep --color svm
看看flag有没有上面的vmx或者是svm,有的话就是支持全虚拟化技术
[root@zmedu63 Desktop]# cat /proc/cpuinfo | grep --color vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
注:如果,看不到vmx,是因为 VMware的 CPU没有开启 VT 技术
1.2.2 安装KVM:
(1).安装KVM模块、管理工具和libvirt,命令行安装:
[root@zmedu63 ~]#
yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y
注:使用系统镜像,先配置好yum本地源
注:
qemu-kvm : kvm主程序, KVM虚拟化模块
virt-manager: KVM图形化管理工具
libvirt: 虚拟化服务
libguestfs-tools : 虚拟机的系统管理工具
virt-install : 安装虚拟机的实用工具 。比如 virt-clone克隆工具就是这个包安装的
libvirt-python : python调用libvirt虚拟化服务的api接口库文件
扩展查看软件包的作用:
方法1:[root@zmedu63 ~]# yum info libguestfs-tools
方法2:
[root@zmedu63 Packages]# rpm -pqi libguestfs-tools-c-1.36.3-6.el7.x86_64.rpm
Summary : System administration tools for virtual machines
1.2.3 查看安装完KVM后的服务:
[root@zmedu63 ~]# systemctl start libvirtd #开启虚拟化服务
[root@zmedu63 ~]# systemctl enable libvirtd #设置libvirtd服务开机启动
[root@zmedu63 ~]# systemctl is-enabled libvirtd #查看是不是开机启动
enabled
确定正确加载kvm 模块
[root@zmedu63 ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
检查 KVM 模块是否成功安装
1.2.4 使用命令:virt-manager 建立虚拟机,
将kvm管理工具从英文界面,切换成中文界面:
[root@zmedu63 ~]# echo $LANG
en_US.UTF-8
[root@zmedu63 ~]# LANG=‘zh_CN.UTF-8’
[root@zmedu63 ~]# virt-manager
注:如果你物理机系统是最小化安装的,没有图形界面,那么virt-manager命令是无法调出图形界面的。需要执行以下命令,来安装图形界面。
[root@zmedu63 ~]# yum group list
[root@zmedu63 ~]# yum group install “Server with GUI”
[root@zmedu63 ~]# reboot
方法1:手动创建网桥设备
安装桥设备工具:
[root@zmedu63 ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-9.el6.x86_64.rpm
把ens33绑到br0桥设备上:
[root@zmedu63 ~]# cd /etc/sysconfig/network-scripts/
[root@zmedu63 network-scripts]# cp ifcfg-ens33 /tmp/ #备份一下ens33
[root@zmedu63 network-scripts]# vim ifcfg-ens33 #编辑配置文件为以下内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c713acec-674b-411d-9e61-646482a292ca
DEVICE=ens33
IPADDR=192.168.1.63 #这些蓝色内容接下来,需要删除
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.106.46.151
ONBOOT=yes
IPV6_PRIVACY=no
PEERDNS=no
BRIDGE=“br0” #在文件最后插入这一行
生成桥设备的配置文件:
[root@zmedu63 network-scripts]# vim ifcfg-br0 #创建ifcfg-br0 文件,并写入以下内容
DEVICE=“br0”
NM_CONTROLLED=“yes”
ONBOOT=“yes”
TYPE=“Bridge”
BOOTPROTO=none
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
注:TYPE=“Bridge” , B要大写
[root@zmedu63 network-scripts]# service network restart
方法2:使用virsh命令配置网桥
使用virsh命令配置网桥很方便,但br0上不会自动配置DNS,如果需要虚拟机上网需要自己添加DNS,过程如下:
[root@zmedu63 ~]# rpm -qf /usr/bin/virsh #查看virsh是属于哪个rpm包
libvirt-client-3.9.0-14.el7_5.7.x86_64
[root@zmedu63 ~]# virsh iface-bridge ens33 br0 --no-stp
注:iface-bridge ens33 br0 网卡接口名 新建网桥名
[root@zmedu63 ~]# echo ‘DNS1=8.8.8.8’ >> /etc/sysconfig/network-scripts/ifcfg-br0
[root@zmedu63 ~]# systemctl restart network.service
测试br0:
root@zmedu63 network-scripts]# ifconfig
[root@zmedu63 network-scripts]# ping g.cn
PING g.cn (203.208.37.20) 56(84) bytes of data.
64 bytes from 203.208.37.20: icmp_seq=1 ttl=57 time=12.3 ms
实战2:创建一台KVM虚拟机
1.4.1 创建一个分区,用于存放安装好的Linux操作系统:
[root@zmedu63 ~]# fdisk /dev/sdb #创建sdb1,大小20G
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe2316600.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
Using default value 2610
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
格式化,挂载使用
[root@zmedu63 network-scripts]# mkfs.xfs /dev/sdb1
[root@zmedu63 network-scripts]#mount /dev/sdb1 /var/lib/libvirt/images/ #kvm中虚拟机磁盘镜像的路径
注:准备系统镜像:把centos7.5镜像上传到/var/lib/libvirt/images/目录下。
[root@zmedu63 ~]# virt-manager
[root@zmedu63 ~]# virsh list #列出在运行的虚拟机
[root@zmedu63 ~]# virsh start centos7.0 #启动centos7.0虚拟机
[root@zmedu63 ~]# virsh shutdown centos7.0 #关闭centos7.0虚拟机
[root@zmedu63 ~]# virsh autostart centos7.0 #设置centos7.0虚拟机为物理机开机后,自动启动
设为开机启动kvm中centos7.0虚拟机,但是reboot物理机后,没有启动。
解决:
[root@zmedu63 ~]# chkconfig --list libvirtd #开机启动了
libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@zmedu63 ~]# vim /etc/fstab #记得设置开机自动挂载sdb1,不然后开机启动不了虚拟机
/dev/sdb1 /var/lib/libvirt/images xfs defaults 0 0
1、给KVM虚拟机配置个IP
安装
配置网卡IP地址:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=“ens33”
HWADDR=“52:54:00:95:89:DE”
IPADDR=192.168.1.71
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
NM_CONTROLLED=“yes”
ONBOOT=“yes”
[root@localhost ~]# service network restart #启动网卡
在zmedu63上搭建一个基于http协议yum源服务
[root@zmedu63 ~]# yum install httpd -y
[root@zmedu63 ~]# service httpd start
[root@zmedu63 ~]# mount /dev/cdrom /var/www/html/
配置kvm 虚拟机rhel6-71 的yum源
[root@zmedu63 ~]# ssh 192.168.1.71
[root@localhost ~ ]# cd /etc/yum.repos.d
[root@localhost ~ ]# vi rhel6.repo # 写入以下内容
[rhel6]
name= rhel6
baseurl=http://192.168.1.63/
#baseurl=file:///mnt/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@localhost ~ ]#rm -rf rhel-source.repo #删除多余的yum源配置文件
[root@localhost ~ ]# setenforce 0 #关闭selinux
[root@localhost ~ ]#iptables -F #关闭防火墙
在kvm 虚拟机rhel6-71安装 acpid服务
[root@localhost yum.repos.d]# yum install acpid -y
[root@localhost yum.repos.d]# service acpid start //启动acpic服务,
[root@localhost yum.repos.d]# chkconfig --list acpid
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off //安装后默认会加入到开机启动的
在zmedu63 KVM真机上测试:
[root@zmedu63 ~]# virsh shutdown rhel6-71 #关闭rhel6-71虚拟机
总结:
1.1 虚拟化产品对比介绍
1.2 安装KVM虚拟机
1.3 实战1:配置KVM网络桥接功能
1.4 实战2:使用KVM安装虚拟机
1.5 实战3:解决centos6下shutdown关不了KVM虚拟机的问题