安装KVM
查看CPU是否支持硬件虚拟化技术。 CPU要支持全虚拟化虚拟化技术且是64位的
Intel:cat /proc/cpuinfo | grep –color vmx
AMD :cat /proc/cpuinfo | grep –color svm
看看flag有没有上面的vmx戒者是svm,有的话就是支持全虚拟化技术
cat /proc/cpuinfo | grep –color lm 是否支持64位
[[email protected] ~]# cat /proc/cpuinfo |grep --color lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
[[email protected] ~]# cat /proc/cpuinfo |grep --color vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
如果,看不到vmx,是因为 VM CPU没有开启 VT 技术
安装KVM模块、管理工具和libvirt
kvm : KVM虚拟化模块
virt-manager: KVM图形化管理工具
libvirt: 虚拟化服务
[[email protected] ~]# yum install -y kvm virt-manager libvirt
......省略
Installed:
libvirt.x86_64 0:0.10.2-29.el6 qemu-kvm.x86_64 2:0.12.1.2-2.415.el6 virt-manager.x86_64 0:0.9.0-19.el6
Dependency Installed:
augeas-libs.x86_64 0:1.0.0-5.el6 celt051.x86_64 0:0.5.1.3-0.el6 cyrus-sasl-md5.x86_64 0:2.1.23-13.el6_3.1
ebtables.x86_64 0:2.0.9-6.el6 glusterfs-api.x86_64 0:3.4.0.36rhs-1.el6 glusterfs-libs.x86_64 0:3.4.0.36rhs-1.el6
gnutls-utils.x86_64 0:2.8.5-10.el6_4.2 gpxe-roms-qemu.noarch 0:0.9.7-6.10.el6 gtk-vnc.x86_64 0:0.3.10-3.el6
gtk-vnc-python.x86_64 0:0.3.10-3.el6 iscsi-initiator-utils.x86_64 0:6.2.0.873-10.el6 libcacard.x86_64 0:0.15.0-2.el6
libcgroup.x86_64 0:0.40.rc1-5.el6 libvirt-client.x86_64 0:0.10.2-29.el6 libvirt-python.x86_64 0:0.10.2-29.el6
lzop.x86_64 0:1.02-0.9.rc1.el6 nc.x86_64 0:1.84-22.el6 netcf-libs.x86_64 0:0.1.9-4.el6
numad.x86_64 0:0.5-9.20130814git.el6 python-virtinst.noarch 0:0.600.0-18.el6 qemu-img.x86_64 2:0.12.1.2-2.415.el6
radvd.x86_64 0:1.6-1.el6 seabios.x86_64 0:0.6.1.2-28.el6 sgabios-bin.noarch 0:0-0.3.20110621svn.el6
spice-glib.x86_64 0:0.20-11.el6 spice-gtk.x86_64 0:0.20-11.el6 spice-gtk-python.x86_64 0:0.20-11.el6
spice-server.x86_64 0:0.12.4-6.el6 usbredir.x86_64 0:0.5.1-1.el6 vgabios.noarch 0:0.6b-3.7.el6
yajl.x86_64 0:1.0.7-3.el6
Complete!
注:使用系统镜像,先配置好yum 本地源
启动KVM服务并设为开机自启
[[email protected] ~]# service libvirtd start
Starting libvirtd daemon: 2017-02-21 19:57:58.972+0000: 37536: info : libvirt version: 0.10.2, package: 29.el6 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2013-10-09-06:25:35, x86-026.build.eng.bos.redhat.com)
2017-02-21 19:57:58.972+0000: 37536: warning : virGetHostname:2294 : getaddrinfo failed for 'sxooky': Name or service not known
[ OK ]
[[email protected] ~]# chkconfig libvirtd on
确定正确加载kvm 模块
[[email protected] ~]# lsmod |grep kvm
kvm_intel 54285 0
kvm 333172 1 kvm_intel
检查 KVM 模块是否成功安装
检查KVM 是否成功安装可以使用virsh命令检查虚拟机的状态
[[email protected] ~]# virsh list
Id Name State
----------------------------------------------------
使用命令:virt-manager 建立虚拟机, 将kvm管理工具从英文界面,切换成中文界面
[[email protected] ~]# echo $LANG
en_US.UTF-8
[[email protected] ~]#
[[email protected] ~]# echo $LANG
zh_CN.UTF-8
执行virt-manager后,弹出如下界面
右击localhost(QEMU)后,点击“新建”就可以跟据向导,安装一个新的虚拟机了。
注:这里先丌安装Linux虚拟机。
扩展:
下载linux版本的vmware
https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-11.1.2-2780 323.x86_64.bundle
安装:
[[email protected] ~]# hmod 755 VMware-Workstation-Full-11.1.2-2780323.x86_64.bundle [[email protected]~]# /VMware-Workstation-Full-11.1.2-2780323.x86_64.bundle
实战1:配置KVM桥接功能
网桥介绍: 我们经常所说的Bridge设备其实就是网桥设备,也就相当于现在的二层交换机,用于连接同一 网段内的所有机器,所以我们的目的就是将网络设备 eth0 添加到 br0,此时 br0 就成为了所谓的交换机 设备,我们物理机的eth0也是连接在上面的。
添加桥接设备br0: 相当于一个二层交换机
安装桥接软件包
[[email protected] ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-10.el6.x86_64.rpm
warning: /mnt/Packages/bridge-utils-1.2-10.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
网卡配置修改eth0
[[email protected] network-scripts]# vim ifcfg-eth0
[[email protected] network-scripts]# cat !$
cat ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:34:3b:d3
TYPE=Ethernet
UUID=48a80b39-84e0-4cbf-bedc-c97dd1340048
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
#IPADDR=192.168.1.51
#NETMASK=255.255.255.0
#GATEWAY=192.168.1.1
#DNS1=8.8.8.8
BRIDGE="br0"
创建桥接配置文件
[[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-br0
[[email protected] network-scripts]# vim ifcfg-br0
[[email protected] network-scripts]# cat !$
cat ifcfg-br0
DEVICE=br0
TYPE="Bridge"
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
IPADDR=192.168.1.51
GATEWAY=192.168.1.1
PREFIX=24
DNS1=8.8.8.8
注:TYPE=”Bridge”,B要大写。
[[email protected] network-scripts]# /etc/init.d/network restart
Shutting down interface br0: [ OK ]
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface br0: Determining if ip address 192.168.1.51 is already in use for device br0...
[ OK ]
测试br0
[[email protected] network-scripts]# ifconfig
br0 Link encap:Ethernet HWaddr 00:0C:29:34:3B:D3
inet addr:192.168.1.51 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe34:3bd3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:984 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:48543 (47.4 KiB) TX bytes:3446 (3.3 KiB)
eth0 Link encap:Ethernet HWaddr 00:0C:29:34:3B:D3
inet6 addr: fe80::20c:29ff:fe34:3bd3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:224243 errors:0 dropped:0 overruns:0 frame:0
TX packets:162118 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26322149 (25.1 MiB) TX bytes:37133229 (35.4 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:52913 errors:0 dropped:0 overruns:0 frame:0
TX packets:52913 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:31947192 (30.4 MiB) TX bytes:31947192 (30.4 MiB)
virbr0 Link encap:Ethernet HWaddr 52:54:00:C5:29:6C
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[[email protected] network-scripts]# /etc/init.d/NetworkManager status
NetworkManager is stopped
[[email protected] network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29343bd3 no eth0
virbr0 8000.525400c5296c yes virbr0-nic
实战2:创建一台KVM虚拟机
创建一个分区,用于存放安装好的Linux操作系统
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
root vg_rhel -wi-ao---- 10.00g
swap vg_rhel -wi-ao---- 1.00g
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_rhel 1 2 0 wz--n- 19.56g 8.56g
[[email protected] ~]# lvcreate -n kvm -L 8G vg_rhel
Logical volume "kvm" created
格式化分区,并挂载使用
[[email protected] ~]# mkfs.ext4 /dev/mapper/vg_rhel-kvm
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[[email protected] ~]# mount /dev/mapper/vg_rhel-kvm / var/lib/libvirt/images/ #安装虚拟机, 默认存放的路径
[[email protected] ~]# df -h |tail -1
/dev/mapper/vg_rhel-kvm 7.9G 146M 7.4G 2% /var/lib/libvirt/images
创建KVM虚拟机
[root@sxooky ~]# virt-manager
准备系统镜像:这里直接使用VMware光驱中的镜像
点“Finish”到此创建好一个新的KVM虚拟机了。
实战3:解决shutdown关不了KVM虚拟机的问题
在安装好的KVM的Linux虚拟机中安装并启劢acpi服务 virsh shutdown命令通过发送acpi指令来控制虚拟机的电源, 而kvm虚拟机安装linux系统时默认是没有安装acpi服务的,所以并丌会做处理。
解决方法:只需要在虚拟机里安装并启动acpid服务即可,执行命令如下:
[[email protected] ~]# yum install acpid -y
[[email protected] ~]# service acpid start #启动acpic服务
[[email protected] yum.repos.d]# chkconfig --list acpid acpid
0:off 1:off 2:on 3:on 4:on 5:on 6:off ##安装后默认会加入到开机启动中的
1、本地YUM源的配置方法
方法一:自动连接宿主机sxooky的CD/DVD光驱
配置基本环境,关闭KVM虚拟主机
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="52:54:00:95:89:DE"
IPADDR=192.168.1.201
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
NM_CONTROLLED="yes"
ONBOOT="yes"
[[email protected] ~]# service network restart #启动网卡
[[email protected] ~]# cat /etc/yum.repos.d/rhel.repo
[rhel-source]
name=rhel6.5 cdrom
baseurl=file:///mnt
enabled=1
gpgcheck=0
[[email protected] ~]# sed -n '/^SELINUX=/p' /etc/sysconfig/selinux
SELINUX=disabled
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# chkconfig --list iptables
iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[[email protected] ~]# init 0
KVM宿主机sxooky修改KVM虚拟机配置文件
[[email protected] qemu]# vim kvm_shenxiang01.xml
35 <disk type='block' device='cdrom'>
36 <driver name='qemu' type='raw'/>
37 <source dev="/dev/sr0"/> #插入这条信息
38 <target dev='hdc' bus='ide'/>
39 <readonly/>
40 <address type='drive' controller='0' bus='1' target='0' unit='0'/>
重新载入配置文件,登陆KVM虚拟机查看
[[email protected] qemu]# virsh create kvm_shenxiang01.xml
域 kvm_shenxiang01 被创建(从 kvm_shenxiang01.xml)
方法二:在宿主机sxooky上搭建yum源服务
[[email protected] ~]# yum install httpd -y
[[email protected] ~]# service httpd start
[[email protected] ~]# mount /dev/cdrom /var/www/html/
配置kvm 虚拟机rhel6-71 的yum源
[[email protected] ~]# cat /etc/yum.repos.d/rhel.repo
[rhel-source]
name=rhel6.5 cdrom
#baseurl=file:///mnt #方法一
baseurl=http://192.168.1.51/ #方法二:修改为此内容
enabled=1
gpgcheck=0
2、在kvm 虚拟机kvm_shenxiang01安装acpid服务
[[email protected] ~]# yum install -y acpid
[[email protected] ~]# service acpid start #启动acpic服务
[[email protected] yum.repos.d]# chkconfig --list acpid acpid
0:off 1:off 2:on 3:on 4:on 5:on 6:off #安装后默认会加入到开机启劢的
3、在KVM宿主机sxooky真机上测试
[[email protected] ~]# virsh list
Id 名称 状态
----------------------------------------------------
19 kvm_shenxiang01 running
[[email protected] ~]# virsh shutdown kvm_shenxiang01 #关闭kvm_shenxiang01虚拟机
域 kvm_shenxiang01 被关闭
[[email protected] ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- kvm_shenxiang01 关闭
[[email protected] ~]# virsh autostart kvm_shenxiang01 #设置 vm1为物理机开机后,自动启动
域 kvm_shenxiang01标记为自动开始
系统安装出现的几个问题
Kvm通过virt-manager远程管理guestos时键盘错乱
命令行方式
关闭要调整的虚拟机,编辑虚拟机配置文件
#virsh edit ‘your vm name’
找到配置文件中的以下字段
<graphics type=’vnc’ port=’-1’/>
加入键盘的语言布局后如下
<graphics type=’vnc’ port=’-1′ keymap=’en-us’/>
保存退出后,重新载入虚拟机配置文件
#virsh create /etc/libvirt/qemu/’your vm name’.xml
如果要避免这种情况,在使用virt-install安装的时候,就加入键盘布局的字段
–keymap=en-us
virt-manager方式
在虚拟关闭的状态下,通过virt-manager界面选中相应的虚拟机
Open(打开)–>View(查看)–>Details(详情)–>Display VNC(显示VNC)–>keymap–>en-us
保存后再启动虚拟机就可以了
光盘安装 —— 注意
Open(打开)–>View(查看)–>Details(详情)–> IDE cdrom1 ()–>disconnect(连接状态)
linux 内核启动错误和selinux参数
Kernel panic -not syncing:Attempted to kill init
解决办法
进入单用户模式(关闭selinux)
在linux启动界面出现时,按f2进入如下界面
输入“e”
选择Kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/luks-e885a2 再次输入“e”
在rhgb quiet 后面加上 selinux=0 <回车键>
输入“b”在重新进入系统,就OK了。
出现问题原因
Swap分区:我没有使用swap分区,由于在安装SELinux时候会消耗很多内存,内存不够用时,会使用swap分区,如果没有swap分区的话就会出现上图所示,如果分了swap分区太小,一样出现这种情况,因此,swap分区还是很有必要的。至少解决了我的问题。
KVM虚拟机常用命令
[[email protected] ~]# virsh list #只显示运行中的虚拟机Id名称
Id 名称 状态
----------------------------------------------------
12 kvm_shenxiang01 running
[[email protected] ~]# virsh list –all #显示所有的虚拟,包括关闭状态的虚拟机
Id 名称 状态
----------------------------------------------------
12 kvm_shenxiang01 running
[[email protected] ~]# virsh shutdown kvm_shenxiang01 #关闭KVM虚拟机kvm_shenxiang01
域 kvm_shenxiang01 被关闭
版权声明:本文为CSDN博主「weixin_34242658」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34242658/article/details/92387023