云計算用一個朋友的話來說:”做云計算最苦逼的就是得時時刻刻為一些可能一輩子都碰不到的事做好準備。更苦逼的就是剛以為一個問題不會遇到,立刻就發生了。。。“。這個還真的沒有辦法,誰讓哥我是搞云計算的呢,簡單一個虛擬化就搞的你蛋疼,你還能想其它的嗎?
一直糾結在做虛擬化使用什么鏡像格式,剛剛開始用了raw的file,后來發現LVM的很多特性對于虛擬化還是有比較理想的能力,而且性能也很不錯就用了LVM。后來被VMware騙了跑去搞Esxi接觸了VMDK,最近研究openstack發現了qcow2格式,貌似現在很流行呀。也說不上分析這些鏡像格式的能力,就簡單說說自己的一些使用心得。
目前主要有那些格式來作為虛擬機的鏡像:
(default) the raw format is a plain binary image of the disc image, and is very portable. On filesystems that support sparse files, images in this format only use the space actually used by the data recorded in them.
老牌的格式了,用一個字來說就是裸,也就是赤裸裸,你隨便dd一個file就模擬了一個raw格式的鏡像。由于裸的徹底,性能上來說的話還是不錯的。目前來看,KVM和XEN默認的格式好像還是這個格式。因為其原始,有很多原生的特性,例如直接掛載也是一件簡單的事情。 裸的好處還有就是簡單,支持轉換成其它格式的虛擬機鏡像對裸露的它來說還是很簡單的(如果其它格式需要轉換,有時候還是需要它做為中間格式),空間使用來看,這個很像磁盤,使用多少就是多少(du -h看到的大小就是使用大小),但如果你要把整塊磁盤都拿走的話得全盤拿了(copy鏡像的時候),會比較消耗網絡帶寬和I/O。接下來還有個有趣的問題,如果那天你的硬盤用著用著不夠用了,你咋辦,在買一塊盤。但raw格式的就比較犀利了,可以在原來的盤上追加空間:
ddif=/dev/zeroof=zeros.raw bs=1024k count=4096 # 先創建4G的空間
catforesight.img zeros.raw > new-foresight.img # 追加到原有的鏡像之后
當然,好東西是吹出來的,誰用誰知道,還是有挺多問題的。由于原生的裸格式,不支持snapshot也是很正常的。傳說有朋友用版本管理軟件對raw格式的文件做版本管理從而達到snapshot的能力,估計可行,但沒試過,這里也不妄加評論。但如果你使用LVM的裸設備,那就另當別論。說到LVM還是十分的犀利的,當年用LVM做虛擬機的鏡像,那性能杠杠的。而且現在好多兄弟用虛擬化都采用LVM來做的。在LVM上做了很多的優化,國外聽說也有朋友在LVM增量備份方面做了很多的工作。目前來LVM的snapshot、性能、可擴展性方面都還是有相當的效果的。目前來看的話,備份的話也問題不大。就是在虛擬機遷移方面還是有很大的限制。但目前虛擬化的現狀來看,真正需要熱遷移的情況目前需求還不是是否的強烈。雖然使用LVM做虛擬機鏡像的相關公開資料比較少,但目前來看犧牲一點靈活性,換取性能和便于管理還是不錯的選擇。
copy-on-write format, supported for historical reasons only and not available to QEMU on Windows
曾經qemu的寫時拷貝的鏡像格式,目前由于歷史遺留原因不支持窗口模式。從某種意義上來說是個棄嬰,還沒等它成熟就死在腹中,后來被qcow格式所取代。
the old QEMU copy-on-write format, supported for historical reasons and superseded by qcow2
一代的qemu的cow格式,剛剛出現的時候有比較好的特性,但其性能和raw格式對比還是有很大的差距,目前已經被新版本的qcow2取代。
QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression
現在比較主流的一種虛擬化鏡像格式,經過一代的優化,目前qcow2的性能上接近raw裸格式的性能,這個也算是redhat的官方渠道了。
對于qcow2的格式,幾點還是比較突出的,qcow2的snapshot,可以在鏡像上做N多個快照:
VMware 3 & 4, or 6 image format, for exchanging images with that product
VMware的格式,這個格式說的蛋疼一點就有點牛X,原本VMware就是做虛擬化起家,自己做了一個集群的VMDK的pool,做了自己的虛擬機鏡像格式。又拉著一些公司搞了一個OVF的統一封包。從性能和功能上來說,vmdk應該算最出色的,由于vmdk結合了VMware的很多能力,目前來看,KVM和XEN使用這種格式的情況不是太多。但就VMware的Esxi來看,它的穩定性和各方面的能力還是可圈可點。
VirtualBox 1.1 compatible image format, for exchanging images with VirtualBox.
SUN收購了VirtualBox,Oracle又收購了SUN,這么說呢,vdi也算虛擬化這方面的一朵奇葩,可惜的是入主的兩家公司。SUN太專注于技術(可以說是IT技術最前端也不為過),Oracle又是開源殺手(mysql的沒落)。單純從能力上來說vdi在VirtualBox上的表現還是不錯的。也是不錯的workstation級別的產品。
說了這么多虛擬機鏡像格式,這么多虛擬化,做云計算的傷不起呀,得為長期發展考慮,也有朋友對鏡像的轉換做了很多事情,簡單看看幾種鏡像的轉化:
UTM v4.3.5 - 在 macOS 上優雅的使用 QEMU 虛擬化 Windows、Linux 和 macOS
在 iOS 中虛擬化 Windows、Linux 和 Unix
請訪問原文鏈接:https://sysin.org/blog/utm-4/,查看最新版。原創作品,轉載請保留出處。
作者主頁:sysin.org
UTM 4 底層基于 QEMU,在 Mac 上安全的運行 Windows、Linux 和 macOS,同時支持 Intel 處理器和 Apple 芯片,并且是開源免費的。
Mac App Store
截屏
UTM 采用 Apple 的 Hypervisor 虛擬化框架在 Apple silicon 上以接近本機的速度運行 ARM64 操作系統。在 Intel Mac 上,可以虛擬化 x86/x64 操作系統 (sysin)。此外,較低性能的仿真可用于在 Apple silicon 上運行 x86/x64 以及在 Intel 上運行 ARM64。對于開發人員和愛好者,還有許多其他仿真處理器,包括:ARM32、MIPS、PPC 和 RISC-V。你的 Mac 現在可以真正運行任何東西了。
截屏
截屏
您不僅可以運行最新最好的操作系統,還可以在 PowerPC、SPARC 或 x86_64 上模擬較舊的操作系統 (sysin)。查看 圖庫,了解您可以運行的一些示例。
截屏
使用 UTM 在您的 Apple silicon Mac 上運行多個 macOS 實例。這對開發人員以及有安全意識的用戶都很有用。請注意,macOS VM 支持僅限于運行 macOS Monterey 或更高版本的基于 ARM 的 Mac。
截屏
與其他免費虛擬化軟件不同,UTM 是為 macOS 開發的,并且 僅 適用于 Apple 平臺。它完全是為大蘇爾引入的新風格而設計的 (sysin)。UTM 的外觀和感覺就像一個 Mac 應用程序,具有您期望的所有隱私和安全功能。
截屏
UTM 的底層是 QEMU,這是一個已有數十年歷史的免費開源仿真軟件,被廣泛使用和積極維護。雖然 QEMU 功能強大,但使用其過多的命令行選項和標志可能很難設置和配置。UTM 旨在為用戶提供 QEMU 的靈活性,而不會帶來陡峭的學習曲線。
截屏
UTM 永遠是完全免費和開源的。Mac App Store 版本與免費版本相同,并且免費版本沒有遺漏任何功能 (sysin)。Mac App Store 版本的唯一優勢是您可以獲得自動更新。購買 App Store 版本直接為 UTM 的開發提供資金并表示您的支持。
找到 UTM GitHub 上。您還可以為 QEMU 項目。
不,可能不是。UTM 目前不支持 Windows 上的 GPU 仿真/虛擬化,因此缺乏對 3D 加速(例如 OpenGL 和 DirectX)的支持。您可能可以使用軟件渲染選項運行較舊的游戲,但無法使用硬件加速。通過 Virgl。
亮點:
注意事項:
系統要求:macOS 11.3 or later
UTM v4.0.8 and new Release (版本不定期更新中) 百度網盤鏈接:https://sysin.org/blog/utm-4/
File info:
FileDescriptionInstallationJITHypervisorUSB UTM.dmgmacOS Universal installerMounting and copying UTM.app to /ApplicationsYesYesYes UTM.debJailbroken iOS versionOpen in Cydia, dpkg, or SileoYesYes(1)Yes UTM.ipaNon-jailbroken iOS version (sideloading)AltStore, etc (see guide)Yes(2)NoNo UTM.HV.ipaNon-jailbroken iOS version (TrollStore)TrollStoreYes(2)Yes(1)Yes UTM.SE.ipaNon-jailbroken iOS version (sideloading)AltStore, enterprise signing, etcNoNoNo