初探KVM——使用libvirt的virsh管理kvm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探KVM——使用libvirt的virsh管理kvm相关的知识,希望对你有一定的参考价值。

一、KVM虚拟机的管理工具

准确来说,KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。

QEMU-KVM:在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 的 CPU 上虚拟一个 Power 的 CPU,并利用它编译出可运行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中分为 kernel 部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。

Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令—— virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的是图形用户界面,这就是 virt-manager。他是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。

二、libvirt简介

    libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。链接:http://libvirt.org/
virsh是libvirt对应的shell命令。


三、virsh基础常用操作

1.查看虚拟机磁盘列表(包括光驱):
#virsh domblklist
rhel6
#rhel6代表虚拟机名称
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/Clinet
hdc        /FTP/gnome-uplookinng/rhel6u4.iso
Target    设备名(磁盘名):
命名规范例如:   vda      vd代表:虚拟磁盘     a   第一块   hdc(通常固定为cdrom的设备名)
2.添加/删除硬盘(可以在线添加/删除):
#qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/rhel.qcow2 15G
#virsh attach-disk rhel6 /var/lib/libvirt/images/rhel6.vdb vdb --persistent
#virsh detach-disk node002 /var/lib/libvirt/images/rhel.qcow2 --persistent
命令语法:
attach-disk 添加磁盘的参数
rhel6          虚拟机的名称
/var/lib/libvirt/images/rhel6.vdb   磁盘文件的路径和名称   
vdb             磁盘文件的设备名称
--persistent   永久添加磁盘,不加该参数代表非永久添加,虚拟机重启后磁盘消失.
3.添加/删除网卡(离线添加):
#virsh attach-interface node --type bridge --source br0 --persistent
#virsh detach-interface node --type bridge  --mac 52:54:00:e5:82:c1 --persistent
#删除网卡必须带mac地址
4.镜像操作
  
添加镜像:
#virsh attach-disk rhel6 /FTP/rhel6u4.iso  hdc --type cdrom --persistent
更换镜像:
#virsh change-media rhel6 hdc /FTP/rhel-server-6.5-x86_64-dvd.iso


四、virsh命令分类

技术分享

    可以创建、删除、运行、停止和管理你的虚拟机从命令行,使用一个叫做virsh工具。Virsh高级Linux管理员,尤其有用脚本或自动化管理他们的虚拟机。

五、virsh 命令选项

1.virsh常用命令



技术分享

2. virsh 命令选项 - 存储器


技术分享


3. virsh 命令选项 - 资源



技术分享

4. virsh 命令选项 - 网络



技术分享

5. virsh 命令选项:用户管理


技术分享

系统会使用为用户和组设置的缺省值创建用户和组。当创建用户或组标识时,所创建帐户将处于锁定状态。必须分配密码以解锁该标识。
例如,创建名为 NeildeGrasseTyson 的用户。
useradd NeildeGrasseTyson要查看使用该用户创建的缺省值,请添加 -D 选项:
useradd NeildeGrasseTyson -D要解锁用户帐户,请添加密码:
passwd NeildeGrasseTyson有关这些命令的选项的更多信息,请参阅这些命令的联机帮助页。
密码管理
良好的密码管理包含必须要求用户定期更改密码这一需求。要配置密码到期,请使用图形用户管理界面中提供的密码选项或 chage 命令。
chage 命令允许您指定密码寿命值(例如在密码更改之间的天数)。
例如,对于用户标识 NeildeGrasseTyson,要将密码更改之间的天数指定为 90 天,请发出以下命令:
chage -M 90 NeildeGrasseTyson当最初对用户标识进行使用时,还可强制立即更改密码。请使用以下命令:
chage -d 0 NeildeGrasseTyson有关这些命令的选项的更多信息,请参阅这些命令的联机帮助页。


6. virsh 命令选项:迁移



技术分享

结束语

  基于 Linux 的开源虚拟化技术在不停地发展。KVM 的易用性和持续发展已帮助它取代了可能更强大的 Xen 虚拟化技术,成为开源 Linux 虚拟化的标准。无论选择哪种虚拟化技术,这种演变都突出了使用标准的、独立于技术的管理命令(比如 libvirt 虚拟化 API 所提供的命令)的价值。  
  KVM 虚拟机在不断的增强和完善中,开源社区和 Linux 的系统集成商也在开发各种各样的基于 KVM 的管理工具,将来的 KVM 迁移工具会在性能,功能,可操作性和自动化程度上大大增强。
  本文通过示例展示了如何使用基于 libvirt 的命令来简化虚拟机的存储分配以及在存储中安装它的过程,但仅触及了 libvirt API 和基于它的免费命令所提供的许多强大管理功能的冰山一角。  

本文出自 “子非鱼” 博客,请务必保留此出处http://5323197.blog.51cto.com/5313197/1738495

以上是关于初探KVM——使用libvirt的virsh管理kvm的主要内容,如果未能解决你的问题,请参考以下文章

KVM的管理命令

使用libvirt工具栈管理kvm虚拟机

KVM虚拟机的日常管理与配置

KVM基本功能管理之virsh常用命令

KVM 虚拟化 virsh 命令来源 libvirt-client

linux下kvm虚拟机的搭建