菜单

何以在 Ubuntu 和 Debian 中通过命令行管理 KVM

2019年6月8日 - LINUX

有十分的多不等的不二等秘书技去管理运作在 KVM 管理程序上的虚拟机。举个例子,virt-manager
便是3个风行的基于图形分界面包车型大巴前端虚拟机管理工科具。但是,要是你想要在向来不图形窗口的服务器境况下选取KVM
,那么依据图形分界面的减轻方案显明是不著见效的。事实上,你能够独自利用包装了
kvm 命令行脚本的命令行来处理 KVM 虚拟机。作为代表方案,你能够选取 virsh
那几个轻松选用的下令行程序来保管客户虚拟机。在 virsh 中,它经过和 libvirtd
服务通讯来完毕调整虚拟机的指标,而 libvirtd
可以操纵多个例外的虚拟机管理器,蕴涵 KVM,Xen,QEMU,LXC 和 OpenVZ。

图片 1

当您想要对虚拟机的开始时代策画和前期管理落实自动化操作时,像 virsh
那样的命令行政管理理工科具是特别实惠的。一样,virsh
帮助三个管理器也就代表你能够由此平等的 virsh
接口去管理分裂的虚拟机管理器。

在那篇小说中,小编会示范怎样在
Ubuntu 和 debian
上通过动用 virsh 命令行去运转 KVM

 

首先步:确认你的硬件平台帮助虚拟化

首先步,首先要肯定你的 CPU 援救硬件虚拟化增加(e.g.,速龙 VT 大概英特尔-V),那是 KVM 对硬件的渴求。上面包车型的士通令能够检查硬件是还是不是扶助虚拟化。

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

图片 2

借使在输出中不包蕴 vmx 也许 svm 标志,那么就象征你的 cpu
不支持硬件虚拟化。由此你不能够在您的机械上运用 KVM 。确认了 cpu 支持 vmx
也许 svm 之后,接下去伊始安装 KVM。

对于 KVM 来讲,它不供给运营在有着 63个人内核系统的主机上,然则日常我们会推荐在 6四 位系统的主机下边运维 KVM。

 

第二步:安装KVM

使用 apt-get 安装 KVM 和血脉相通的用户空间工具。

  1. $ sudoapt-get install qemu-kvm libvirt-bin

设置时期,libvirtd 用户组(在 debian 上是 libvirtd-qemu
用户组)将会被创制,并且你的用户 id
将会被电动增添到该组中。那样做的目标是令你能够以2个普通用户而不是 root
用户的身份去管理虚拟机。你可以运用 id
命令来认可那或多或少,上边将会告知你怎么去显得你的组 id:

  1. $ id<your-userID>

图片 3

要是因为一些原因,libvirt(在 debian 中是 libvirt-qemu)未有在您的组 id
中被找到,你也得以手动将你自个儿增加到对应的组中,如下所示:

在 ubuntu 上:

  1. $ sudo adduser [youruserID] libvirtd

在 debian 上:

  1. $ sudo adduser [youruserID] libvirt-qemu

遵纪守法如下命令重新载入更新后的组成员关系。假如要求输入密码,那么输入你的登录密码就可以。

  1. $ execsu-l $USER

此刻,你应该能够以普通用户的身价去实行 virsh
了。做一个之类所示的测试,那些命令将会以列表的形式列出可用的虚拟机(当前的列表是空的)。要是您未曾蒙受权限难点,那表示到近日甘休一切都以正常的。

  1. $ virsh list

  1. IdNameState

 

其三步:配置桥接互联网

为了使 KVM 虚拟机能够访问外部互连网,1种艺术是透过在 KVM 宿主机上创制Linux
桥来达成。创造之后的桥能够将虚拟机的虚构网卡和宿主机的情理网卡连接起来,由此,虚拟机能够发送和抽取由物理网卡传输的数据包。这种艺术叫做网络桥接。

上面将告诉你哪些成立并且布署网桥,大家创造一个网桥称它为 br0。

第2,安装三个不能缺少的包,然后用命令行成立多个网桥。

  1. $ sudoapt-get install bridge-utils
  2. $ sudo brctl addbr br0

下一步就是安排已经创办好的网桥,即修改位于 /etc/network/interfaces
的铺排文件。大家需求将该桥接网卡设置成开机运营。为了修改该配置文件,你供给关闭你的操作系统上的互联网管理器(借使您在行使它的话)。跟随操作指南的证实去关闭互联网管理器。

关门网络管理器之后,接下去正是经过退换配置文件来布局网桥了。

  1. #auto eth0
  2. #iface eth0 inet dhcp
  3. auto br0
  4. iface br0 inet dhcp
  5. bridge_ports eth0
  6. bridge_stp off
  7. bridge_fd 0
  8. bridge_maxwait 0

在上边的配置中,笔者壹旦 eth0
是注重网卡,它也是连接受外网的网卡,一样,作者只要 eth0 将会通过 DHCP
构和自动获得 ip 地址。注意,在此之前在 /etc/network/interfaces 中还未曾对
eth0 进行任何配置。桥接网卡 br0 引用了 eth0 的布署,而 eth0 也会碰着 br0
的制裁。

重启网络服务,并明确网桥已经被成功的计划好。固然成功的话,br0 的 ip
地址将会是 eth0 自动分配的 ip 地址,而且 eth0 不会被分配任何 ip 地址。

  1. $ sudo/etc/init.d/networking restart
  2. $ ifconfig

若是因为一些原因,eth0 依旧保留了以前分配给了 br0 的 ip
地址,那么你大概必须手动删除 eth0 的 ip 地址。

图片 4

 

第四步:用命令行创制三个虚拟机

对此虚拟机来讲,它的配置音讯被贮存在它对应的xml文件中。因而,创造贰个虚拟机的第3步就是计划三个与虚拟机对应的
xml 文件。

上面是二个演示 xml 文件,你能够凭仗必要手动修改它。

  1. <domaintype='kvm'>
  2. <name>alice</name>
  3. <uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid>
  4. <memory>1048576</memory>
  5. <currentMemory>1048576</currentMemory>
  6. <vcpu>1</vcpu>
  7. <os>
  8. <type>hvm</type>
  9. <bootdev='cdrom'/>
  10. </os>
  11. <features>
  12. <acpi/>
  13. </features>
  14. <clockoffset='utc'/>
  15. <on_poweroff>destroy</on_poweroff>
  16. <on_reboot>restart</on_reboot>
  17. <on_crash>destroy</on_crash>
  18. <devices>
  19. <emulator>/usr/bin/kvm</emulator>
  20. <disktype="file"device="disk">
  21. <drivername="qemu"type="raw"/>
  22. <sourcefile="/home/dev/images/alice.img"/>
  23. <targetdev="vda"bus="virtio"/>
  24. <addresstype="pci"domain="0x0000"bus="0x00"slot="0x04"function="0x0"/>
  25. </disk>
  26. <disktype="file"device="cdrom">
  27. <drivername="qemu"type="raw"/>
  28. <sourcefile="/home/dev/iso/CentOS-6.5-x86_64-minimal.iso"/>
  29. <targetdev="hdc"bus="ide"/>
  30. <readonly/>
  31. <addresstype="drive"controller="0"bus="1"target="0"unit="0"/>
  32. </disk>
  33. <interfacetype='bridge'>
  34. <sourcebridge='br0'/>
  35. <macaddress="00:00:A3:B0:56:10"/>
  36. </interface>
  37. <controllertype="ide"index="0">
  38. <addresstype="pci"domain="0x0000"bus="0x00"slot="0x01"function="0x1"/>
  39. </controller>
  40. <inputtype='mouse'bus='ps2'/>
  41. <graphicstype='vnc'port='-1'autoport="yes"listen='0.0.0.0'/>
  42. <consoletype='pty'>
  43. <targetport='0'/>
  44. </console>
  45. </devices>
  46. </domain>

上边的主机xml配置文件定义了之类的虚拟机内容。

<uuid></uuid> 中的 UUID 字符串能够随心所欲生成。为了拿走一个即兴的 uuid
字符串,你也许须要接纳 uuid 命令行工具。

  1. $ sudoapt-get install uuid
  2. $ uuid

变动2个主机 xml 配置文件的章程正是由此七个曾经存在的虚拟机来导出它的
xml 配置文件。如下所示。

  1. $ virsh dumpxml alice > bob.xml

图片 5

 

第陆步:使用命令行运维虚拟机

在运维虚拟机以前,大家需求创设它的初叶磁盘镜像。为此,你须要动用
qemu-img 命令来生成一个 qemu-kvm 镜像。上面包车型大巴命令将会创制 10 GB
大小的空磁盘,并且它是 qcow二 格式的。

  1. $ qemu-img create -f qcow2 /home/dev/images/alice.img 10G

采取 qcow贰格式的磁盘镜像的益处就是它在开立之初并不会给它分配全体轻重磁盘体量(这里是
10GB),而是趁着虚拟机粤语件的加码而日趋增大。因而,它对空间的选拔更为有效。

目前,你能够通过运用从前创立的 xml
配置文件运营你的虚拟机了。上边包车型地铁通令将会成立三个虚拟机,然后自动运行它。

  1. $ virsh create alice.xml
  2. Domain alice created from alice.xml

注意:
要是您对1个早已存在的虚拟机实行了了上面包车型大巴通令,那么这么些操作将会在未曾其余警示的气象下抹去特别已经存在的虚拟机的1切新闻。如若您早就创制了贰个虚拟机,你大概会选取上面包车型客车下令来运行虚拟机。

  1. $ virsh start alice.xml

采纳如下命令确认三个新的虚拟机已经被创设并打响的被运行。

  1. $ virsh list

  1. IdNameState
  2. ----------------------------------------------------
  3. 3 alice running

一如在此之前,使用如下命令确认你的虚拟机的杜撰网卡已经被成功的丰富到了您从前创造的
br0 网桥中。

  1. $ sudo brctl show

图片 6

 

长距离连接虚拟机

为了远程访问多个正值周转的虚拟机的调控台,你能够使用VNC客户端。

第3,你须求运用如下命令找寻用于虚拟机的VNC端口号。

  1. $ sudonetstat-nap | egrep '(kvm|qemu)'

图片 7

在那些例子中,用于 alice 虚拟机的 VNC 端口号是 5900。
然后开发银行3个VNC客户端,连接受三个端口号为5900的VNC服务器。在我们的例子中,虚拟机扶助由CentOS光盘文件运维。

图片 8

 

行使 virsh 管理虚拟机

下边列出了 virsh 命令的平常化用法:

始建客户机并且运行虚拟机:

  1. $ virsh create alice.xml

结束虚拟机并且删除客户机:

  1. $ virsh destroy alice

关门虚拟机(不用删除它):

  1. $ virsh shutdown alice

停顿虚拟机:

  1. $ virsh suspend alice

复原虚拟机:

  1. $ virsh resume alice

访问正在运维的虚拟机的调整台:

  1. $ virsh console alice

安装虚拟机开机运营:

  1. $ virsh autostart alice

翻看虚拟机的详细音讯:

  1. $ virsh dominfo alice

编写制定虚拟机的配备文件:

  1. $ virsh edit alice

上边的这几个命令将会选取贰个暗许的编辑器来调用主机配置文件。该配置文件中的任何退换都将自行被libvirt验证其正确。

你也能够在二个virsh会话中管理虚拟机。上边包车型地铁命令会创制并跻身到一个virsh会话中:

  1. $ virsh

在 virsh 提示中,你能够选择任何 virsh 命令。

图片 9

 

标题管理

  1. 自己在开创虚拟机的时候遭受了一个荒谬:

    error: internal error: no supported architecture for os type ‘hvm’

    比如你的硬件不扶助虚拟化的话你可能就能够遇见这些错误。(举例,AMDVT也许英特尔-V),那是运营KVM所必备的。借使您超出了这几个错误,而你的cpu援救虚拟化,那么这里能够给您有的可用的化解方案:

    首先,检查你的内核模块是或不是丢失。

    1. $ lsmod|grep kvm

    若是内核模块未有加载,你必须依照如下形式加载它。

    1. $ sudomodprobe kvm_intel (forIntel processor)
    2. $ sudomodprobe kvm_amd (for AMD processor)

    第3个缓慢解决方案正是增添 --connect qemu:///system 参数到 virsh
    命令中,如下所示。当你正在你的硬件平台上使用超越七个虚拟机管理器的时候就供给加上那几个参数(举例,VirtualBox,VMware)。

    1. $ virsh --connect qemu:///system create alice.xml
  2. 当小编试着访问笔者的虚拟机的登录调整台的时候蒙受了不当:

    1. $ virsh console alice
    2. error: internal error: cannot find character device <null>

    那么些错误爆发的缘故是你未曾在您的虚拟机配置文件中定义调控台设备。在
    xml 文件中加上上边包车型大巴里边设备部分就可以。

    1. <consoletype='pty'>
    2. <targetport='0'/>
    3. </console>

————————————–分割线

KVM中Linux虚拟机的硬盘增加方法
http://www.linuxidc.com/Linux/2013-02/80067.htm

Linux入门上学课程:虚拟机体验之KVM篇 
http://www.linuxidc.com/Linux/2015-03/114462.htm 

HighlanderHEL6 KVM虚拟化创建桥接网卡-网桥
http://www.linuxidc.com/Linux/2013-08/88517.htm

RedHat Linux
KVM虚拟机桥接
http://www.linuxidc.com/Linux/2013-02/79934.htm

CentOS 5.六下KVM的设置/桥接设置/虚拟机创立及运转
http://www.linuxidc.com/Linux/2012-12/76883.htm

Ubuntu下用libvirt安装KVM虚拟机时找不到/bin/qemu-kvm难点解决
http://www.linuxidc.com/Linux/2013-08/88985.htm

RedHat6.5下安装配置KVM虚拟机
http://www.linuxidc.com/Linux/2014-10/107972.htm

KVM虚拟化之嵌套虚拟化nested 
http://www.linuxidc.com/Linux/2015-05/117026.htm

————————————–分割线


via: http://xmodulo.com/use-kvm-command-line-debian-ubuntu.html

作者:Dan Nanni
译者:kylepeng93
校对:Ezio

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

正文永世更新链接地址http://www.linuxidc.com/Linux/2016-02/128731.htm

图片 10

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图