iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Ubuntu的命令行终端里管理KVM虚拟机
  • 209
分享到

如何在Ubuntu的命令行终端里管理KVM虚拟机

2023-06-13 01:06:37 209人浏览 薄情痞子
摘要

本篇内容介绍了“如何在ubuntu的命令行终端里管理KVM虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:确认你的硬件平台支持虚

本篇内容介绍了“如何在ubuntu的命令行终端里管理KVM虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

第一步:确认你的硬件平台支持虚拟化

第一步,首先要确认你的 CPU 支持硬件虚拟化扩展(e.g.,Intel VT 或者 AMD-V),这是 KVM 对硬件的要求。下面的命令可以检查硬件是否支持虚拟化。

代码如下:


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


如何在Ubuntu的命令行终端里管理KVM虚拟机

如果在输出中不包含 vmx 或者 svm 标识,那么就意味着你的 cpu 不支持硬件虚拟化。因此你不能在你的机器上使用 KVM 。确认了 cpu 支持 vmx 或者 svm 之后,接下来开始安装 KVM。

对于 KVM 来说,它不要求运行在拥有 64 位内核系统的主机上,但是通常我们会推荐在 64 位系统的主机上面运行 KVM。

第二步:安装KVM

使用 apt-get 安装 KVM 和相关的用户空间工具

代码如下:


$ sudo apt-get install qemu-kvm libvirt-bin


安装期间,libvirtd 用户组(在 debian 上是 libvirtd-qemu 用户组)将会被创建,并且你的用户 id 将会被自动添加到该组中。这样做的目的是让你可以以一个普通用户而不是 root 用户的身份去管理虚拟机。你可以使用 id 命令来确认这一点,下面将会告诉你怎么去显示你的组 id:

代码如下:


$ id <your-userID>


如何在Ubuntu的命令行终端里管理KVM虚拟机

如果因为某些原因,libvirt(在 debian 中是 libvirt-qemu)没有在你的组 id 中被找到,你也可以手动将你自己添加到对应的组中,如下所示:

在 ubuntu 上:

代码如下:


$ sudo adduser [youruserID] libvirtd


在 debian 上:

代码如下:


$ sudo adduser [youruserID] libvirt-qemu


按照如下命令重新载入更新后的组成员关系。如果要求输入密码,那么输入你的登陆密码即可。

代码如下:


$ exec su -l $USER


这时,你应该可以以普通用户的身份去执行 virsh 了。做一个如下所示的测试,这个命令将会以列表的形式列出可用的虚拟机(当前的列表是空的)。如果你没有遇到权限问题,那意味着到目前为止一切都是正常的。

代码如下:


$ virsh list


 Id    Name                           State
第三步:配置桥接网络

为了使 KVM 虚拟机能够访问外部网络,一种方法是通过在 KVM 宿主机上创建 linux 桥来实现。创建之后的桥能够将虚拟机的虚拟网卡和宿主机的物理网卡连接起来,因此,虚拟机能够发送和接收由物理网卡传输的数据包。这种方式叫做网络桥接。

下面将告诉你如何创建并且配置网桥,我们创建一个网桥称它为 br0。

首先,安装一个必需的包,然后用命令行创建一个网桥。

代码如下:


$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0


下一步就是配置已经创建好的网桥,即修改位于 /etc/network/interfaces 的配置文件。我们需要将该桥接网卡设置成开机启动。为了修改该配置文件,你需要关闭你的操作系统上的网络管理器(如果你在使用它的话)。跟随操作指南的说明去关闭网络管理器。

关闭网络管理器之后,接下来就是通过修改配置文件来配置网桥了。

代码如下:


#auto eth0
   #iface eth0 inet dhcp
   auto br0
   iface br0 inet dhcp
           bridge_ports eth0
           bridge_stp off
           bridge_fd 0
           bridge_maxwait 0


在上面的配置中,我假设 eth0 是主要网卡,它也是连接到外网的网卡,同样,我假设 eth0 将会通过 DHCP 协议自动获取 ip 地址。注意,之前在 /etc/network/interfaces 中还没有对 eth0 进行任何配置。桥接网卡 br0 引用了 eth0 的配置,而 eth0 也会受到 br0 的制约。

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

代码如下:


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


如果因为某些原因,eth0 仍然保留了之前分配给了 br0 的 ip 地址,那么你可能必须手动删除 eth0 的 ip 地址。
如何在Ubuntu的命令行终端里管理KVM虚拟机

第四步:用命令行创建一个虚拟机

对于虚拟机来说,它的配置信息被存储在它对应的xml文件中。因此,创建一个虚拟机的第一步就是准备一个与虚拟机对应的 xml 文件。

下面是一个示例 xml 文件,你可以根据需要手动修改它。

XML/html Code复制内容到剪贴板

  1. <domain type='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.        <boot dev='cdrom'/>  

  10.      </os>  

  11.      <features>  

  12.        <acpi/>  

  13.      </features>  

  14.      <clock offset='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.        <disk type="file" device="disk">  

  21.          <driver name="qemu" type="raw"/>  

  22.          <source file="/home/dev/images/alice.img"/>  

  23.          <target dev="vda" bus="virtio"/>  

  24.          <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>  

  25.        </disk>  

  26.        <disk type="file" device="cdrom">  

  27.          <driver name="qemu" type="raw"/>  

  28.          <source file="/home/dev/iso/Centos-6.5-x86_64-minimal.iso"/>  

  29.          <target dev="hdc" bus="ide"/>  

  30.          <readonly/>  

  31.          <address type="drive" controller="0" bus="1" target="0" unit="0"/>  

  32.        </disk>  

  33.        <interface type='bridge'>  

  34.          <source bridge='br0'/>  

  35.          <Mac address="00:00:A3:B0:56:10"/>  

  36.        </interface>  

  37.        <controller type="ide" index="0">  

  38.          <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>  

  39.        </controller>  

  40.        <input type='mouse' bus='ps2'/>  

  41.        <graphics type='vnc' port='-1' autoport="yes" listen='0.0.0.0'/>  

  42.        <console type='pty'>  

  43.          <target port='0'/>  

  44.        </console>  

  45.      </devices>  

  46.    </domain>  

上面的主机xml配置文件定义了如下的虚拟机内容。

1GB内存,一个虚拟cpu和一个硬件驱动

磁盘镜像:/home/dev/images/alice.img

从 CD-ROM 引导(/home/dev/iso/CentOS-6.5-x86_64-minomal.iso)

网络:一个桥接到 br0 的虚拟网卡

通过 VNC 远程访问

<uuid></uuid> 中的 UUID 字符串可以随机生成。为了得到一个随机的 uuid 字符串,你可能需要使用 uuid 命令行工具。

代码如下:


$ sudo apt-get install uuid
$ uuid


生成一个主机 xml 配置文件的方式就是通过一个已经存在的虚拟机来导出它的 xml 配置文件。如下所示。

代码如下:


$ virsh dumpxml alice > bob.xml


如何在Ubuntu的命令行终端里管理KVM虚拟机

第五步:使用命令行启动虚拟机

在启动虚拟机之前,我们需要创建它的初始磁盘镜像。为此,你需要使用 qemu-img 命令来生成一个 qemu-kvm 镜像。下面的命令将会创建 10 GB 大小的空磁盘,并且它是 qcow2 格式的。

代码如下:


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


使用 qcow2 格式的磁盘镜像的好处就是它在创建之初并不会给它分配全部大小磁盘容量(这里是 10 GB),而是随着虚拟机中文件的增加而逐渐增大。因此,它对空间的使用更加有效。

现在,你可以通过使用之前创建的 xml 配置文件启动你的虚拟机了。下面的命令将会创建一个虚拟机,然后自动启动它。

代码如下:


$ virsh create alice.xml


Domain alice created from alice.xml
注意: 如果你对一个已经存在的虚拟机执行了了上面的命令,那么这个操作将会在没有任何警告的情况下抹去那个已经存在的虚拟机的全部信息。如果你已经创建了一个虚拟机,你可能会使用下面的命令来启动虚拟机。

代码如下:


$ virsh start alice.xml


使用如下命令确认一个新的虚拟机已经被创建并成功的被启动。

代码如下:


$ virsh list


 Id    Name                           State
----------------------------------------------------
 3     alice                          running
同样,使用如下命令确认你的虚拟机的虚拟网卡已经被成功的添加到了你先前创建的 br0 网桥中。

代码如下:


$ sudo brctl show


如何在Ubuntu的命令行终端里管理KVM虚拟机

远程连接虚拟机

为了远程访问一个正在运行的虚拟机的控制台,你可以使用VNC客户端。

首先,你需要使用如下命令找出用于虚拟机的VNC端口号。

代码如下:


$ sudo netstat -nap | egrep '(kvm|qemu)'


如何在Ubuntu的命令行终端里管理KVM虚拟机

在这个例子中,用于 alice 虚拟机的 VNC 端口号是 5900。 然后启动一个VNC客户端,连接到一个端口号为5900的VNC服务器。在我们的例子中,虚拟机支持由CentOS光盘文件启动。
如何在Ubuntu的命令行终端里管理KVM虚拟机

使用 virsh 管理虚拟机

下面列出了 virsh 命令的常规用法:

创建客户机并且启动虚拟机:

代码如下:


$ virsh create alice.xml


停止虚拟机并且删除客户机:

代码如下:


$ virsh destroy alice


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

代码如下:


$ virsh shutdown alice


暂停虚拟机:

代码如下:


$ virsh suspend alice


恢复虚拟机:

代码如下:


$ virsh resume alice


访问正在运行的虚拟机的控制台:

代码如下:


$ virsh console alice


设置虚拟机开机启动:

代码如下:


$ virsh autostart alice


查看虚拟机的详细信息:

代码如下:


$ virsh dominfo alice


编辑虚拟机的配置文件:

代码如下:


$ virsh edit alice


上面的这个命令将会使用一个默认的编辑器来调用主机配置文件。该配置文件中的任何改变都将自动被libvirt验证其正确性。

你也可以在一个virsh会话中管理虚拟机。下面的命令会创建并进入到一个virsh会话中:

代码如下:


$ virsh


在 virsh 提示中,你可以使用任何 virsh 命令。
如何在Ubuntu的命令行终端里管理KVM虚拟机

问题处理

我在创建虚拟机的时候遇到了一个错误:

error: internal error: no supported architecture for os type 'hvm'

如果你的硬件不支持虚拟化的话你可能就会遇到这个错误。(例如,Intel VT或者AMD-V),这是运行KVM所必需的。如果你遇到了这个错误,而你的cpu支持虚拟化,那么这里可以给你一些可用的解决方案:

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

代码如下:


$ lsmod | grep kvm


如果内核模块没有加载,你必须按照如下方式加载它。

代码如下:


$ sudo modprobe kvm_intel (for Intel processor)
$ sudo modprobe kvm_amd (for AMD processor)


第二个解决方案就是添加 --connect qemu:///system 参数到 virsh 命令中,如下所示。当你正在你的硬件平台上使用超过一个虚拟机管理器的时候就需要添加这个参数(例如,VirtualBox,VMware)。

$ virsh --connect qemu:///system create alice.xml
当我试着访问我的虚拟机的登陆控制台的时候遇到了错误:

代码如下:


$ virsh console alice


 error: internal error: cannot find character device <null>
这个错误发生的原因是你没有在你的虚拟机配置文件中定义控制台设备。在 xml 文件中加上下面的内部设备部分即可。

XML/HTML Code复制内容到剪贴板

  1. <console type='pty'>  

  2.   <target port='0'/>  

  3. </console>  

“如何在Ubuntu的命令行终端里管理KVM虚拟机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何在Ubuntu的命令行终端里管理KVM虚拟机

本文链接: https://www.lsjlt.com/news/264294.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Ubuntu的命令行终端里管理KVM虚拟机
    本篇内容介绍了“如何在Ubuntu的命令行终端里管理KVM虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:确认你的硬件平台支持虚...
    99+
    2023-06-13
  • Linux下怎么通过命令行管理KVM虚拟环境
    这篇文章主要介绍“Linux下怎么通过命令行管理KVM虚拟环境”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux下怎么通过命令行管理KVM虚拟环境”文章能帮助大家解决问题。KVM 是 Linu...
    99+
    2023-06-28
  • Ubuntu上如何安装GNOME命令行终端Terminator
    这篇文章主要介绍“Ubuntu上如何安装GNOME命令行终端Terminator”,在日常操作中,相信很多人在Ubuntu上如何安装GNOME命令行终端Terminator问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-13
  • 如何在linux的终端退出python命令行
    这篇文章主要介绍了如何在linux的终端退出python命令行,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如下所示:Python 2.7.7 (default, Jun 3...
    99+
    2023-06-09
  • linux虚拟机如何调出命令行
    在Linux虚拟机中,可以通过以下几种方式调出命令行: 使用快捷键:通常情况下,在Linux虚拟机中可以使用快捷键Ctrl + ...
    99+
    2024-04-09
    linux
  • 在Linux系统下怎么用命令行工具管理虚拟机环境
    本篇内容主要讲解“在Linux系统下怎么用命令行工具管理虚拟机环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux系统下怎么用命令行工具管理虚拟机环境”吧! 配置存储池Virsh命令行...
    99+
    2023-06-13
  • 虚拟机中如何关闭redis的命令
    要关闭Redis的命令,可以使用以下两种方法:1. 使用Redis自带的命令:在虚拟机中打开Redis命令行终端,输入`SHUTDO...
    99+
    2023-08-23
    redis
  • 如何在Ubuntu的虚拟机上访问USB设备
    这篇文章将为大家详细讲解有关如何在Ubuntu的虚拟机上访问USB设备,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为了能在Ubuntu主机上的虚拟机上访问你的USB设备,你需要把你的用户名...
    99+
    2023-06-16
  • 如何在Linux命令行下管理Samba4 AD架构
    这篇文章将为大家详细讲解有关如何在Linux命令行下管理Samba4 AD架构,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Samba4 得相关知识。在命令行下管理 可以通过 sa...
    99+
    2023-06-28
  • 在Windows2008下如何通过命令行来管理磁盘
      Windows Server 2008的一个特性在于,操作系统的许多方面的功能都可以通过命令行方式进行管理。如果我们在一台带GUI界面的电脑上正好需要定义一个RAID阵列,通常是比较容易实现,在磁盘管理控制台程序重点...
    99+
    2023-05-24
    管理 磁盘 命令 通过 如何 Disk Diskpart 输入 可以 一个 命令行
  • 如何通过宝塔面板进行虚拟机实例的管理
    要使用宝塔面板进行虚拟机实例的管理,需要按照以下步骤进行操作:1. 登录宝塔面板:在浏览器中输入服务器的IP地址或域名,然后输入用户...
    99+
    2023-10-10
    宝塔面板
  • 如何在虚拟主机上安装和管理数据库
    如何在虚拟主机上安装和管理数据库?在虚拟主机上安装和管理数据库是一个重要的技能,无论您是个人用户还是企业用户,这都可以帮助您处理和存储较大的数据。市面上一些虚拟主机提供商,在用户购买开通虚拟主机时会赠送一定量的数据库。这些虚拟主机提供商包...
    99+
    2024-02-06
    数据库 虚拟主机 虚拟主机知识
  • conda常用命令之–虚拟环境管理(教你如何创建、激活、重命名、删除虚拟环境)
    conda常用命令之–虚拟环境管理 1. 创建环境1.1 使用命令创建环境1.2 生成及从 environment.yml 文件创建环境 2. 激活与退出环境3. 升级包或环境4. 环境...
    99+
    2023-09-03
    conda python tensorflow
  • CentOS终端命令行显示中文乱码的问题如何解决
    这篇文章主要讲解了“CentOS终端命令行显示中文乱码的问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS终端命令行显示中文乱码的问题如何解决”吧!安装CentOS的时候...
    99+
    2023-06-10
  • 阿里云虚拟主机带数据库如何高效管理您的在线业务
    阿里云虚拟主机带数据库是一种集服务器主机、数据库和应用程序于一体的云计算服务。它能够帮助您高效地管理您的在线业务,提供稳定、可靠、安全的运行环境。在本文中,我们将详细探讨如何使用阿里云虚拟主机带数据库来实现高效管理。 一、阿里云虚拟主机带数...
    99+
    2023-11-19
    在线 您的 高效
  • 麒麟操作系统中的终端命令如何帮助你更好地管理电脑
    麒麟操作系统中的终端命令可以帮助您更好地管理电脑,提供了许多强大和高级的功能。以下是一些常用的终端命令及其功能:1. cd:切换当前...
    99+
    2023-10-10
    麒麟操作系统
  • 如何进行gopher-lua虚拟机的原理分析
    这篇文章将为大家详细讲解有关如何进行gopher-lua虚拟机的原理分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在 GitHub 玩耍时,偶然发现了gopher-lua ,这是一个纯 ...
    99+
    2023-06-16
  • 在命令行中如何使用nmcli来管理网络连接
    这篇文章主要介绍在命令行中如何使用nmcli来管理网络连接,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!nmcli 命令赋予你直接在 Linux 命令行操作 NetworkManager 工具的能力。nmcli&nb...
    99+
    2023-06-15
  • LINUX如何利用远程管理命令进行关机和重启
    这篇“LINUX如何利用远程管理命令进行关机和重启”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“LINUX如何利用远程管理命令进行关机和重启”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家...
    99+
    2023-06-28
  • 如何理解Python虚拟机中的Python运行环境
    今天就跟大家聊聊有关如何理解Python虚拟机中的Python运行环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。其实Python运行环境是一个全局性的概念,而执行环境实际就是一个...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作