制作Aliyun vhd鏡像

Preface

阿里云僅支持raw和vhd兩種鏡像格式的導入,而且對這兩種格式都有較為嚴格的要求。

  • vhd格式:阿里云完全適配使用vhd-util制作出來的vhd格式,但不支持qemu-img制作或者轉換得到的vhd。因此,手頭有qcow2等鏡像格式的沒有必要嘗試轉成vhd了,不大可能成功
  • raw格式:鏡像文件必須是1M對齊,分區建議4K對齊

vhd Creator Application字段必須是"tap" (可以使用vhd-util read -n ${VHD_NAME}.vhd -p查看),ECS存儲完全適配的是使用vhd-util2工具做出來的vhd文件

Environment

因為raw格式制作出來的鏡像很大 (一般raw的鏡像要幾十G左右,而qcow2或vhd在幾G左右),延長了debug周期,不做考慮。
選擇vhd格式的鏡像就要先打造虛擬化環境,有下面兩種開發環境可供選擇:

  • qemu-kvm + xen-runtime (推薦):采用qemu-kvm虛擬化平臺便于對做好的vhd格式的鏡像進行校驗,而vhd-util是Xen平臺提供的管理虛擬塊設備的工具

vhd-util CentOS環境推薦用yum安裝

  yum install xen-runtime.x86_64

也可以通過搜索vhd-util依賴的so及elf的方式進行精簡安裝,但從網上能搜到的elf來看,64位系統有可能需要解決multilab的問題,故不推薦

  • Xenserver + kvm:需要兩臺物理機,一臺安裝Citrix Xenserver用于制作vhd格式的鏡像,另一臺安裝kvm用于驗證。對于怕把現有虛擬化環境搞壞的朋友,這是一種好的選擇

以第一種環境為例,一般需要安裝如下幾個軟件包:

  • qemu-kvm (注意,使用CentOS的朋友不要采取yum安裝的方式,要手動編譯,見Troubleshooting)
  • xen-runtime
  • libvirt和virt-manager (Optional, 可以方便管理虛擬機)
Install
  1. 準備好制作虛擬機鏡像的工具,可以是:
    a) 打包好的虛擬機鏡像
    b) 能在qemu-kvm運行的虛擬機
  2. 使用vhd-util創建符合要求大小的vhd虛擬磁盤
  3. 啟動qemu-kvm虛擬機,硬盤格式選VirtIO
    a) 如果是linux shell console用戶,注意/etc/libvirt/qemu/${VM_NAME}.xml中的driver type字段應該是vpcbus字段為virtio,如下圖
    libvirt config

b) 如果是virt-manager,對應的窗口應該如下圖


virt-manager
  1. 通過任何方法,將虛擬機操作系統安裝在vhd虛擬磁盤上。對于手頭有qemu-kvm虛擬機鏡像的朋友,建議不要圖省事直接dd拷貝磁盤。這樣會使制作出來的vhd磁盤大小直逼raw。建議將源系統打包,然后在分好區的vhd虛擬磁盤中解包,最后裝bootloader
  2. 測試鏡像是否能在qemu-kvm環境成功運行。如果沒有問題,便可以將vhd拷出來,傳到Aliyun上了
Trouble shooting

Q: driver type選擇vpc后啟動虛擬機報錯Driver 'vpc' can only be used for read-only devices
A: 這個問題與qemu的配置有關系,需要重新編譯qemu

  1. 從這篇有關qemu介紹的文章中可知,默認情況下的vpc格式是只讀的,因此不支持制作dynamic vhd的kvm虛擬機鏡像
  2. CentOS中支持kvm的qemu主要是通過yum install qemu-kvm安裝,該qemu-kvm是不支持vpc的
  3. 手動編譯qemu(下載qemu-kvm源碼)并將vpc加入configure的--block-drv-rw-whitelist列表,下面是一個例子
```bash
./configure --enable-kvm --block-drv-rw-whitelist=vpc,qcow2
```

    > **注** CentOS中,手動編譯的qemu并沒有`/usr/libexec/qemu-kvm`(和`yum`安裝的有區別)
  1. 安裝libvirt virt-install virt-manager等工具,注意一定不要安裝qemu-kvmqemu-kvm-ev之類有qemu-kvm字樣的包,否則會覆蓋手動編譯的qemu,成為libvirt首選的emulator
  2. 現在應該可以使用virt-install/virt-manager(GUI)掛載vhd格式的磁盤了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容