在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器 | Linux 中国

2018 年 10 月 17 日 Linux中国
使用 KVM,我们可以在几分钟之内,很轻松地将任意 Linux 服务器转换到一个完全的虚拟化环境中,以及部署不同种类的虚拟机,比如 GNU/Linux、*BSD、Windows 等等。
-- Sk

致谢
编译自 | 
https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/
 
 作者 | Sk
 译者 | qhwdw 💎共计翻译:152.5 篇 贡献时间:345 天

我们已经讲解了 在 Ubuntu 18.04 无头服务器上配置 Oracle VirtualBox[1] 。在本教程中,我们将讨论如何使用 KVM 去配置无头虚拟化服务器,以及如何从一个远程客户端去管理访客系统。正如你所知道的,KVM(Kernel-based virtual machine)是开源的,是 Linux 上的全虚拟化。使用 KVM,我们可以在几分钟之内,很轻松地将任意 Linux 服务器转换到一个完全的虚拟化环境中,以及部署不同种类的虚拟机,比如 GNU/Linux、*BSD、Windows 等等。

使用 KVM 配置无头虚拟化服务器

我在 Ubuntu 18.04 LTS 服务器上测试了本指南,但是它在其它的 Linux 发行版上也可以使用,比如,Debian、CentOS、RHEL 以及 Scientific Linux。这个方法完全适合哪些希望在没有任何图形环境的 Linux 服务器上,去配置一个简单的虚拟化环境。

基于本指南的目的,我将使用两个系统。

KVM 虚拟化服务器:

◈  宿主机操作系统 – 最小化安装的 Ubuntu 18.04 LTS(没有 GUI)
◈  宿主机操作系统的 IP 地址:192.168.225.22/24
◈  访客操作系统(它将运行在 Ubuntu 18.04 的宿主机上):Ubuntu 16.04 LTS server

远程桌面客户端:

◈  操作系统 – Arch Linux

安装 KVM

首先,我们先检查一下我们的系统是否支持硬件虚拟化。为此,需要在终端中运行如下的命令:

   
   
     
  1. $ egrep -c '(vmx|svm)' /proc/cpuinfo

假如结果是 zero (0),说明系统不支持硬件虚拟化,或者在 BIOS 中禁用了虚拟化。进入你的系统 BIOS 并检查虚拟化选项,然后启用它。

假如结果是 1 或者 更大的数,说明系统将支持硬件虚拟化。然而,在你运行上面的命令之前,你需要始终保持 BIOS 中的虚拟化选项是启用的。

或者,你也可以使用如下的命令去验证它。但是为了使用这个命令你需要先安装 KVM。

   
   
     
  1. $ kvm-ok

示例输出:

   
   
     
  1. INFO: /dev/kvm exists

  2. KVM acceleration can be used

如果输出的是如下这样的错误,你仍然可以在 KVM 中运行访客虚拟机,但是它的性能将非常差。

   
   
     
  1. INFO: Your CPU does not support KVM extensions

  2. INFO: For more detailed results, you should run this as root

  3. HINT: sudo /usr/sbin/kvm-ok

当然,还有其它的方法来检查你的 CPU 是否支持虚拟化。更多信息参考接下来的指南。

◈  如何知道 CPU 是否支持虚拟技术(VT) [2]

接下来,安装 KVM 和在 Linux 中配置虚拟化环境所需要的其它包。

在 Ubuntu 和其它基于 DEB 的系统上,运行如下命令:

   
   
     
  1. $ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker

KVM 安装完成后,启动 libvertd 服务(如果它没有启动的话):

   
   
     
  1. $ sudo systemctl enable libvirtd

  2. $ sudo systemctl start libvirtd

创建虚拟机

所有的虚拟机文件和其它的相关文件都保存在 /var/lib/libvirt/ 下。ISO 镜像的默认路径是 /var/lib/libvirt/boot/

首先,我们先检查一下是否有虚拟机。查看可用的虚拟机列表,运行如下的命令:

   
   
     
  1. $ sudo virsh list --all

示例输出:

   
   
     
  1. Id Name State

  2. ----------------------------------------------------

正如上面的截屏,现在没有可用的虚拟机。

现在,我们来创建一个。

例如,我们来创建一个有 512 MB 内存、1 个 CPU 核心、8 GB 硬盘的 Ubuntu 16.04 虚拟机。

   
   
     
  1. $ sudo virt-install --name Ubuntu-16.04 --ram=512 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-16.04-vm1,size=8 --cdrom /var/lib/libvirt/boot/ubuntu-16.04-server-amd64.iso --graphics vnc

请确保在路径 /var/lib/libvirt/boot/ 中有一个 Ubuntu 16.04 的 ISO 镜像文件,或者在上面命令中给定的其它路径中有相应的镜像文件。

示例输出:

   
   
     
  1. WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.

  2. WARNING No console to launch for the guest, defaulting to --wait -1

  3. Starting install...

  4. Creating domain... | 0 B 00:00:01

  5. Domain installation still in progress. Waiting for installation to complete.

  6. Domain has shutdown. Continuing.

  7. Domain creation completed.

  8. Restarting guest.

我们来分别讲解以上的命令和看到的每个选项的作用。

◈  –name:这个选项定义虚拟机名字。在我们的案例中,这个虚拟机的名字是  Ubuntu-16.04
◈  –ram=512:给虚拟机分配 512MB 内存。
◈  –vcpus=1:指明虚拟机中 CPU 核心的数量。
◈  –cpu host:通过暴露宿主机 CPU 的配置给访客系统来优化 CPU 属性。
◈  –hvm:要求完整的硬件虚拟化。
◈  –disk path:虚拟机硬盘的位置和大小。在我们的示例中,我分配了 8GB 的硬盘。
◈  –cdrom:安装 ISO 镜像的位置。请注意你必须在这个位置真的有一个 ISO 镜像。
◈  –graphics vnc:允许 VNC 从远程客户端访问虚拟机。

使用 VNC 客户端访问虚拟机

现在,我们在远程桌面系统上使用 SSH 登入到 Ubuntu 服务器上(虚拟化服务器),如下所示。

   
   
     
  1. $ ssh sk@192.168.225.22

在这里,sk 是我的 Ubuntu 服务器的用户名,而 192.168.225.22 是它的 IP 地址。

运行如下的命令找出 VNC 的端口号。我们从一个远程系统上访问虚拟机需要它。

   
   
     
  1. $ sudo virsh dumpxml Ubuntu-16.04 | grep vnc

示例输出:

   
   
     
  1. <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>

记下那个端口号 5900。安装任意的 VNC 客户端应用程序。在本指南中,我们将使用 TigerVnc。TigerVNC 是 Arch Linux 默认仓库中可用的客户端。在 Arch 上安装它,运行如下命令:

   
   
     
  1. $ sudo pacman -S tigervnc

在安装有 VNC 客户端的远程客户端系统上输入如下的 SSH 端口转发命令。

   
   
     
  1. $ ssh sk@192.168.225.22 -L 5900:127.0.0.1:5900

再强调一次,192.168.225.22 是我的 Ubuntu 服务器(虚拟化服务器)的 IP 地址。

然后,从你的 Arch Linux(客户端)打开 VNC 客户端。

在 VNC 服务器框中输入 localhost:5900,然后点击 “Connect” 按钮。

然后就像你在物理机上安装系统一样的方法开始安装 Ubuntu 虚拟机。

同样的,你可以根据你的服务器的硬件情况配置多个虚拟机。

或者,你可以使用 virt-viewer 实用程序在访客机器中安装操作系统。virt-viewer 在大多数 Linux 发行版的默认仓库中都可以找到。安装完 virt-viewer 之后,运行下列的命令去建立到虚拟机的访问连接。

   
   
     
  1. $ sudo virt-viewer --connect=qemu+ssh://192.168.225.22/system --name Ubuntu-16.04

管理虚拟机

使用管理用户接口 virsh 从命令行去管理虚拟机是非常有趣的。命令非常容易记。我们来看一些例子。

查看运行的虚拟机,运行如下命令:

   
   
     
  1. $ sudo virsh list

或者,

   
   
     
  1. $ sudo virsh list --all

示例输出:

   
   
     
  1. Id Name State

  2. ----------------------------------------------------

  3. 2 Ubuntu-16.04 running

启动一个虚拟机,运行如下命令:

   
   
     
  1. $ sudo virsh start Ubuntu-16.04

或者,也可以使用虚拟机 id 去启动它。

正如在上面的截图所看到的,Ubuntu 16.04 虚拟机的 Id 是 2。因此,启动它时,你也可以像下面一样只指定它的 ID。

   
   
     
  1. $ sudo virsh start 2

重启动一个虚拟机,运行如下命令:

$ sudo virsh reboot Ubuntu-16.04

示例输出:

   
   
     
  1. Domain Ubuntu-16.04 is being rebooted

暂停一个运行中的虚拟机,运行如下命令:

   
   
     
  1. $ sudo virsh suspend Ubuntu-16.04

示例输出:

   
   
     
  1. Domain Ubuntu-16.04 suspended

让一个暂停的虚拟机重新运行,运行如下命令:

   
   
     
  1. $ sudo virsh resume Ubuntu-16.04

示例输出:

   
   
     
  1. Domain Ubuntu-16.04 resumed

关闭一个虚拟机,运行如下命令:

   
   
     
  1. $ sudo virsh shutdown Ubuntu-16.04

示例输出:

   
   
     
  1. Domain Ubuntu-16.04 is being shutdown

完全移除一个虚拟机,运行如下的命令:

   
   
     
  1. $ sudo virsh undefine Ubuntu-16.04

  2. $ sudo virsh destroy Ubuntu-16.04

示例输出:

   
   
     
  1. Domain Ubuntu-16.04 destroyed

关于它的更多选项,建议你去查看 man 手册页:

   
   
     
  1. $ man virsh

今天就到这里吧。开始在你的新的虚拟化环境中玩吧。对于研究和开发者、以及测试目的,KVM 虚拟化将是很好的选择,但它能做的远不止这些。如果你有充足的硬件资源,你可以将它用于大型的生产环境中。如果你还有其它好玩的发现,不要忘记在下面的评论区留下你的高见。

谢谢!


via: https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/

作者:SK[4] 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


登录查看更多
0

相关内容

Ubuntu[国际音标:[uːˈbuːntuː](英语);[ùɓúntú](祖鲁语)]是一个以桌面应用为主的GNU/Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(官方译名“友帮拓”,另有“吾帮托”、“乌班图”、“有奔头”或“乌斑兔”等译名),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。 Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
报告 | 2020中国5G经济报告,100页pdf
专知会员服务
97+阅读 · 2019年12月29日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
92+阅读 · 2020年2月28日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
3+阅读 · 2018年3月13日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
报告 | 2020中国5G经济报告,100页pdf
专知会员服务
97+阅读 · 2019年12月29日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Top
微信扫码咨询专知VIP会员