KVM 介绍(5):libvirt 介绍 [ Libvrit for KVM/QEMU ]
学习 KVM 的系列文章:
- (1)介绍和安装
- (2)CPU 和 内存虚拟化
- (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton)
- (4)I/O PCI/PCIe设备直接分配和 SR-IOV
- (5)libvirt 介绍
- (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机
- (7)快照 (snapshot)
- (8)迁移 (migration)
1. Libvirt 是什么
为什么需要Libvirt?
- Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用。
- Hypervisor 种类众多,没有统一的编程接口来管理它们,这对云环境来说非常重要。
- 没有统一的方式来方便地定义虚拟机相关的各种可管理对象。
Libvirt提供了什么?
- 它提供统一、稳定、开放的源代码的应用程序接口(API)、守护进程 (libvirtd)和和一个默认命令行管理工具(virsh)。
- 它提供了对虚拟化客户机和它的虚拟化设备、网络和存储的管理。
- 它提供了一套较为稳定的C语言应用程序接口。目前,在其他一些流行的编程语言中也提供了对libvirt的绑定,在Python、Perl、Java、Ruby、PHP、OCaml等高级编程语言中已经有libvirt的程序库可以直接使用。
- 它对多种不同的 Hypervisor 的支持是通过一种基于驱动程序的架构来实现的。libvirt 对不同的 Hypervisor 提供了不同的驱动,包括 Xen 的驱动,对QEMU/KVM 有 QEMU 驱动,VMware 驱动等。在 libvirt 源代码中,可以很容易找到 qemu_driver.c、xen_driver.c、xenapi_driver.c、vmware_driver.c、vbox_driver.c 这样的驱动程序源代码文件。
- 它作为中间适配层,让底层 Hypervisor 对上层用户空间的管理工具是可以做到完全透明的,因为 libvirt 屏蔽了底层各种 Hypervisor 的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。
- 它使用 XML 来定义各种虚拟机相关的受管理对象。
目前,libvirt 已经成为使用最为广泛的对各种虚拟机进行管理的工具和应用程序接口(API),而且一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager等)和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用libvirt的应用程序接口。
(SLE 11)
1.1 Libvirt C API
1.1.1 Libvirti API 所管理的主要对象
对象 | 解释 |
Domain (域) | 指运行在由Hypervisor提供的虚拟机器上的一个操作系统实例(常常是指一个虚拟机)或者用来启动虚机的配置。 |
Hypervisor | 一个虚拟化主机的软件层 |
Node (主机) | 一台物理服务器。 |
Storage pool (存储池) | 一组存储媒介的集合,比如物理硬盘驱动器。一个存储池被划分为小的容器称作卷。卷会被分给一个或者多个虚机。 |
Volume (卷) | 一个从存储池分配的存储空间。一个卷会被分给一个或者多个域,常常成为域里的虚拟硬盘。 |
1.1.2 对象的管理模型
对象名称 | 对象 | Python 类 | 描述 |
Connect | 与 Hypervisor的连接 |
virConnectPtr |
在调用任何 API 去管理一个本地或者远端的Hypervisor前,必须建立和这个Hypervisor的连接。 |
Domain | Guest domain |
virDomainPtr |
用于列举和管理已有的虚机,或者创建新的虚机。唯一标识:ID,Name,UUID。一个域可能是暂时性的或者持久性的。暂时性的域只能在它运行期间被管理。持久性的域在主机上保存了它的配置。 |
Virtual Network | 虚拟网络 |
virNetworkPtr |
用于管理虚机的网络设备。唯一标识:Name,UUID。一个虚拟网络可能是暂时性的或者持久性的。每个主机上安装libvirt后,它都有一个默认的网络设备“default”。它向该主机上运行的虚机提供DHCP服务,以及通过NAT连接到主机上。 |
Storage Pool | 存储池 |
virStoragePoolPtr |
用于管理虚拟机内的所有存储,包括 local disk, logical volume group, iSCSI target, FibreChannel HBA and local/network file system。唯一标识:Name,UUID。一个存储池可能是暂时性的或者持久性的。Pool 的 type 可以是 dir , fs , netfs , disk , iscsi , logical , scsi ,mpath , rbd , sheepdog , gluster 或者 zfs。
|
Storage Volume | 存储卷 |
virStorageVolPtr |
用于管理一个存储池内的存储块,包括一个池内分配的块、磁盘分区、逻辑卷、SCSI/iSCSI Lun,或者一个本地或者网络文件系统内的文件等。唯一标识:Name,Key,Path。 |
Host device | 主机设备 |
virNodeDevPtr |
用于管理主机上的物理硬件设备,包括 the physical USB or PCI devices and logical devices these provide, such as a NIC, disk, disk
controller, sound card, etc。唯一标识:Name。 |
1.1.3 API 的简单分类
Libvirt API 就是对各种对象的各种操作,包括基本的增、删、改、查操作和其它操作。
对象 | 增 | 删 | 改 | 查 | 其它 |
Connect |
virConnectOpen virConnectOpenAuth virConnectOpenReadOnly |
virConnectClose | virConnectSetKeepAlive | ||
Strorage pool |
virStoragePoolBuild virStoragePoolCreate virStoragePoolCreateXML virStoragePoolDefineXML |
virStoragePoolDelete virStoragePoolDestroy virStoragePoolFree virStoragePoolUndefine |
virStoragePoolRefresh virStoragePoolSetAutostart |
virConnectFindStoragePoolSources virConnectListAllStoragePools virConnectListDefinedStoragePools virConnectListStoragePools virConnectNumOfDefinedStoragePools virConnectNumOfStoragePools virStoragePoolGetInfo/Name/UUID/UUIDString/XMLDesc |
virStoragePoolGetAutostart virStoragePoolGetConnect virStoragePoolNumOfVolumes virStoragePoolListAllVolumes virStoragePoolListVolumes |
Storage volume |
virStorageVolCreateXML virStorageVolCreateXMLFrom |
virStorageVolDelete virStorageVolFree |
virStorageVolResize virStorageVolUpload virStorageVolWipe virStorageVolWipePattern |
virStorageVolGetConnect/Info/Key/Name/Path/XMLDesc virStorageVolLookupByKey/Name/Path virStorageVolRef |
virStorageVolDownload |
Network |
virNetworkCreate virNetworkCreateXML virNetworkDefineXML |
virNetworkDestroy virNetworkFree virNetworkUndefine |
virNetworkSetAutostart virNetworkUpdate |
virConnectListAllNetworks virConnectListDefinedNetworks virConnectListNetworks virConnectNumOfDefinedNetworks virConnectNumOfNetworks virNetworkGetBridgeName/DHCPLeases/Name/UUID/UUIDString/XMLDesc virNetworkGetConnect |
virConnectNetworkEventDeregisterAny virConnectNetworkEventGenericCallback virNetworkDHCPLeaseFree |
Domain snapshot | virDomainSnapshotCreateXML |
virDomainSnapshotDelete virDomainSnapshotFree |
virDomainRevertToSnapshot |
virDomainHasCurrentSnapshot virDomainListAllSnapshots virDomainSnapshotCurrent virDomainSnapshotGetConnect/Domain/Name/Parent/XMLDesc virDomainSnapshotHasMetadata virDomainSnapshotIsCurrent virDomainSnapshotListAllChildren virDomainSnapshotListChildrenNames virDomainSnapshotListNames virDomainSnapshotLookupByName virDomainSnapshotNum virDomainSnapshotNumChildren virDomainSnapshotRef |
|
Host |
|
virInitialize virNodeSetMemoryParameters virNodeSuspendForDuration |
virConnectBaselineCPU virConnectCompareCPU virConnectGetCPUModelNames/Capabilities/Hostname/LibVersion/MaxVcpus/Sysinfo/Type/URI/Version virConnectIsAlive virConnectIsEncrypted virConnectIsSecure virGetVersion virNodeGetCPUMap/CPUStats /CellsFreeMemory/FreeMemory/Info/MemoryParameters/MemoryStats / virNodeGetSecurityModel |
virTypedParamsAddBoolean virTypedParamsAddDouble virTypedParamsAddFromString virTypedParamsAddInt virTypedParamsAddLLong virTypedParamsAddString virTypedParamsAddUInt virTypedParamsAddULLong virTypedParamsClear virTypedParamsFree virTypedParamsGet |
|
Interface |
virInterfaceCreate virInterfaceDefineXML |
virInterfaceDestroy virInterfaceFree virInterfaceUndefine |
virInterfaceChangeBegin virInterfaceChangeCommit virInterfaceChangeRollback |
virConnectListAllInterfaces virConnectListDefinedInterfaces virConnectListInterfaces virConnectNumOfDefinedInterfaces virConnectNumOfInterfaces virInterfaceGetConnect virInterfaceGetMACString virInterfaceGetName virInterfaceGetXMLDesc virInterfaceIsActive virInterfaceLookupByMACString virInterfaceLookupByName virInterfaceRef |
|
Net Filter |
virNWFilterDefineXML |
virNWFilterFree virNWFilterUndefine |
virConnectListAllNWFilters virConnectListNWFilters virConnectNumOfNWFilters virNWFilterGetName virNWFilterGetUUID virNWFilterGetUUIDString virNWFilterGetXMLDesc virNWFilterLookupByName virNWFilterLookupByUUID virNWFilterLookupByUUIDString virNWFilterRef |
||
Domain Event |
virConnectDomainEventDeregister virConnectDomainEventDeregisterAny virConnectDomainEventDeviceAddedCallback virConnectDomainEventDeviceRemovedCallback |
virConnectDomainEventAgentLifecycleCallback virConnectDomainEventBalloonChangeCallback virConnectDomainEventBlockJobCallback virConnectDomainEventCallback virConnectDomainEventDiskChangeCallback virConnectDomainEventGenericCallback virConnectDomainEventGraphicsCallback virConnectDomainEventIOErrorCallback virConnectDomainEventIOErrorReasonCallback virConnectDomainEventPMSuspendCallback virConnectDomainEventPMSuspendDiskCallback |
|||
Domain |
virDomainCreate virDomainCreateLinux virDomainCreateWithFiles virDomainCreateWithFlags virDomainCreateXML virDomainCreateXMLWithFiles virDomainDefineXML virDomainDefineXMLFlags |
virDomainDestroy virDomainDestroyFlags virDomainFree |
virDomainAbortJob virDomainAddIOThread virDomainDelIOThread virDomainAttachDevice virDomainBlockCommit virDomainCoreDump virDomainFSFreeze virDomainInterfaceFree virDomainManagedSave virDomainMigrate virDomainMigrateSetCompressionCache virDomainOpenChannel virDomainPMWakeup virDomainReboot virDomainShutdown virDomainSetAutostart |
virConnectGetAllDomainStats virConnectGetDomainCapabilities virConnectListAllDomains virConnectListDefinedDomains virConnectListDomains virConnectNumOfDefinedDomains virConnectNumOfDomains virDomainBlockStats virDomainGetAutostart virDomainGetFSInfo virDomainGetInterfaceParameters virDomainGetNumaParameters virDomainGetSecurityLabel virDomainGetXMLDesc virDomainInterfaceAddresses virDomainIsActive virDomainLookupByID virDomainMemoryPeek virDomainMigrateGetCompressionCache virDomainPinEmulator ? virDomainSaveImageGetXMLDesc |
virConnectDomainXMLFromNative virConnectDomainXMLToNative |
Secret | virSecretDefineXML |
virSecretFree virSecretUndefine |
virSecretSetValue |
virConnectListAllSecrets virConnectListSecrets virConnectNumOfSecrets virSecretGetConnect/UUID/UUIDString/UsageID/UsageType/Value/XMLDesc virSecretLookupByUUID/UUIDString/Usage virSecretRef |
|
Stream | virStreamNew | virStreamFree |
virStreamFinish
virStreamAbort virStreamRecv virStreamRecvAll virStreamSend virStreamSendAll |
virStreamSinkFunc virStreamSourceFunc |
1.2 Libvirt XML 定义
Libvirt 使用 XML 来定义各种对象,其中,与 OpenStack Nova 关系比较密切的有:
disk (磁盘) |
任何磁盘设备,包括软盘(floppy)、硬盘(hard disk)、光驱(cdrom)或者半虚拟化驱动都使用 <disk> 元素来定义。 方式:
<disk type='**' device='**'>。其中:
(1)”volume“ 类型的 disk <disk type='volume' device='disk'><driver name='qemu' type='raw'/><source pool='blk-pool0' volume='blk-pool0-vol0'/><target dev='hdk' bus='ide'/></disk> (2)”file“ 类型的 disk <disk type='file' snapshot='external'><driver name="tap" type="aio" cache="default"/><source file='/var/lib/xen/images/fv0' startupPolicy='optional' /><target dev='hda' bus='ide'/></disk> (3)”block“ 类型的 disk <disk type='block' device='cdrom'><driver name='qemu' type='raw'/><target dev='hdd' bus='ide' tray='open'/><readonly/></disk> (4)”network“ 类型的 disk <disk type='network' device='cdrom'><driver name='qemu' type='raw'/><source protocol="http" name="url_path"><host name="hostname" port="80"/></source><target dev='hde' bus='ide' tray='open'/><readonly/></disk> |
|
Host device assignment (主机设备分配) |
<hostdev mode='subsystem' type='usb'> #USB 设备直接分配<source startupPolicy='optional'><vendor id='0x1234'/><product id='0xbeef'/></source><boot order='2'/></hostdev><hostdev mode='subsystem' type='pci' managed='yes'> #PCI 设备直接分配<source><address domain='0x0000' bus='0x06' slot='0x02' function='0x0'/></source><boot order='1'/><rom bar='on' file='/etc/fake/boot.bin'/></hostdev> |
|
Network interface (网卡) |
有几种 interface 类型: (1)type = ‘network’ 定义一个连接 Virtual network 的 interface <devices><interface type='network'><source network='default'/> #虚拟网络的名称为 ‘default’</interface>...<interface type='network'><source network='default' portgroup='engineering'/><target dev='vnet7'/><mac address="00:11:22:33:44:55"/><virtualport><parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/></virtualport></interface></devices> #virsh:attach-interface --domain d-2 --type network --source isolatednet1 --mac 52:53:00:4b:75:6f --config (2)type=‘birdge’ 定义一个 Bridge to LAN(桥接到物理网络)的interface:前提是主机上存在一个 bridge,该 bridge 已经连到物理LAN。 <interface type='bridge'> #连接到 br0<source bridge='br0'/></interface><interface type='bridge'> #连接到br1<source bridge='br1'/><target dev='vnet7'/><mac address="00:11:22:33:44:55"/></interface><interface type='bridge'> #连接到 Open vSwithc bridge ovsbr<source bridge='ovsbr'/><virtualport type='openvswitch'><parameters profileid='menial' interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/></virtualport></interface> #virsh:attach-interface --domain d-2 --type bridge --source virbr0 --mac 52:22:33:44:55:66 --config (3)type=‘ethernet’ 定义一个使用指定脚本连接到 LAN 的 interface <devices><interface type='ethernet'><target dev='vnet7'/><script path='/etc/qemu-ifup-mynet'/></interface></devices> (4)type=‘direct’ 定义一个直接连到物理网卡(Direct attachment to physical interface)的 interface:需要 Linux macvtap 驱动支持 <interface type='direct' trustGuestRxFilters='no'><source dev='eth0' mode='vepa'/></interface> (5)type=‘hostdev’ 定义一个由主机PCI 网卡直接分配(PCI Passthrough)的 interface: 分配主机上的网卡给虚机 <devices><interface type='hostdev' managed='yes'><driver name='vfio'/><source><address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/></source><mac address='52:54:00:6d:90:02'/><virtualport type='802.1Qbh'><parameters profileid='finance'/></virtualport></interface></devices> |
|
network (网络) |
<bridge name="virbr0" stp="on" delay="5" macTableManager="libvirt"/> <domain name="example.com" localOnly="no"/> <forward mode="nat" dev="eth0"/> 1. bridge:定义一个用于构造该虚拟网络的网桥。 2. domain:定义 DHCP server 的 DNS domain。 3. forward: 定义虚拟网络直接连到物理 LAN 的方式. ”mode“指转发模式。 (1) mode=‘nat’:所有连接到该虚拟网络的虚拟的网络都会经过物理机器的网卡,并转换成物理网卡的地址。 <network><name>default</name><bridge name="virbr0" /><forward mode="nat"/><ip address="192.168.122.1" netmask="255.255.255.0"><dhcp><range start="192.168.122.2" end="192.168.122.254" /></dhcp></ip><ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64" /></network> 也可以指定公共的IP地址和端口号。 <forward mode='nat'><nat><address start='1.2.3.4' end='1.2.3.10'/> </nat> </forward> <forward mode='nat'><nat><port start='500' end='1000'/></nat></forward> (2) mode=‘route’:类似于 NAT,但是不使用NAT,而是使用routing table。 <network><name>local</name><bridge name="virbr1" /><forward mode="route" dev="eth1"/><ip address="192.168.122.1" netmask="255.255.255.0"><dhcp><range start="192.168.122.2" end="192.168.122.254" /></dhcp></ip><ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64" /></network> (3) mode=‘bridge’:使用不受libvirt管理的bridge,比如主机上已有的bridge;open vswitch bridge;使用 macvtap's "bridge" 模式 <network><name>host-bridge</name><forward mode="bridge"/><bridge name="br0"/></network> (4) mode=‘passthrough’:使用 a macvtap "direct" connection in "passthrough" mode 指定主机上的特定网卡用于虚拟网络 <forward mode='passthrough'><interface dev='eth10'/><interface dev='eth11'/><interface dev='eth12'/><interface dev='eth13'/><interface dev='eth14'/></forward> (5) mode=‘hostdev’:直接分配主机上的网络设备。 <forward mode='hostdev' managed='yes'><driver name='vfio'/><address type='pci' domain='0' bus='4' slot='0' function='1'/><address type='pci' domain='0' bus='4' slot='0' function='2'/><address type='pci' domain='0' bus='4' slot='0' function='3'/></forward> |
详细的 XML 定义说明在 https://libvirt.org/format.html。
1.3 Libvirt API 的实现
libvirt API 的实现是在各个 Hypervisor driver 和 Storage dirver 内。Hypervisor 驱动包括:
- LXC - Linux Containers
- OpenVZ
- QEMU
- Test - Used for testing
- UML - User Mode Linux
- VirtualBox
- VMware ESX
- VMware Workstation/Player
- Xen
- Microsoft Hyper-V
- IBM PowerVM (phyp)
- Parallels
- Bhyve - The BSD Hypervisor
1.4 Libvirt 的 Python 绑定
python-libvirt 包含 Libvirt 的 Python 语言绑定。安装 libvirt 时,默认会安装 python-libvirt 。 来源: https://libvirt.org/python.html https://pypi.python.org/pypi/libvirt-python
Python API 和 C API 之间几乎是一对一的映射关系,比如:
#C API int virConnectNumOfDomains (virConnectPtr conn); int virDomainSetMaxMemory (virDomainPtr domain, unsigned long memory);#Python APIvirConnect::numOfDomains(self)
virDomain::setMaxMemory(self, memory)
因此,libvirt 官网并没有提供详细的 python API 描述。
2. QEMU/KVM libvirt 驱动
2.1 架构
•Libvirtd 是一个 daemon 进程,可以被本地的virsh调用,也可以被远程的virsh调用
•Libvirtd 调用 qemu-kvm 操作KVM 虚拟机
这里有一个 virsh 命令、Libvirt C API、 QEMU driver 方法 和 QEMU Monitor 命令的对照表(部分):
virsh command | Public API | QEMU driver function | Monitor command |
---|---|---|---|
virsh create XMLFILE | virDomainCreateXML() | qemudDomainCreate() | info cpus, cont, change vnc password, balloon (all indirectly) |
virsh suspend GUEST | virDomainSuspend() | qemudDomainSuspend() | stop |
virsh resume GUEST | virDomainResume() | qemudDomainResume() | cont |
virsh shutdown GUEST | virDomainShutdown() | qemudDomainShutdown() | system_powerdown |
virsh setmem GUEST MEM-KB | virDomainSetMemory() | qemudDomainSetMemory() | balloon (indirectly) |
virsh dominfo GUEST | virDomainGetInfo() | qemudDomainGetInfo() | info balloon (indirectly) |
virsh save GUEST FILENAME | virDomainSave() | qemudDomainSave() | stop, migrate exec |
virsh restore FILENAME | virDomainRestore() | qemudDomainRestore() | cont |
virsh dumpxml GUEST | virDomainDumpXML() | qemudDomainDumpXML() | info balloon (indirectly) |
virsh attach-device GUEST XMLFILE | virDomainAttachDevice() | qemudDomainAttachDevice() | change, eject, usb_add, pci_add (all indirectly) |
virsh detach-device GUEST XMLFILE | virDomainDetachDevice() | qemudDomainDetachDevice() | pci_del (indirectly) |
virsh migrate GUEST DEST-URI | virDomainMigrate() | qemudDomainMigratePerform() | stop, migrate_set_speed, migrate, cont |
virsh domblkstat GUEST | virDomainBlockStats() | qemudDomainBlockStats() | info blockstats |
- | virDomainBlockPeek() | qemudDomainMemoryPeek() | memsave |
2.2 安装
有三种方式来安装 libvirt:
(1)下载 libvirt 的源代码,然后编译和安装
(2)从各 Linux 的发行版中直接安装,比如 Ubuntu 上运行 apt-get install libvirt-bin
(3)从 git 上克隆 libvirt 的代码,然后编译和安装
2.3 libvirt log
这篇文章 描述了 livbirt log。设置所有日志的方法是在 /etc/libvirt/libvirtd.conf 中添加下面的配置然后重启 libvirt:
log_filters="1:libvirt 1:util 1:qemu" log_outputs="1:file:/var/log/libvirt/libvirtd.log"
3 使用 libvirt 编程来管理 KVM 虚机的实例
这里只描述基本的过程。具体的过程,下一篇文章会具体分析 Nova 中 libvirt 的使用。
- 定义虚机的基本配置,包括 vCPU、内存、磁盘或者cdrom以及启动顺序,生成 xml 配置,调用 virDomainCreateXML API 启动一个虚机
- 使用 Domain 相关的 API 来管理虚机的生命周期。我的这篇文章有虚机生命周期的详细介绍。
- 添加磁盘:定义一个 disk 的 xml 配置,使用 virDomainAttachDevice API 将它挂载到虚机上。如果不是本地的源磁盘,需要提前准备好。
- 添加interface:使用 Network API 定义一个虚拟网络(需要提前准备好物理网络),然后定义一个 interface 的 XML 配置,使用 virDomainAttachDevice API 将它加到虚机。
- 按照需要,重复2、3、4步骤。
KVM 介绍(5):libvirt 介绍 [ Libvrit for KVM/QEMU ]相关推荐
- 【KVM系列05】Libvirt 介绍
第五章 Libvirt 介绍 1. Libvirt 是什么 1.1 Libvirt C API 1.2 Libvirt XML 定义 1.3 Libvirt API 的实现 1.4 Libvirt 的 ...
- KVM(五)libvirt 介绍
1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用. Hypervisor 种类众多,没有统一的编程接口来 ...
- KVM之libvirt 介绍
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接 ...
- 【云计算学习笔记(十六)】之 KVM原理,Libvirt,VLAN,Linux Bridge介绍
文章目录 本文章由公号[开发小鸽]发布!欢迎关注!!! 一. 虚拟机基础 (一) 虚拟化分类 1. Host是通过什么方式将硬件资源虚拟化,并提供给Guest使用的呢? 2. 1型虚拟化 3. 2型虚 ...
- 云计算运营—03 KVM虚拟化技术方案介绍
KVM虚拟化技术方案介绍 1.背景介绍 KVM(Kernel-based Virtual Machine) 开源全虚拟化方案 支持体系结构 x86(32位,64位).IA64.PowerPC.S390 ...
- RHEL6.2上使用 libvirt创建和管理KVM虚拟机
在2010年4月发布的RHEL 6.0 Beta版中 ,去掉了Xen,这也许是第一个不包含Xen Hypervisor的知名Linux发行版,之前有报道过Red Hat有可能会在RHEL 6.0中用K ...
- libvirt介绍和使用
libvirt介绍和使用 导读: why&&what libvirt具体介绍 API 剖析 driver 剖析 如何使用libvirt? why&&what 实现一朵可 ...
- KVM之使用libvirt迁移QEMU/KVM、Nova虚机
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接 ...
- libvirt 介绍
1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用. Hypervisor 种类众多,没有统一的编程接口来 ...
- KVM从入门到懵逼 第二天 kvm部署
KVM虚拟化平台部署 一.虚拟机资源 二.实验环境 1.将镜像光盘设为自动/永久挂载 2.环境优化 3.制作本地YUM仓库 三.安装KVM 1.安装工具 2.检测CPU是否支持虚拟化 3. 查看KVM ...
最新文章
- asterisk源码目录结构
- opencv通道拆分与合并:split和merge
- 安全挑战和SD-WAN解决方案
- 用 Linux 和 Apache Hadoop 进行云计算
- php重放,Api 接口安全-防篡改,防重放理解总结
- 生理性玻璃体混浊的分类与预防控制
- 最新Modis影像数据下载完整流程---以MOD13Q1 NDVI数据下载为例(2020年12月2日更新)
- Kubernetes 的自动伸缩你用对了吗?
- arduino esp8266_你还用Arduino?上PlatformIO开发Esp、AVR、STM32,十分钟亲测ESP8266
- 阻塞与非阻塞 异步 与同步
- 如何用python做模型_python的模型如何使用?
- python 类命名空间,关于python:命名空间和类
- python windows故障处理_python+windows automation windows有时会出现故障
- python速学_【Python杂货铺】速学python基础
- LintCode 52: Next Permutation
- 计算机专业老师水平,计算机评价老师的评语
- ubuntu 中比较好用的一些工具
- GBase XDM用户管理
- 组装一台稳定的计算机
- 江苏省信息中心8月份工作总结和9月份工作要点
热门文章
- 网站左边栏制作的小技巧
- iOS 使用pods报错问题 pod --version
- linux命令详解——sar
- 学习之路十四:客户端调用WCF服务的几种方法小议
- 盗版牢骚? or 学而不思?
- Tachyon:Spark生态系统中的分布式内存文件系统的使用
- MySQL 备份恢复
- Linux -lvm -扩容、缩容逻辑卷(针对xfs)
- 基于Vue.js 2.x系列 + Element UI + RBAC/AUTH权限 的响应式后台管理系统
- in-band(带内) and out-of-band(带外) management