一、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 和基于它的免费命令所提供的许多强大管理功能的冰山一角。