淺析 Hyper -- 新一代虛擬化技術(shù)?
容器技術(shù)的快速發(fā)展,擠占了傳統(tǒng)虛擬機(jī)技術(shù)的很多地盤。沒辦法,在啟動(dòng)速度和運(yùn)行性能上,容器實(shí)在有著太多的優(yōu)勢,而虛擬機(jī)技術(shù)的發(fā)展實(shí)在太過緩慢。
現(xiàn)在,hyper_ 團(tuán)隊(duì) 推出了啟動(dòng)速度可以跟容器媲美的新一代虛擬機(jī)技術(shù) -- hyper。
簡介
hyper 是基于 go 實(shí)現(xiàn)的開源項(xiàng)目,代碼托管在 github 上。。
簡單的說,hyper = Hypervisor + Kernel + Docker Image,本質(zhì)上還是一種虛擬機(jī)技術(shù),只不過是應(yīng)用中心(app-centric)的虛擬機(jī)。
hyper 將容器運(yùn)行在了虛擬機(jī)里,只不過這個(gè)虛擬機(jī)是精簡過的(基于 qboot),可以快速啟動(dòng)停止的虛擬機(jī)。目前,可以運(yùn)行在 KVM 上,操作系統(tǒng)要求為比較新的 debian/ubuntu、centos 等,內(nèi)核建議為 4.0.1,docker 版本至少為 1.5.0,qemu 至少為 2.0。
hyper 每個(gè)虛擬機(jī)中可以同時(shí)運(yùn)行多個(gè)容器進(jìn)程,借用了 kubernetes 中的 pod 的概念。每個(gè)虛擬機(jī)就是一個(gè) pod(使用外部的 podfile, JSON 或 YAML 格式,來定義包括哪些應(yīng)用),其中的運(yùn)行的容器進(jìn)程共享命名空間(不使用命名空間隔離),但用 mount 命名空間來隔離內(nèi)部多個(gè)鏡像的 root 文件系統(tǒng)。
優(yōu)勢
優(yōu)勢很明顯,就是容器技術(shù)一直缺乏的,跟傳統(tǒng)虛擬機(jī)相關(guān)的優(yōu)勢:
- 可以平滑地跟已有基于虛擬機(jī)的技術(shù)和平臺(tái)進(jìn)行整合;
- 大大提高了容器已有隔離技術(shù)的安全性,特別是不需要共享內(nèi)核;
- 不依賴已有容器技術(shù)(Docker daemon, LXC, Cgroup, Namespace),只需要 MOUNT 命名空間支持。
劣勢
劣勢也很明顯:
- 增加了額外的資源消耗,包括額外的內(nèi)核和進(jìn)程;
- 并非像宣稱的那樣成熟,目前還只是 0.1 版本;
- 硬盤 IO 性能沒公布,猜測會(huì)跟虛擬機(jī)類似;
- 暫時(shí)不支持分層文件系統(tǒng);
總之,生態(tài)環(huán)境還有待建立。
安裝使用
安裝
很簡單,直接下載 bash 腳本安裝。
- # curl -sSL https://hyper.sh/install | bash
使用
- # docker pull ubuntu:14.04
- # hyper run ubuntu:14.04
- POD id is pod-IEKZbVtzef
- root@ubuntu:14:/#
- ...
- # hyper list
- POD ID POD Name VM name Status
- pod-IEKZbVtzef ubuntu 14.04-5551572656
支持的命令跟 docker 很類似,包括 run、start、stop、attach、exec、create、replace、rm、info、list 等等,更多信息可以參考官方文檔:https://docs.hyper.sh/index.html
原理
hyper 的組件十分簡單:
- hyper 提供命令行接口
- hyperd 提供核心維護(hù)引擎,支持 REST
- 虛擬機(jī)實(shí)例:hyperkernel 作為 guest os 的kernel;hyperstart 作為啟動(dòng) init 服務(wù)。
展望
實(shí)際上,現(xiàn)在已有一些類似的技術(shù),包括兩大類:
- 直接基于容器進(jìn)行進(jìn)一步封裝,CoreOS、RancherOS、Photon 等,實(shí)際上還是直接跑容器,跑的應(yīng)用還是在容器內(nèi);
- Intel 的 Clear Container 跟 hyper 很像,都是直接運(yùn)行一個(gè)輕量級的虛擬機(jī),然后里面再做事。
這些技術(shù)都有各自的優(yōu)缺點(diǎn),以及各自適合的應(yīng)用場景,在很長一段時(shí)間內(nèi)將會(huì)共存,甚至出現(xiàn)更多適合云計(jì)算時(shí)代場景下的虛擬化技術(shù)。