APP下载

企业KVM 虚拟机部署与管理

2021-01-06顾武雄

网络安全和信息化 2020年12期
关键词:联机命令虚拟化

■ 顾武雄

编者按:想要在Linux 操作系统中通过KVM 虚拟化平台的使用,来部署多部虚拟机以充分使用硬件资源,来提供更多的应用服务与测试环境,相信Ubuntu 的64 位版本Linux 会是最佳的选择。本文将指引读者们,如何通过最简易与最快速的方法,来部署与管理KVM 虚拟化平台,打造绝佳的虚拟机运行环境。

下面详细介绍下具体内容。

认识云服务基础

现今各行各业在强烈的市场竞争之下,公司与对手之间要较量的就是创新、速度、稳定以及营销等等,而在这一些成功要件之中,背后的关键助力就是云服务,因为传统的经营营销策略,已经无法让大多数的企业在夹缝中求生存了。整个云服务若有良好设计,对内将可提升移动协同商务的效率(B2E),对外则可提供完善的顾客服务(B2C)以及与合作伙伴间的资源集成(B2B)。即便您的公司只是一个不知名的中小企业,若是不懂得好好善用云商机,未来势必被竞争的市场所淘汰。

然而云服务的部署就好比盖房子一样,地基若是不稳固再伟大的应用设计也是惘然。只是一个高效能且稳固的云基础建设,是否一定得昂贵到让中小企业无法接受呢?其实并非如此,因为企业IT只要掌握两项要诀,就可以为企业节省掉可观的部署成本。第一是完全虚拟化,第二则是善用开放原始码。

完全虚拟化的服务器部署,每一年可为企业节省掉的硬件采购以及维护费用是相当可观的,这还不包括相关电费的成本支出。而对于虚拟化平台的选择而言,若采用以开放原始码为主的系统,也将可以大幅节省庞大的软件授权费用。至于技术支持以及资源的问题,只要我们选择的开源虚拟化平台是在业界所被广泛使用的,那么相关技术人才的寻找便不是问题。同样的相关网络资源(例如:社群讨论区、在线技术文件)也肯是相当丰富的。

在此建议您不妨试试Linux 中的KVM(Ker nel-based Virtual Machine)虚拟化平台。在核心架构设计上,它完全支持CPU 的虚拟化技术(Intel VT 或AMD-V),因此它是直接通过与中央处理器的沟通方式,来进行各种虚拟化核心模块与命令的执行,让同时多个虚拟机的运行之间互不干扰,进一步则是搭配同样是开放原始码的QEMU程序包,来负责处理虚拟化周边与物理接口设备之间的沟通,借此提供一套完整且高效能虚拟化运作平台。

部署KVM 的任务准备

在接下来的实战讲解中,笔者将以Ubuntu的64位版本,来作为执行KVM 虚拟化平台的操作系统。在正式安装KVM所需要的相关程序包之前,我们最好能够先检测一下,目前的CPU 是否已支持虚拟化技术。首先请开启命令窗口并执行egrep '(vmx|svm)'--color=always /proc/cpuinfo 命令参数,并查看是否内容中有vmx 的关键词,如果有即表示它使用的是Intel处理器并且是支持的。若是找到的是svm 关键词,则表示此处理器是AMD 系列,也同样是支持的,

接着建议您可以进一步通过“Ubuntu 软件中心”界面,来搜索并安装一个名为cpuchecker 的程序包,当然您也可以改选择在命令提示界面中执行sudo apt-get install cpu-checker。

完成cpu-checker 程序包的安装之后,就可以开启命令窗口来执行kvm-ok 命令,便可以知道目前此计算器的BIOS中,是否已经启用了支持KVM 的虚拟化技术了。若是系统发现目前的计算器BIOS 尚未启用此功能,则在结果信息之中,将会有KVM (vmx) is disabled by your BIOS信息出现。

接下来我们要开始动手安装KVM 虚拟化平台所需要的几个程序包。首先是ubuntu-virt-server 这个共享的必备程序包,您可以在“Ubuntu 软件中心”界面中进行搜索与安装,或是在命令提示列中执行apt-get install ubuntu-virt。接着请如安装KVM-IPXE 程序包,建议您可以同样在“Ubuntu 软件中心”界面中进行搜索与安装即可。最后则是必须搜索virtmanager 关键词,来安装一个KVM 专属的虚拟机管理员工具。

请注意!在执行虚拟机管理员程序包的安装过程中,可能会出现需要安装额外程序包的提示信息。请务必点击“安装”,才能够让此管理工具顺利完成安装与使用。

除了KVM 相关程序包的安装之外,为了让后续的各个虚拟机中的Guest OS,能够经由物理网络来与Internet 进行联机,在此还必须加装一套以太网络的网桥工具,您可以直接在“Ubuntu 软件中心”页面中输入bridge-utils 关键词,或是选择在命令提示界面中执行apt-get install bridge-utils 命令,来完成此工具程序的安装。

接着请在命令窗口之中,执行sudo adduser 'joviku'libvirt 与sudo adduser'joviku' kvm 两个命令参数,来将选定的用户JoviKu 入至KVM 虚拟化平台的两个默认组之中,以便让这个用户帐户后可以来管理虚拟机的添加、删除以及修改等操作。在完成将用户加入这两个组之后,建议您可以通过执行grep joviku /etc/group 来查看目前这一位用户,是否确实是这两个组的成员。

最后我们最好检查一下虚拟化系统的运作是否正常。请执行virsh -c qemu:///system list 命令,若没有出现错误信息,即表示没有问题!可以开始准备来创建虚拟机了。

虚拟网络配置

还记得我们在前面的步骤当中有安装以太网络网桥工具(bridgeutils),为了让后续所创建的虚拟机,都能够通过物理联机的网络卡来与外部网络联机,我们还必须进一步修改网络界面的相关设定。请通过vi或vim 之类的文本编辑器,开启位于在/etc/network/路径下的interfaces 配置文件。

请将其中的address、network、netmask、broadcast、gateway、dns-nameservers 域值,修改成您实际所要给予服务器网络使用的TCP/IP 设定,而这个网络(eth0)也将会因为其中的bridge_ports eth0与bridge_stp off 的设定,使得虚拟机的Guest OS 可以通过它来连接外部网络以及Internet。

完成了以太网络的桥接与TCP/IP 的设定之后,紧接着请重新启动系统,或是重新启动网络界面。前者可以执行sudo reboot 命令,后者则可以sudo /etc/init.d/networking restart 命令即可。

图1 虚拟机管理员

完成重新启动之后请执行ifconfig,来查看前面步骤中所创建的br0 桥接网络是否已经启用。

确认完成桥接网络的创建之后,后续我们便可以对于现有的虚拟机开启网络配置页面。其中在NIC 的设备项页面中,请先选取“源设备”为“选定分享的设备名称”,然后再输入所创建的桥接网络名称,例如br0。

创建虚拟机

一切就绪后我们就可以开始在KVM 的虚拟化平台上创建新虚拟机,请从Ubuntu系统选单中,点击开启我们所安装的“虚拟机管理员”程序继续。

开启“虚拟机管理员”界面之后,将可以如图1 所示看到目前正在执行中的虚拟机列表,并且清楚知道主机以及每一个虚拟机的CPU 用量。管理员也可以随时针对所选取的虚拟机点击执行、暂停以及关机,若想要进入到Guest OS 的操作,则可以点击“开启”即可。

接下来试试创建一个新的虚拟机。在“添加VM”页面中,首先必须输入新虚拟机名称,然后选择后续安装Guest OS 的方法,目前提供了本地端安装媒体、网络安装、网络开机以及汇入现有的磁盘映像四种作法,其中采用本地ISO文件装载安装的方式最为常见,也是最迅速安装Guest OS的最佳选择。点击“下一步”。

在此笔者选择了“使用ISO 映像”,然后点击“浏览”按钮来加载预先准备好的ISO 文件。接着在完成“OS 类型”以及“版本”的挑选之后,点击“下一步”继续。

请注意!即便OS 类型与版本选择错误,一样可以正常安装您所准备好的安装程序,只是必须注意处理器与内存的配置设定,是否足以执行所安装好的Guest OS 与其应用程序。

点击“下一步”。

接着需要指派虚拟机可用的内存与CPU 数量,一般来说只要是安装Windows的操作系统,至少会配置2 048 MB 以上的内存与两个CPU。在此系统也会显示目前主机最高可用的资源大小。点击“下一步”。

您还必须配置所要使用的新虚拟硬盘大小,当然也可以选定装载一个现有的虚拟硬盘映像文件。如果将“现在分配整个磁盘”设定勾选,则此虚拟机完成创建后,此虚拟硬盘将会产生一个选定大小的映像文件。这样直接采用固定虚拟磁盘大小的优点在于提升I/O 的运行效能,因为它省去了许多系统进行计算的任务,但相对地是当此类型虚拟硬盘数量很多时,将会占用掉许多主机硬盘的可用空间。至于如果取消勾选,则虚拟硬盘物理文件大小,将会随实际存放的数据多寡而增长。

图2 安装Guest OS

最后您将可以检视到前面步骤中所配置的各项设定。而在“高级选项”的网络类型设定部分,您可以决定要采用默认的NAT 转译联机方式,还是要改成“Specify shared device name”设定,并且选定前面步骤中所预先创建好的网络桥接名称,让虚拟机与物理主机使用同一个网段地址,来联机外部网络与Internet。此外您还可以勾选“在安装前自定义配置”选项,以便在完成此设定之后,自动开启此虚拟机的属性配置页面。

虚拟机高级配置

关于虚拟机的属性配置,您可以随时在此虚拟机关机状态时来开启它,因为有许多的设定项是无法在虚拟机启动状态下,来进行修改与生效的,例如CPU 数量与内存大小修改等等。如果只是想要修改此虚拟机的名称与描述,则是可以不需要将虚拟机关机的。若是想要添加其它硬件给此虚拟机使用,请点击页面左下角的“加入硬件”按钮继续。

在“加入新的虚拟硬件”页面中,可以看到各种可加入的硬件,这包括了存储设备、网卡、输入设备、图形设备、声音设备、串行端口与并列端口设备、USB 设备等等。在此以存储设备(Storage)为例子,您可以为目前的虚拟机加入新的虚拟硬盘,并且设定其容量大小或是选定现有的虚拟硬盘映像文件,以及选定设备的类型、模式以及存储格式。点击“完成”。

完成新虚拟硬盘的添加之后,将可以看到在所加入的硬盘界面之中(例如:IDE Disk2),看到此虚拟硬盘的高级设定页面,您可以根据实际的需要来修改默认的设定。举例来说,您可以将一些含有重要数据的现有VMWare vmdk虚拟硬盘,装载至KVM 现有的虚拟机之中,但为了预防其中的文件数据遭到误删,则可以在此将此虚拟硬盘设定成“只读”即可。也可以在此随时将某一个联机中的虚拟硬盘进行移除。

必须注意的是移除的操作,仅是移除其联机设定而不会删除虚拟硬盘文件。

如图2 所示便是一个启动安装中的Windows 7 虚拟机,您可以通过上方功能列图标的点击,让它以全屏幕的方式来进行操作。

虚拟机高级管理

在KVM 虚拟机的管理中,无论是针对整个虚拟机还是某个虚拟硬盘,皆是可以进行共享、复制以及迁移的。先以虚拟硬盘的分享来说,您可以随时针对虚拟机中的任一虚拟硬盘,启用“可分享”设定以便让其它虚拟机也可以来进行访问。若是想要针对某一个虚拟机进行复制,则只要在该虚拟机上方,按下鼠标右键点击“分身”继续。

在“制作虚拟机分身”页面中,您除了需要设定新虚拟机的名称之外,还可以修改关于网络联机的细节设定。而当来源虚拟机装载多个虚拟硬盘时,您可自行决定哪一些虚拟硬盘要制作分身。完成设定后点击“分身”按钮即可。

关于KVM 虚拟机的复制,除了可以通过图形界面的操作来完成之外,您也可以使用命令工具来进行。在此我们只要执行sudo virt-clone 命令,搭配—connect=qemu:///system 相关参数设定,来选定所要复制的虚拟机名称以及新复制的虚拟硬盘存放路径即可。

当网络中有多部的KVM 虚拟化平台主机时,将它可以通过相互连接的方式,来对于现行运作中的虚拟机进行迁移。在“迁移虚拟机”设定页面中,您只要设定好新的主机并决定是否要采用脱机迁移(速度较快),即可开始进行虚拟机的迁移操作。而在“高级选项”设定中,则可以进一步设定是否要采用libvirt 的幕后程序穿隧迁移,以及设定最大停机时间,必要的话还可以自定义联机地址、端口以及带宽限制。

针对KVM 虚拟机的管理也有它自己的默认偏好设定,可以修改成符合自己喜好的风格。您只要从操作窗口的下拉选单之中,点击“偏好设定”继续。首先在“一般”页面中,可以决定是否要启用系统状态的图标于窗口界面之中。

在“统计”页面中,则是可以设定要每间隔多久更新一次状态信息,以及设定要保留多少的维护历史之记录。在I/O 的监视部分则可以决定是否要轮询磁盘与网络的I/O 状态。在“VM 详细数据”页面中,可以设定控制面板的缩放功能,以及变更抓取键的组合设定。对于新建的虚拟机,则可以决定是否安装音频设备,以及是否安装图形管理功能与修改默认的虚拟硬盘映像文件存储格式。

最后在“回馈意见”页面中,您可以决定哪一些操作功能要进行回报。针对一些已经不再使用的虚拟机,我们可以通过鼠标的右键菜单来执行删除操作。执行后将会开启“删除确认”提示。在此如果您只是要删除虚拟机而不要删除相关的虚拟硬盘文件,则可以取消在清单之中有关于img 或是其它格式的文件。后续这一些保存的虚拟硬盘文件,仍可以被其它KVM 虚拟机甚至于兼容的虚拟化平台所装载与访问。

在上一步骤中若您点击了“删除”操作,为了避免误删的风险,系统将会再一次出现确认提示信息,若是您将其中的“不要再问我”项勾选,往后对于虚拟机的删除操作,将不会再出现这个确认信息,因此必须谨慎小心。

KVM 常用命令与工具

本文最后让我们来看看在KVM 管理中,几个最常用的命令技巧。首先若想知道目前有哪一些虚拟机正在执行,只要执行virsh -c qemu:///system list 即可。如果您想要查看到的是目前所有虚拟机的状态,则必须改执行virsh -connect qemu:///system list -all即可。对于现行虚拟机的启动与关机,则可以执行virsh-c qemu:///system start虚拟机名称,以及virsh -c qemu:///system shutdown 虚拟机名称。

想想看在如今许多人使用的Android 系列手机与平板上,是否也能够通过简易的App 操作界面,来进行KVM 虚拟机的管理呢?答案是可以的,您只要在互联网搜寻中输入KVM 关键词(例如:KVM for Android Tools)即可找到相关的移动App,这包括了须付费与免费的版本,而它们的管理方式皆是通过SSH 的安全联机设定,来控管所有以KVM 为基础的虚拟机。无论如何这一些App 都可以协助您在虚拟化平台的移动管理上更加得心应手。

究竟还有哪一些好用的工具可以来管理KVM 虚拟化平台呢?建议您不妨参考这个 网 站http://www.linuxkvm.org/page/Management_Tools,来下载与评估您偏好的管理工具。另外在这个网站上您还可以下载到许多以KVM 为基础的虚拟化平台,例如Proxmox VE 开放原始码就是一个相当不错的虚拟化平台,让您的企业在计划部署私有云基础平台的过程之中,能有更多不一样的选择。

结论

在Ubuntu Linux 操作系统中所能够选择使用的虚拟化平台不仅有KVM,其实像是其它知名的Xen Hypervisor与Oracle VirtualBox 等开源软件,也都是相当不错的选择。关于虚拟化平台的选择与规划,全看实务上的用途为何,并非都得要使用付费的授权软件不可。因为许多时候您会发现,许多付费软件的功能可能都是用不着的,或是可以善用其它可行作法来加以替代的。

以免费的KVM 来说便相当适用在个人的测试环境需求、开发人员的测试环境、中小企业的应用服务器部署三大用途。

猜你喜欢

联机命令虚拟化
只听主人的命令
多联机焓差实验室制冷量测试不确定度分析
海尔发布全球首个物联多联机云服务平台
再立标杆,天加GHP燃气多联机 助力神木市LNG站建设
安装和启动Docker
基于OpenStack虚拟化网络管理平台的设计与实现
局部UV上光工艺探究
对基于Docker的虚拟化技术的几点探讨
移防命令下达后
H3C CAS 云计算管理平台上虚拟化安全防护的实现