![如何像 vmbuilder 一樣手動為虛擬機器添加信用](https://rvso.com/image/97227/%E5%A6%82%E4%BD%95%E5%83%8F%20vmbuilder%20%E4%B8%80%E6%A8%A3%E6%89%8B%E5%8B%95%E7%82%BA%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8%E6%B7%BB%E5%8A%A0%E4%BF%A1%E7%94%A8.png)
我正在我的家庭伺服器上試驗基於 KVM 的虛擬機器。主機運行 Ubuntu Server 16.04.1 LTS,來賓也運行。
我能夠使用 vmbuilder 建立來賓。它輸出一個 qcow2 映像,然後我將其轉換為 LVM 邏輯磁碟區上的原始映像以提高效能。該圖像的總大小約為 900MB,可以很好地滿足我的需要。
但是,當我手動建立 VM 並從 ubuntu 伺服器 ISO 安裝 Ubuntu 時,我能夠將邏輯磁碟區作為區塊原始裝置而不是檔案原始映像向 VM 來賓公開。在我的測試中,這似乎通常會進一步提高磁碟效能,幅度不小,這取決於我的測試方式。然而,這個虛擬機器並沒有那麼精簡(安裝了1.8GB 左右),而且啟動時間也慢得多(vmbuilder 創建的塊設備虛擬機啟動時間約為5 秒,我手動安裝的基於文件的虛擬機啟動時間約為15 秒) 。
所以我的目標是擁有一個類似於 vmbuilder 安裝的虛擬機器、更少的軟體包、快速啟動等,但讓它使用原始區塊設備作為儲存而不是基於檔案的原始映像。
問題:
vmbuilder 建立的虛擬機器與我手動安裝的虛擬機器有何不同?
我看到 Ubuntu(過去)有 Ubuntu JeOS,並且看到可以從伺服器 iso 安裝它的參考資料,但我不知道如何安裝。這仍然是一個選擇嗎?如果是這樣,那是 vmbuilder 安裝的嗎?
如何手動建立類似 vmbuilder 的系統,或如何將 qcow2 映像轉換為原始區塊而不是原始檔案映像。
答案1
這還沒有得到答案,但我能夠找到部分解決方案。我發現的是這個文章,它描述瞭如何將 Qcow2 映像轉換為原始區塊設備,而不是原始檔案映像。
基本步驟:
- 虛擬機器需要關閉
使用以下命令將 qcow2 轉換為原始影像檔案:
qemu-img 轉換 [qcow2] [rawimg]
取得原始影像的大小(以位元組為單位):
ls -l [原始]
123456789
建立 LV 並精確匹配原始影像的大小:
lvcreate -L 123456789b -n [lvname] [vgroup]
將原始影像寫入LV:
dd if=[rawimg] of=[路徑/到/lv]
相應地變更 VM 的 XML 定義,例如:
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/srv/virtual/vm_web/tmp5GWO4q.qcow2'/>
<target dev='hda' bus='virtio'/>
</disk>
到:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vgroup/lv_disk'/>
<target dev='vda' bus='virtio'/>
</disk>