OpenStack是雲操做系統,要學習OpenStack,首先須要掌握一些虛擬化和雲計算的相關知識。服務器
虛擬化網絡
虛擬化是雲計算的基礎。簡單的說,虛擬化使得在一臺物理的服務器上能夠跑多臺虛擬機,虛擬機共享物理機的 CPU、內存、IO 硬件資源,但邏輯上虛擬機之間是相互隔離的。
工具
物理機咱們通常稱爲宿主機(Host),宿主機上面的虛擬機稱爲客戶機(Guest)。性能
那麼 Host 是如何將本身的硬件資源虛擬化,並提供給 Guest 使用的呢?
這個主要是經過一個叫作 Hypervisor 的程序實現的。學習
根據 Hypervisor 的實現方式和所處的位置,虛擬化又分爲兩種:
1型虛擬化和2型虛擬化優化
Hypervisor 直接安裝在物理機上,多個虛擬機在 Hypervisor 上運行。Hypervisor 實現方式通常是一個特殊定製的 Linux 系統。Xen 和 VMWare 的 ESXi 都屬於這個類型。
雲計算
物理機上首先安裝常規的操做系統,好比 Redhat、Ubuntu 和 Windows。Hypervisor 做爲 OS 上的一個程序模塊運行,並對管理虛擬機進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這個類型。spa
理論上講:
操作系統
1型虛擬化通常對硬件虛擬化功能進行了特別優化,性能上比2型要高;命令行
2型虛擬化由於基於普通的操做系統,會比較靈活,好比支持虛擬機嵌套。嵌套意味着能夠在KVM虛擬機中再運行KVM。
KVM
下面重點介紹KVM這種2型虛擬化技術。
在 x86 平臺上最熱門運用最普遍的虛擬化方案莫過於 KVM 了。OpenStack 對 KVM 支持得也最好,咱們的教程也理所固然選擇 KVM 做爲 實驗環境的 Hypervisor。
KVM 全稱是 Kernel-Based Virtual Machine。也就是說 KVM 是基於 Linux 內核實現的。
KVM有一個內核模塊叫 kvm.ko,只用於管理虛擬 CPU 和內存。
那 IO 的虛擬化,好比存儲和網絡設備由誰實現呢?
這個就交給 Linux 內核和Qemu來實現。
說白了,做爲一個 Hypervisor,KVM 自己只關注虛擬機調度和內存管理這兩個方面。IO 外設的任務交給 Linux 內核和 Qemu。
你們在網上看 KVM 相關文章的時候確定常常會看到 Libvirt 這個東西。
Libvirt 是啥?
簡單說就是 KVM 的管理工具。
其實,Libvirt 除了能管理 KVM 這種 Hypervisor,還能管理 Xen,VirtualBox 等。
OpenStack 底層也使用 Libvirt,因此頗有必要學習一下。
Libvirt 包含 3 個東西:後臺 daemon 程序 libvirtd、API 庫和命令行工具 virsh
libvirtd是服務程序,接收和處理 API 請求;
API 庫使得其餘人能夠開發基於 Libvirt 的高級工具,好比 virt-manager,這是個圖形化的 KVM 管理工具,後面咱們也會介紹;
virsh 是咱們常常要用的 KVM 命令行工具,後面會有使用的示例。
做爲 KVM 和 OpenStack 的實施人員,virsh 和 virt-manager 是必定要會用的。
今天5分鐘差很少了,下一次咱們來玩 KVM