如何在Ubuntu 14.04 LTS无终端(显示器键鼠)服务器上安装KVM

时间:2020-01-09 10:39:21  来源:igfitidea点击:

基于内核的虚拟机(KVM)是Linux内核的虚拟化模块,可将其转变为虚拟机监控程序。
如何安装KVM,将来宾操作系统设置为非图形Ubuntu Linux 14.04 LTS服务器的后端虚拟化技术?
您可以使用KVM使用虚拟机来运行多个操作系统,例如Windows,* BSD,Linux发行版。
每个虚拟机都有其专用磁盘,图形卡,网卡等。

什么是hypervisor?

KVM是创建和运行虚拟机的管理程序(hypervisor)。
运行管理程序的服务器称为主机。
每个虚拟机都称为来宾计算机。
使用KVM,您可以运行多种操作系统,例如CentOS,OpenBSD,FreeBSD,未修改的MS-Windows。

在Ubuntu Linux 14.04 LTS上安装KVM的步骤

  • 主机服务器位于远程数据中心,它是无终端(显示器键鼠)服务器。
  • 本教程中的所有命令都在基于ssh的会话中执行。
  • 您需要一个vnc客户端来安装客户机操作系统。
  • 在本教程中,您将学习如何在Ubuntu上安装KVM软件以及如何使用KVM设置您的第一个来宾VM。

找出服务器是否能够运行硬件加速的KVM虚拟机

您需要使用" kvm-ok"命令来确定服务器是否可以托管硬件加速的KVM虚拟机。
首先使用以下apt-get命令安装cpu-checker软件包:

$ sudo apt-get install cpu-checker

接下来,运行以下命令:

$ sudo kvm-ok

输出示例:

INFO: /dev/kvm exists
KVM acceleration can be used

在Ubuntu Linux上安装kvm

执行以下apt-get命令以安装kvm和相关软件:

$ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

默认配置位置

  • 默认目录:/var/lib/libvirt /
  • 用于安装的ISO镜像:/var/lib/libvirt/boot /
  • VM安装目录:/var/lib/libvirt/images /
  • LVM/LXC/qemu的Libvirt配置目录:/etc/libvirt /

有关VM的默认联网的更多信息

默认网络称为默认网络。
要列出网络,请执行:

$ sudo virsh net-list

输出示例:

Name                 State      Autostart     Persistent
---------------------------------------------------------
default              active     yes           yes

有关网络信息,请执行:

$ sudo virsh net-info default

输出示例:

Name:           default
UUID:           1c0abaa3-8d17-45b5-85e9-c0d48cec94f9
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

要以XML格式转储网络信息,请执行:

$ sudo virsh net-dumpxml default

输出示例:

<network connections='1'>
  <name>default</name>
  <uuid>1c0abaa3-8d17-45b5-85e9-c0d48cec94f9</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

创建一个CentOS Linux VM

首先,获取CentOS Linux 7.x DVD ISO文件:

$ cd /var/lib/libvirt/boot/
$ sudo wget http://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso
$ ls

输出示例:

CentOS-7-x86_64-Minimal-1511.iso  install58.iso

要供应新的虚拟机,请使用virt-install命令。
在此示例中,我创建一个具有1GB RAM,1个CPU内核和20GB磁盘空间的CentOS 7.x VM,执行:

$ sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 1024 \
--vcpus=1 \
--os-variant=rhel7 \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-Minimal-1511.iso \
--network network=default,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.img,size=20,bus=virtio

输出示例:

Starting install...
Allocating 'centos7.img'                                                                     |  20 GB     00:00     
Creating domain...                                                                           |    0 B     00:00     
WARNING  Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

virt安装选项

  • --virt-type = kvm:使用kvm作为管理程序来安装CentOS7 guest虚拟机。
  • --name centos7:新的访客虚拟机实例的名称。
  • --ram 1024:分配给来宾实例的内存(以兆字节为单位)。
  • --vcpus = 1:为访客配置的虚拟cpus数。
  • --os-variant = rhel7:针对特定的操作系统变型优化来宾配置。使用virt-install --os-variant list查看完整的操作系统列表。
  • --hvm:请求使用完全虚拟化。
  • --cdrom =/var/lib/libvirt/boot/CentOS-7-x86_64-Minimal-1511.iso:文件或设备用作完全虚拟化来宾的虚拟CD-ROM设备。它可以是ISO镜像或CDROM设备的路径。
  • --network network = default,model = virtio:将客户连接到主机网络。在此示例中,使用称为virtio的nic模型连接到名为default的主机中的虚拟网络。
  • --graphics vnc:在客户机中设置虚拟控制台,并将其导出为主机中的VNC服务器。这对于我们的无终端(显示器键鼠)服务器很有用。
  • --disk path =/var/lib/libvirt/images/centos7.img,size = 20,bus = virtio:指定用作来宾存储的媒体。 /var/lib/libvirt/images/centos7.img存储介质的路径,如果创建新的存储并将磁盘总线类型设置为virtio,则要使用的大小(20 GB)。

有关VNC和无终端(显示器键鼠)服务器的说明

这是无终端(显示器键鼠)服务器,即没有本地接口或GUI的服务器。
没有监视器或外围设备,例如键盘和鼠标连接到此服务器。
要继续安装,您需要从自己的笔记本电脑或台式机上使用vnc客户端。
要查找有关vnc服务器端口的信息,请执行:

$ sudo virsh dumpxml centos7 | grep vnc

输出示例:

<graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>

请记下端口值(即5901)。
您需要使用SSH客户端设置隧道,并使用VNC客户端访问远程vnc服务器。

访问来宾域VNC控制台

输入以下SSH端口转发命令:

$ ssh [email protected] -L 5901:127.0.0.1:5901

其中:

  • ssh [email protected]在server1.theitroad.local主机上建立到远程KVM主机的SSH会话。
  • -L开始本地端口转发。
  • 5901:127.0.0.1:5901设置隧道,即通过Internet传递流量以访问远程服务器127.0.0.1和端口5901。

一旦建立了ssh隧道,就可以将VNC客户端指向自己的127.0.0.1(localhost)地址和端口5901,如下所示:
通过SSH访问KVM guest虚拟机的VNC控制台

您应该看到CentOS Linux 7 guest虚拟机安装屏幕,如下所示:

CentOS 7 guest虚拟机安装

只需按照屏幕上的说明安装CentOS7。
一段时间后,CentOS 7已成功安装在我的服务器上并可以使用。
继续并单击重新启动按钮。
远程服务器关闭了与我们的VNC客户端的连接。
执行以下命令来首次启动VM:

$ sudo virsh start centos7

输出示例:

Domain centos7 started

验证一下:

$ sudo virsh list

输出示例:

Id    Name                           State
---------------------------------------------------
3     puffy                          running
5     centos7                        running

再次使用SSH客户端设置隧道,并使用VNC客户端通过vnc服务器访问CentOS 7虚拟机。

并且,在Ubuntu Linux 14.04 LTS服务器之上,您拥有一个运行KVM的CentOS 7虚拟机。
在默认配置中,CentOS 7来宾操作系统将有权访问网络服务,但对网络上的其他计算机或Internet而言是不可见的。