第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、内存方面的技术及应用场景。