位置: 编程技术 - 正文

在Ubuntu的命令行终端里管理KVM虚拟机的教程(ubuntu的命令行快捷键)

编辑:rootadmin

推荐整理分享在Ubuntu的命令行终端里管理KVM虚拟机的教程(ubuntu的命令行快捷键),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ubuntu怎样调出命令行,ubuntu如何用命令运行程序,ubuntu怎样调出命令行,ubuntu的命令行在哪里,ubuntu如何用命令运行程序,ubuntu的命令行界面输入无效,ubuntu的命令行快捷键,ubuntu的命令行怎么开,内容如对您有帮助,希望把文章链接给更多的朋友!

有很多不同的方式去管理运行在 KVM 管理程序上的虚拟机。例如,virt-manager 就是一个流行的基于图形界面的前端虚拟机管理工具。然而,如果你想要在没有图形窗口的服务器环境下使用 KVM ,那么基于图形界面的解决方案显然是行不通的。事实上,你可以单纯使用包装了 kvm 命令行脚本的命令行来管理 KVM 虚拟机。作为替代方案,你可以使用 virsh 这个容易使用的命令行程序来管理客户虚拟机。在 virsh 中,它通过和 libvirtd 服务通信来达到控制虚拟机的目的,而 libvirtd 可以控制多个不同的虚拟机管理器,包括 KVM,Xen,QEMU,LXC 和 OpenVZ。当你想要对虚拟机的前期准备和后期管理实现自动化操作时,像 virsh 这样的命令行管理工具是非常有用的。同样,virsh 支持多个管理器也就意味着你可以通过相同的 virsh 接口去管理不同的虚拟机管理器。

在这篇文章中,我会示范怎样在 ubuntu 和 debian 上通过使用 virsh 命令行去运行 KVM。

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

第一步,首先要确认你的 CPU 支持硬件虚拟化扩展(e.g.,Intel VT 或者 AMD-V),这是 KVM 对硬件的要求。下面的命令可以检查硬件是否支持虚拟化。复制代码代码如下:$ egrep '(vmx|svm)' --color /proc/cpuinfo

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

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

第二步:安装KVM

使用 apt-get 安装 KVM 和相关的用户空间工具。复制代码代码如下:$ sudo apt-get install qemu-kvm libvirt-bin安装期间,libvirtd 用户组(在 debian 上是 libvirtd-qemu 用户组)将会被创建,并且你的用户 id 将会被自动添加到该组中。这样做的目的是让你可以以一个普通用户而不是 root 用户的身份去管理虚拟机。你可以使用 id 命令来确认这一点,下面将会告诉你怎么去显示你的组 id:复制代码代码如下:$ id <your-userID>

如果因为某些原因,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 地址。

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

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

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

XML/HTML Code复制内容到剪贴板 <domain type='kvm'> <name>alice</name> <uuid>f5b8cb-9c7a--b9-2bdf7e2aa</uuid> <memory></memory> <currentMemory></currentMemory> <vcpu>1</vcpu> <os> <type>hvm</type> <boot dev='cdrom'/> </os> <features> <acpi/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type="file" device="disk"> <driver name="qemu" type="raw"/> <source file="/home/dev/images/alice.img"/> <target dev="vda" bus="virtio"/> <address type="pci" domain="0x" bus="0x" slot="0x" function="0x0"/> </disk> <disk type="file" device="cdrom"> <driver name="qemu" type="raw"/> <source file="/home/dev/iso/CentOS-6.5-x_-minimal.iso"/> <target dev="hdc" bus="ide"/> <readonly/> <address type="drive" controller="0" bus="1" target="0" unit="0"/> </disk> <interface type='bridge'> <source bridge='br0'/> <mac address="::A3:B0::"/> </interface> <controller type="ide" index="0"> <address type="pci" domain="0x" bus="0x" slot="0x" function="0x1"/> </controller> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport="yes" listen='0.0.0.0'/> <console type='pty'> <target port='0'/> </console> </devices> </domain>

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

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

在Ubuntu的命令行终端里管理KVM虚拟机的教程(ubuntu的命令行快捷键)

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

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

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

通过 VNC 远程访问

<uuid></uuid> 中的 UUID 字符串可以随机生成。为了得到一个随机的 uuid 字符串,你可能需要使用 uuid 命令行工具。复制代码代码如下:$ sudo apt-get install uuid$ uuid生成一个主机 xml 配置文件的方式就是通过一个已经存在的虚拟机来导出它的 xml 配置文件。如下所示。复制代码代码如下:$ virsh dumpxml alice > bob.xml

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

在启动虚拟机之前,我们需要创建它的初始磁盘镜像。为此,你需要使用 qemu-img 命令来生成一个 qemu-kvm 镜像。下面的命令将会创建 GB 大小的空磁盘,并且它是 qcow2 格式的。复制代码代码如下:$ qemu-img create -f qcow2 /home/dev/images/alice.img G使用 qcow2 格式的磁盘镜像的好处就是它在创建之初并不会给它分配全部大小磁盘容量(这里是 GB),而是随着虚拟机中文件的增加而逐渐增大。因此,它对空间的使用更加有效。

现在,你可以通过使用之前创建的 xml 配置文件启动你的虚拟机了。下面的命令将会创建一个虚拟机,然后自动启动它。复制代码代码如下:$ virsh create alice.xmlDomain alice created from alice.xml注意: 如果你对一个已经存在的虚拟机执行了了上面的命令,那么这个操作将会在没有任何警告的情况下抹去那个已经存在的虚拟机的全部信息。如果你已经创建了一个虚拟机,你可能会使用下面的命令来启动虚拟机。复制代码代码如下:$ virsh start alice.xml使用如下命令确认一个新的虚拟机已经被创建并成功的被启动。复制代码代码如下:$ virsh list Id Name State---------------------------------------------------- 3 alice running同样,使用如下命令确认你的虚拟机的虚拟网卡已经被成功的添加到了你先前创建的 br0 网桥中。复制代码代码如下:$ sudo brctl show

远程连接虚拟机

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

首先,你需要使用如下命令找出用于虚拟机的VNC端口号。复制代码代码如下:$ sudo netstat -nap | egrep '(kvm|qemu)'

在这个例子中,用于 alice 虚拟机的 VNC 端口号是 。 然后启动一个VNC客户端,连接到一个端口号为的VNC服务器。在我们的例子中,虚拟机支持由CentOS光盘文件启动。

使用 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 命令。

问题处理

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

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 参数到 virsh 命令中,如下所示。当你正在你的硬件平台上使用超过一个虚拟机管理器的时候就需要添加这个参数(例如,VirtualBox,VMware)。

$ virsh --connect create alice.xml当我试着访问我的虚拟机的登陆控制台的时候遇到了错误:复制代码代码如下: $ virsh console alice error: internal error: cannot find character device <null>这个错误发生的原因是你没有在你的虚拟机配置文件中定义控制台设备。在 xml 文件中加上下面的内部设备部分即可。

XML/HTML Code复制内容到剪贴板 <console type='pty'> <target port='0'/> </console>

Ubuntu系统图形化界面操作时的常用快捷键整理 键盘类1.先同时按住Alt+Ctrl键,再按键盘上的左右光标键可以切换工作区2.web时按/键等于查找功能,桌面或者目录时按/等于打开..3.当前目录下快速文件(夹

Linux服务器上使用Gmail的免费SMTP服务发送监控通知 假定你想配置一个Linux应用,用于从你的服务器或桌面客户端发送邮件信息。邮件信息可能是邮件简报、状态更新(如Cachet)、监控警报(如Monit)、磁

Ubuntu系统中图片编辑程序ImageMagick的安装教程 1.下载

标签: ubuntu的命令行快捷键

本文链接地址:https://www.jiuchutong.com/biancheng/352818.html 转载请保留说明!

上一篇:Ubuntu系统中软件安装的命令小结(ubuntu20.04常用软件)

下一篇:Ubuntu系统图形化界面操作时的常用快捷键整理(ubuntu开启图形化界面)

  • 企业所得税的纳税人发生年度亏损的时间
  • 固定资产的进项税额不允许抵扣的增值税属于
  • 小规模纳税人零申报是每季度报吗
  • 高铁票丢失了可以二次打印吗
  • 年报资金数额要怎样填
  • 申报增值税之后怎么做账
  • 云信付款如何贴现
  • 资产总额全年季度平均值怎么填写
  • 当期计提加计抵减额如何确定
  • 成本少结转了怎么调回
  • 企业将资产移送他人的下列情形
  • 增值税都有哪些科目
  • 农产品增值税进项税额核定扣除办法
  • 技术变动成本是指
  • 捐助建学校
  • 个人缴纳物业费怎么开发票
  • 如何看待餐饮企业文化
  • 空调要买加湿器吗
  • 处置固定资产按残值还是净值
  • 房地产开发企业什么意思
  • 个税专项附加扣除是什么意思
  • 收回应收账款资产为什么不变
  • 手续费进项可以抵扣吗
  • 电脑图标怎么在下面显示
  • 收到厂家返利怎么做账务处理
  • 信息技术费用如何做分录
  • 没有营业执照哪个银行可以办理房产抵押贷款
  • win7打开软件提示0xc0000005
  • PHP:xml_parse_into_struct()的用法_XML解析器函数
  • php string
  • 闲置的固定电话机怎么改装
  • 用php开发app
  • win11怎么通过ip连接打印机
  • set_ccopt_property
  • php的time函数
  • html5 function
  • discuz手机标准版
  • 利润表主营业务成本怎么算
  • 个税少报了能查出来吗
  • 当月销售次月开票就按次月申报
  • 免费学电脑网站
  • 暂估入库成本处理
  • python导入模块的本质
  • 开业前需要支出什么费用
  • 关于翡翠手镯知识
  • 小企业在购买商品过程中发生的费用
  • sql server怎么升级版本
  • 公司购买手表可以做费用吗?
  • 回忆一下会计核算程序有哪几种?
  • 持有至到期投资减值准备
  • 工程物资主要包括建筑材料
  • 房租费用入账怎么处理
  • 异地学校
  • 机床上的配件计入什么费用
  • 主营业务成本带二级科目吗
  • 预付账款主要是什么
  • 小微企业如何自己开发票
  • 非房产企业出售土地,能否计算抵减地价款
  • 教育费附加免征文件
  • 养老院的账务处理会计实务问答
  • 成本核算应设置哪些会计账户
  • sqlserverssms
  • mysql怎么复制粘贴语句
  • centos6.2安装
  • MySQL slave_net_timeout参数解决的一个集群问题案例
  • mysql触发器语句
  • sqlserver存储过程怎么查看
  • win8系统c盘占用多大
  • torch.cuda.set_device
  • win7屏幕颜色不正常
  • pm是什么软件的缩写
  • javascript操作dom对象
  • javascript面向对象编程 PDF
  • jquery课程总结
  • javascript数组操作方法
  • python的读写文件
  • 广西国家税务局于红林
  • 河南省国家税务局电子税务局
  • 新注册的公司应该做什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设