深度实践KVM:核心技术、管理运维、性能优化与项目实施
上QQ阅读APP看书,第一时间看更新

第2章 开始自己的第一台虚拟机

通过第1章对KVM的发展历史、架构及应用场景的介绍,读者对KVM技术有了初步的了解和认识。本章将介绍如何创建一台KVM虚拟机、操作步骤及要点。对于熟悉或者使用过KVM虚拟化的读者,本章内容可以快速阅读或者跳过。

2.1 服务器BIOS设置

KVM的使用必须有硬件虚拟化支持,所以需要打开CPU的硬件虚拟化特性。对于大多数服务器,如Dell、HP、IBM、浪潮、联想、华为等,在开机启动的第一个画面都会有一些提示的按键,图2-1所示是Dell R610开机启动的第一个画面。

图2-1 Dell R610开机启动的第一个画面

该界面提供了如下几个选项:

❑按F2键进入System Setup,进去之后可以进行一些BIOS相关的配置。

❑按F10键进入System Services,进去之后可以配置一些系统服务,主要用于服务器的配置和检测。

❑按F11键进入BIOS Boot Manager,进入之后可以选择启动介质,比如从硬盘启动、虚拟DVD设备、USB设备,等等。

❑按F12键进入PXE,进入之后启动网络引导。

提示

不同的厂商服务器,功能键的定义会有一些差别,可以根据提示来操作。

在安装KVM虚拟化之前,需要先确认CPU虚拟化支持是否开启。在如图2-1所示的服务器开机界面中按F2键,然后进入BIOS配置,选择Processor Setting,按Enter键进入子菜单,其中一项Virtualization Technology必须配置为Enabled(选择菜单项,按方向键右键可更改配置),如图2-2所示。

图2-2 开启CPU虚拟化支持

提示

不同厂商的服务器,CPU Virtualization Technology开关的位置会有些差别,一般都在处理器配置菜单之下。近年来服务器上的CPU一般都支持CPU虚拟化,在系统中可以执行egrep '(vmx|svm)' /prov/CPUinfo 命令查看,如果有输出内容,说明CPU是支持虚拟化的。

2.2 宿主机CentOS6.5、CentOS7系统安装与配置技巧

通过2.1节的配置,已经打开了服务器CPU对虚拟化的支持,下面开始安装宿主机的操作系统。CentOS6.x是目前使用比较多的宿主机操作系统版本,当前最新版本是CentOS6.6。CentOS 7从系统跨度来说,是CentOS的一个大版本升级,其中主要包括内核版本的跨越。CentOS6.x系列使用的是2.6.32.x的内核,CentOS7.x则使用3.10.x的内核。

1.CentOS6.5宿主机系统安装及配置

在生产环境中,安装CentOS 6.5系统的宿主机,笔者采用pxe方式来完成批量的宿主机部署。pxe配置过程的资料很多,本书就不做详细介绍了,下面分享一个宿主机安装kickstart文件的内容,是笔者实际在生产环境中使用的。

# Kickstart file automatically generated by anaconda
# 系统安装自动生成的kickstart文件
install
url --url=http://10.10.10.1/system/CentOS6564
# 指定安装镜像的目录,可以将不同的系统放在不同的目录,这样可以完成多个系统安装
lang en_US.UTF-8
# 宿主机建议使用英文
keyboard us
network --onboot yes --device eth0 --mtu=1500 --bootproto dhcp
network --onboot yes --device eth1 --noipv4 --noipv6
# 设置网络,笔者装机的时候,一般第一个网卡使用dhcp分配IP,第二个网卡关闭。读者可以根据自己的
  实际情况进行修改
rootpw cEmXc2pkKets   #配置系统密码
text
reboot
# 文本方式安装,安装后重启
firewall --disabled
authconfig --useshadow --passalgo=sha512
# 用户密码加密seLinux --disabled #关闭SELinux
##################################################
# Installation logging level
logging --level=info
# Do not configure the X Window System
skipx
##################################################
timezone Asia/Shanghai #配置时区
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --all --initlabel #清除硬盘数据,并创建相应分区
part /boot --fstype ext3 --size=256
part pv.3 --size=40960
part pv.4 --size=100 --grow
volgroup datavg --pesize=32768 pv.4
volgroup KVMvg --pesize=32768 pv.3
logvol /datapool --fstype ext4 --name=datapool --vgname=datavg --size=10240--grow #此处创建了一个目录,用于存放虚拟机,笔者习惯的目录是/datapool
logvol swap --fstype swap --name=swap --vgname=KVMvg --size=8192
logvol / --fstype ext4 --name=root --vgname=KVMvg --size=30720
%packages
# 安装虚拟化需要的包,主要有:
@virtualization
@Base
@Core
@additional-devel
@base
@large-systems
@storage-client-iscsi
@system-management-snmp
@virtualization
@virtualization-client
@virtualization-platform
@virtualization-tools
#####################################################
%end

使用上面的kickstart配置文件安装完宿主机系统,可以通过rpm -q命令检查一下具体安装了哪些包。

[root@localhost ~]# rpm -qa|grep -E 'qemu|libvirt|virt'
libvirt-client-0.10.2-29.el6.x86_64
#Libvirt的客户端,最重要的功能之一就是就在宿主机关机时可以通知虚拟机也关机,
#使虚拟机系统正常关机,而不是被强制关机,造成数据丢失
gpxe-roms-qemu-0.9.7-6.10.el6.noarch #虚拟机iPXE的启动固件,支持虚拟机从网络启动
libvirt-python-0.10.2-29.el6.x86_64   #libvirt为Python提供的API
python-virtinst-0.600.0-18.el6.noarch #一套Python的虚拟机安装工具
qemu-KVM-0.12.1.2-2.415.el6.x86_64 #KVM在用户空间运行的程序
Virt-manager-0.9.0-19.el6.x86_64 #基于 Libvirt 的图像化虚拟机管理软件
libvirt-0.10.2-29.el6.x86_64   #用于管理虚拟机,它提供了一套虚拟机操作API
virt-viewer-0.5.6-8.el6.x86_64 #显示虚拟机的控制台console
virt-top-1.0.4-3.15.el6.x86_64 #类似于top命令,查看虚拟机的资源使用情况
virt-what-1.11-1.2.el6.x86_64 #在虚拟机内部执行,查看虚拟机运行的虚拟化平台
qemu-img-0.12.1.2-2.415.el6.x86_64 #用于操作虚拟机硬盘镜像的创建、查看和格式转化

在KVM环境中,以上rpm包都是必需的。读者可以检查当前系统里面是否已经安装rpm,如果没有,可使用“yum install组件名称”命令直接安装。

2.CentOS7宿主机系统安装及配置

CentOS 7宿主机的安装与CentOS 6的系统安装方式类似,系统安装完之后,确认已经安装了如下的rpm相关包。Libvirt还包含了很多工具的库,可以使用yum install libvirt*命令安装。

[root@KVM-host-CentOS7 ~]# rpm -qa|grep -E 'qemu-img|libvirt-[0-9]|virt-install'
qemu-img-1.5.3-60.el7_0.10.x86_64
virt-install-0.10.0-20.el7.noarch
libvirt-1.1.1-29.el7_0.3.x86_64
[root@KVM-host-CentOS7 ~]# lsmod |grep KVM #查看KVM模块是否载入
KVM_intel 138567 6
KVM 441119 1 KVM_intel

Libvirt及guestfish相关的工具在平时的运维过程中经常会用到,建议使用yum install libguest*libvirt*命令安装。

2.3 第一台虚拟机安装

本节介绍如何开始安装第一台虚拟机。首先需要新建一台虚拟机,然后通过诸如物理机安装的方式为虚拟机安装操作系统。但是一般不会使用pxe、cobbler等网络引导方式安装,因为这样安装虚拟机系统太慢了。虚拟化相比于物理机,其中一个优势就是创建快速。所以,一般都会使用ISO镜像文件安装第一台虚拟机,然后将这台虚拟机做成虚拟机模板,之后的虚拟机都是由这个模板生成的。后面第16章会详细介绍虚拟机模板的创建。本节将介绍两个KVM虚拟化中常用的管理工具,用它们来创建虚拟机。

提示

模板的概念在虚拟化中非常重要,实际上绝大多数虚拟机都是通过模板克隆出来的,而不是像物理机那样安装出来的。有的云管理平台还有镜像市场的概念,就像应用商店,可以上传、下载各种模板。

1.Virt-Manager使用介绍

Virt-Manager是一个图形化的虚拟机管理工具,它提供了一个简易的虚拟机操作界面。要使用它,需要先安装图形化界面,下面以CentOS6.5系统为例,需要安装如下组件。

[root@KVM-host ~]#yum groupinstall -y "Desktop" "Desktop Platform" "Desktop
Platform Development" "Fonts" "General Purpose Desktop" "Graphical Administration
Tools" "Graphics Creation Tools" "Input Methods" "X Window System" "Chinese Support
[zh]" "Internet Browser"

一般来说,服务器都是在IDC机房中的,为了看到宿主机的图形化界面,还需要安装配置VNC。

[root@KVM-host ~]#yum install -y tigervnc
[root@KVM-host ~]#yum install -y tigervnc-server
<!-- 安装VNC程序软件包tigervnc和tigervnc-server -->
[root@KVM-host ~]#vim /etc/sysconfig/vncservers
VNCSERVERS="1:root" #配置宿主机VNC虚拟机显示器为1,端口是5901
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
#虚拟机显示器[2] 监听的IP是0.0.0.0,虚拟显示器[1]监听127.0.0.1,屏幕分辨率为800×600
[root@KVM-host ~]# vncpasswd #设置VNC密码
Password:
Verify:
[root@KVM-host ~]# service vncserver restart #启动vnc-server
Shutting down VNC server:                                              [ OK ]
Starting VNC server: 1:root xauth: creating new authority file /root/.Xauthority
New 'whcq-netinst-121:1 (root)' desktop is KVM-host:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/ KVM-host:1.log
                        [ OK ]

配置完成之后,使用VNC Viewer登录宿主机的图形界面,在VNC Server组合框中输入宿主机的“IP:端口”,端口是之前配置的,本例中输入192.168.106.221:5901,如图2-3所示。

提示

VNC Viewer使用中,有时候会出现VNC Viewer界面闪退,可以通过修改网络速度解决这个问题。在如图2-4所示的位置,取消勾选该复选框,调节滑块到Best quality。

图2-3 使用VNC Viewer登录宿主机图形界面

图2-4 VNC Viewer配置网络速率

VNC Viewer配置完成之后,回到图2-3所示的界面,单击Connect按钮,出现如图2-5所示界面,提示输入密码,此处的密码是之前通过vncpasswd命令设置的VNC Server密码。

图2-5 VNC Viewer登录界面

输入正确密码之后,应该就可以登录成功了,出现如图2-6所示界面。

图2-6 宿主机VNC登录之后界面

在菜单中,选择Applications菜单中的System Tools子菜单,选择打开Virtual Machine Manager,如图2-7所示。其中列出了当前宿主机上所有的虚拟机,并显示了简单的CPU利用率信息。在图形界面中可以对虚拟化做常规操作,如创建、删除、编辑、配置及查看远程终端等。

图2-7 Virtual Machine Manager界面

2.virt-install命令使用介绍

virt-install是一个在命令行创建KVM虚拟机的工具,使用virt-install配合一些配置参数,最终可以生成一个完整的.xml虚拟机配置文件。

#virt-install --name=testvm --ram=2048 --vCPUs=4 --os-type=Windows --hvm
--cdrom=/root/W2003cnent.iso --file=/root/SDG100.img --file-size=10
--bridge=br0 --vnc --vncport=5920

参数说明如下。

❑--name:设置虚拟机名称。

❑--ram:配置虚拟机内存,单位是MB。

❑--vCPUs:配置CPU个数。

❑--hvm:配置使用全虚拟化。

❑--os-type:指定操作系统类型,如Linux、Windows。

❑--cdrom:使用cdrom安装系统,指定ISO位置。

❑--file:设置虚拟机硬盘文件路径。

❑--file-size:配置虚拟机硬盘文件大小,单位是GB。

❑--bridge:配置桥接的网卡。

❑--vnc:打开VNC支持。

❑--vncport:配置VNC端口。

执行上述命令之后,virt-install会创建一台名为testvm的虚拟机,并使用W2003cnent. iso镜像文件安装系统。此时使用VNC Viewer,在VNC Server中输入宿主机ip:vncport,便可登录虚拟机的控制台,此时虚拟机开始从ISO引导,安装虚拟机系统的步骤和安装普通服务器系统是一样的,这里就不详述了。

3.Windows虚拟机安装注意事项

第一次安装Windows虚拟机的时候,经常会碰到以下几个问题。

(1)qcow2格式的磁盘如何操作

Virt-Manager默认创建的磁盘格式是RAW格式,如果需要使用qcow2格式的磁盘,必须用qemu-img create手工先创建一个qcow2格式的磁盘镜像。

qemu-img create Windows-test.qcow2 -f qcow2 50G

然后如图2-8所示,在Virt-Manager上指定qcow2格式。

图2-8 Virt-Manager需要手工选择qcow2方式

提示

在使用virt-install命令,磁盘镜像格式为qcow2时,在virt-install命令中要特别指明磁盘格式,否则会出现镜像复制之后虚拟机系统不能启动的现象,这往往是初学者容易忽视的地方。

(2)光驱自动消失问题

Windows系统安装的时候,重启后找不到光盘。

KVM新创建虚拟机,第一次挂载的光驱,重启后自动消失,这是一个功能,专门针对Linux系统,但是Windows系统安装的时候需要多次重启,所以安装时第一次重启后,会出现如图2-9所示的界面,需要再手工挂载一下Windows系统ISO镜像。

图2-9 Virt-Manager需要手工选择再加载光驱一次

也可以修改虚拟机的xml配置文件,光驱配置的xml文件如下:

<disk type='file' device='cdrom'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/home/CentOS-7.0-1406-x86_64-DVD.iso'/>
<target dev='hdb' bus='ide'/>
<readonly/>
</disk>

(3)鼠标不同步问题

Windows在KVM上会出现鼠标不同步问题,如图2-10所示,再添加一个USB鼠标设备就可以解决。

图2-10 Virt-Manager需要手工添加USB指针设备

添加一个USB鼠标设备的xml文件如下:

<input type='tablet' bus='usb'/>

提示

如果添加两次USB设备,Windows系统虚拟机系统启动会蓝屏,所以只能添加一次USB设备。

4.Linux虚拟机安装注意事项

Linux系统的安装除了会碰到Windows系统安装的qcow2磁盘格式问题、鼠标不同步的问题,Linux虚拟机的安装还可以使用一种非常有意思的方式,就是可以直接指定内核文件路径,然后直接加载,如图2-11所示。

图2-11 通过指定内核文件安装虚拟机

提示

内核文件需要使用安装光盘中的images下的pxe内核文件。

系统引导起来之后,会根据kickstart文件来下载系统,然后安装,如图2-12和图2-13所示。

图2-12 虚拟机启动后根据kickstart文件路径下载安装文件

图2-13 随后根据kickstart文件安装系统

2.4 本章小结

本章介绍了如何安装宿主机、如何安装虚拟机及虚拟机安装时的一些注意事项。读者可以正式开始自己的虚拟化环境搭建了,在搭建的时候,还有许多技术点需要了解,下一章将为读者介绍KVM虚拟机CPU、内存方面的技术及应用场景。