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

时间: 2024-10-10 01:59:54

初探KVM——使用libvirt的virsh管理kvm的相关文章

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

KVM工具libvirt、virsh、virt-manager的简单介绍

KVM虚拟化中libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(virsh.virt-install.virt-manager等)和云计算框架平台都在底层使用libvirt的应用程序接口. virsh是用于管理虚拟化环境中的客户机和Hypervisor的命令行工具,与virt-manager等工具类似,它也是通过libvirt API来实现虚拟化的管理.virsh是完全在命令行文本模式下运行的用户态工具,它是系统管理员通过脚本程序实现虚拟

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

libvirt介绍 Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等.Libvirt概括起来包括一个API库.一个 daemon(libvirtd)和一个命令行工具(virsh).支持的虚拟化技术:KVM, XEN, VMWARE, Qemu, LXC, OpenVZ等libvirt中的术语: node:指物理节点 hypervisor: domain: vm instances 虚拟机实例Libvirt的主要目标是:提供一种单一的方式管理多种不同的

Linux实现KVM+QEMU+libvirt的虚拟机环境 并使用virsh对虚拟机进行管理

说明: 本文使用的实验环境是运行在windows10上的Vmware workstation 12.5 pro,宿主机操作系统是Ubuntu16(机器名称为KVM_test),kvm+qemu+libvirt安装在KVM_test上.运行在KVM_test上的客户机操作系统也是Ubuntu16(机器名称为test_ubuntu). 本实验需要的软件有Vmware workstation.vnc viewer.ubuntu16的ios镜像.Vnc viewer需要注册码,请自行百度查找. 本实验所

Service系统服务(一):安装一个KVM服务器、KVM平台构建及简单管理、virsh基本管理操作、xml配置文件的应用、为虚拟机制作快照备份、快建新虚拟机

一.安装一个KVM服务器 目标: 本例要求准备一台 RHEL7.2 服务器,将其搭建为KVM平台,主要完成下列操作: 1> 关闭本机的SELinux保护.防火墙服务   2> 挂载RHEL7光盘到 /mnt/dvd,将其配置为本机YUM源(baseurl = file:///mnt/dvd)   3> 安装KVM相关包组,确保已启用 libvirtd 服务 方案: RHEL7中的虚拟化服务软件组: 1> 虚拟化平台 -- "Virtualization Platform&

virsh 操作kvm虚拟机

#查看你的硬件是否支持虚拟化.命令: [[email protected]_166_143 data]#egrep '(vmx|svm)' /proc/cpuinfo #安装基础包 [[email protected]_166_143 data]#yum -y install kvm libvirt bridge-utils acpid #启动依赖服务及加载模块 [[email protected]_166_143 data]#sed -i '/modprobe kvm/d' /etc/rc.l

KVM+Qemu+Libvirt实战

上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚拟机并管理. kvm是用来虚拟化或者说模拟CPU.内存等硬件的. QEMU只是用来虚拟化硬盘的 libvirt提供了整个虚拟机的管理,比如说虚拟机的启动,停止,创建,删除等等. 其实KVM+Qemu+Libvirt就是模拟了一个VMWare软件 环境: 宿主机:ubuntu16.04的server版

KVM虚拟化平台部署及管理

前言 KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发.2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分.2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中.本文介绍KVM虚拟化平台部署及管理. KVM简介 KVM特点 KVM必须在具备Intel VT或AMD-V功能的x86平台上运行.KVM包含一个

centos下C编程调用libvirt的API访问KVM虚拟机

一.简介 libvirt是一套免费.开源的支持Linux下主流虚拟化工具的C函数库,其旨在为包括Xen在内的各种虚拟化工具提供一套方便.可靠的编程接口,支持与C,C++,Ruby,Python等多种主流开发语言的绑定.当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virt-install(命令行模式)等均基于libvirt开发而成. 本文基于libvirt,使用它的C函数库进行虚拟机的相应操作. 二.详解 1.创建虚拟机 (1)C语言代码 /**********