OpenStack:我可以將捲轉換為圖像嗎?
我試圖找出 OpenStack 中阻力最小的路徑,以從實時 CD 到可用於部署新來賓實例的磁碟映像。
如果您從 Live CD 啟動 OpenStack 實例,您可以將作業系統安裝到“臨時”磁碟(在本例中為
/dev/vda
)……很好,但是無法從該磁碟創建映像;該
image-create
命令將嘗試(但失敗)對 Live CD 本身進行快照(因為這是引導卷)。您可以創建並附加一個新卷(使用
volume-create
andvolume-attach
),然後在其上安裝作業系統,但似乎沒有任何方法可以將此卷轉換為 Glance 託管的映像以供其他實例使用。作為管理員,我顯然可以登錄到儲存主機並直接從卷塊設備創建一個新的 Glance 映像,但這並不是任何通過 API 或 Web GUI 互動的人都可以使用的途徑。
還有其他選擇嗎?
在 Icehouse 及更高版本中,您可以使用 upload-to-image 命令將 Cinder 卷轉換為 Glance 圖像:
cinder upload-to-image <volume> <image-name>
我已經使用本地磁碟映像文件(raw 或 qcow2)在本地 linux 機器上使用 KVM 成功為 openstack 建構了映像,將映像文件轉換為壓縮的 qcow2,並通過 Glance 上傳。
一些技巧:
- 您需要 cloud-init 或 /etc/rc.local 腳本或類似腳本來從中獲取實例元數據(ssh 密鑰、IP 地址、主機名、使用者數據等)
http://169.254.169.254/
並使用它配置 VM。cloud-init 在 ubuntu 上效果最好,但已經移植到 Debian,我什至看到了 RH 的移植。 2. 清理鏡像(擦除日誌和 shell 歷史,禁用密碼,刪除 /etc/udev/rules.d/70-persistent-net.rules 等)並在製作壓縮的 qcow2 上傳之前對磁碟鏡像進行零填充是個好主意。您可以很容易地將具有 10GB 磁碟的 VM 映像縮小到 300-500MB,這在 openstack 啟動實例時上傳速度更快,複製速度更快。
將磁碟歸零的最簡單方法是 ‘dd if=/dev/zero of=/root/junk ; rm -f /root/垃圾’。或者,您可以關閉 VM,將其環回掛載(如果映像已經是 qcow2,則可以使用 qemu-nbd),然後對其進行歸零。如果文件系統是 ext2/3/4,您可以使用名為zerofree的工具對其進行清零(必須解除安裝或安裝 RO)。如果是其他 fs,您可以使用安全刪除中的 sfill (安全刪除的首頁已消失)。
順便說一句,即使您的“源”圖像已經壓縮為 qcow2,在上傳之前將其“轉換”為新壓縮的 qcow2 仍然值得。這消除了文件在寫入時複製時留下的舊數據。