如何在Debian Linux 9 Headless Server上安装KVM服务器

时间:2020-01-09 10:40:57  来源:igfitidea点击:

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

在Debian Linux 9.x服务器上安装KVM服务器的步骤

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

在Debian Linux 9.x无终端(显示器键鼠)服务器上遵循KVM的安装步骤

步骤1:安装kvm

执行以下apt-get命令/apt命令:

$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils libguestfs-tools genisoimage virtinst libosinfo-bin

允许普通用户管理虚拟机

如果您希望普通/普通用户可以管理虚拟机。
使用usermod命令将用户Hyman添加到libvirt和libvirt-qemu中:

$ sudo adduser Hyman libvirt
$ sudo adduser Hyman libvirt-qemu

借助newgrp命令重新加载组成员身份:

$ newgrp libvirt
$ newgrp libvirt-qemu

使用id命令验证您的组成员身份:

$ id

请注意,您需要使用以下命令连接到KVM服务器:

$ virsh --connect qemu:///system
$ virsh --connect qemu:///system command
$ virsh --connect qemu:///system list --all

第2步:验证Debain上的kvm安装

运行以下egrep命令以验证CPU是否支持Intel VMX或AMD SVM:

$ egrep --color 'vmx|svm' /proc/cpuinfo

输出示例:

rf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts

步骤3:在Debian上配置桥接网络

我将创建网桥接口br0作为eth0接口的VM guest虚拟机配置中的网络连接:

$ sudo vi /etc/network/interfaces.d/br0

追加以下内容:

## make sure all config related to eth0 deleted ##
auto br0
iface br0 inet static
	address 192.168.1.23        ## set up/netmask/broadcast/gateway as per your setup
	broadcast 192.168.1.255
	netmask 255.255.255.0
	gateway 192.168.1.254
	bridge_ports eth0    # replace eth0 with your actual interface name
	bridge_stp off       # disable Spanning Tree Protocol
        bridge_waitport 0    # no delay before a port becomes available
        bridge_fd 0          # no forwarding delay

在Linux上重新启动网络服务:

$ sudo systemctl restart network-manager

要查看KVM的当前网络设置,请运行:

$ sudo virsh net-list --all

输出示例:

Name                 State      Autostart     Persistent
---------------------------------------------------------
default              inactive   no            yes

您需要在桥接网络上配置KVM来宾域。
因此,请按照文本编辑器(例如NA命令)创建一个名为bridge.xml的文件:

$ sudo vi /root/bridged.xml

追加以下配置:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

在vi/vim中保存并关闭文件。

$ sudo virsh net-define --file /root/bridged.xml
$ sudo virsh net-autostart br0
$ sudo virsh net-start br0

步骤4:使用ISO镜像安装程序创建第一个虚拟机

我将创建一个CentOS 7.x VM。
首先,获取CentOS 7.x最新的ISO镜像:

$ cd /var/lib/libvirt/boot/
$ sudo wget https://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

创建CentOS 7 VM

在此示例中,我用2GB RAM,2个CPU内核,1个nic和40GB磁盘空间创建CentOS 7.x VM,执行:

$ sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 2048 \
--vcpus=2 \
--os-variant=rhel7 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1708.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

要通过ssh从另一个终端配置vnc登录并执行:

$ sudo virsh dumpxml centos7 | grep vnc
`<graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>`

您还可以使用以下命令:

$ sudo virsh vncdisplay centos7

请记下端口值(即5901)。
您需要使用SSH客户端设置隧道,并使用VNC客户端访问远程vnc服务器。
从客户端/桌面执行以下SSH端口转发命令:

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

一旦建立了ssh隧道,就可以将VNC客户端指向自己的127.0.0.1(localhost)地址和端口5901,如下所示:
VNC客户端完成CentOS 7.x安装

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

在基于KVM的VM上安装CentOS 7.x

现在,只需按照屏幕上的说明进行操作并安装CentOS7。
安装完成后,继续并单击重新启动按钮。
远程服务器关闭了与我们的VNC客户端的连接。
您可以通过KVM客户端重新连接以配置服务器的其余部分,包括基于SSH的会话或防火墙。

步骤5使用virt-builder创建VM

上面的方法(虚拟安装)效果很好,但是如果您需要快速构建新的虚拟机,请尝试使用virt-builder。

如何列出可用的虚拟机

$ virt-builder --list | more

您可以使用grep命令仅过滤出基于x86_64架构的VM:

$ virt-builder --list | grep x86_64

要查看任何操作系统的其他说明:

$ virt-builder --notes ubuntu-16.04
$ virt-builder --notes debian-9

输出示例:

Debian 9 (stretch)
 
This is a minimal Debian install.
 
This image does not contain SSH host keys.  To regenerate them use:
 
    --firstboot-command "dpkg-reconfigure openssh-server"
 
This template was generated by a script in the libguestfs source tree:
    builder/templates/make-template.ml
Associated files used to prepare this template can be found in the
same directory.

创建Debian 9.x VM

创建具有10GB磁盘空间,2GB内存,2个vCPU和root帐户随机密码的Debian 9 VM,运行:

$ sudo virt-builder debian-9 \
--size=10G \
--format qcow2 -o /var/lib/libvirt/images/debian9-vm1.qcow2 \
--hostname debain9-vm1 \
--network \
--timezone Asia/Kolkata

最后使用virt-install命令导入镜像:

$ sudo virt-install --import --name debian9-vm1 \
--ram 2048 \
--vcpu 2 \
--disk path=/var/lib/libvirt/images/debian9-vm1.qcow2,format=qcow2 \
--os-variant debian9 \
--network=bridge=br0,model=virtio \
--noautoconsole

输出示例:

Starting install...
Creating domain...  
Domain creation completed.

您可以使用root帐户的x0E4iZ8sHjA6ekb6密码登录到VM:

$ sudo virsh list --all
$ virsh console debian9-vm1

您必须为ssh会话禁用root帐户,并为您的VM创建ssh密钥。
如上登录:

# dpkg-reconfigure openssh-server
# useradd -r -m -d /home/Hyman -s /bin/bash Hyman
# passwd Hyman
# systemctl enable ssh
### [ Disable root user login when using ssh ] ###
# echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
# systemctl restart ssh
# ip a s

验证您是否可以使用Hyman用户的IP地址登录并使用su-成为root用户:

$ ssh [email protected]
$ su 

有用的命令

让我们看一些有用的命令。

查找可接受的操作系统变体列表

$ osinfo-query os | less
$ osinfo-query os | grep debian
$ osinfo-query os | grep freebsd

列出正在运行的虚拟机/域

$ sudo virsh list

Shutodwn一个名为debian9-vm1的虚拟机/域

$ sudo virsh shutdown debian9-vm1

启动一个名为debian9-vm1的虚拟机/域

$ sudo virsh start debian9-vm1

挂起一个名为debian9-vm1的虚拟机/域

$ sudo virsh suspend debian9-vm1

重新引导(安全,安全地重新引导)一个名为debian9-vm1的虚拟机/域

$ sudo virsh reboot debian9-vm1

重置(硬重置/不安全)名为debian9-vm1的虚拟机/域

$ sudo virsh reset debian9-vm1

删除/删除名为debian9-vm1的虚拟机/域

$ sudo virsh undefine debian9-vm1
$ sudo virsh destroy debian9-vm1

查看virsh命令类型的完整列表

$ virsh help | less
$ virsh help | grep reboot