如何像 vmbuilder 一樣手動為虛擬機器添加信用

如何像 vmbuilder 一樣手動為虛擬機器添加信用

我正在我的家庭伺服器上試驗基於 KVM 的虛擬機器。主機運行 Ubuntu Server 16.04.1 LTS,來賓也運行。

我能夠使用 vmbuilder 建立來賓。它輸出一個 qcow2 映像,然後我將其轉換為 LVM 邏輯磁碟區上的原始映像以提高效能。該圖像的總大小約為 900MB,可以很好地滿足我的需要。

但是,當我手動建立 VM 並從 ubuntu 伺服器 ISO 安裝 Ubuntu 時,我能夠將邏輯磁碟區作為區塊原始裝置而不是檔案原始映像向 VM 來賓公開。在我的測試中,這似乎通常會進一步提高磁碟效能,幅度不小,這取決於我的測試方式。然而,這個虛擬機器並沒有那麼精簡(安裝了1.8GB 左右),而且啟動時間也慢得多(vmbuilder 創建的塊設備虛擬機啟動時間約為5 秒,我手動安裝的基於文件的虛擬機啟動時間約為15 秒) 。

所以我的目標是擁有一個類似於 vmbuilder 安裝的虛擬機器、更少的軟體包、快速啟動等,但讓它使用原始區塊設備作為儲存而不是基於檔案的原始映像。

問題:

  1. vmbuilder 建立的虛擬機器與我手動安裝的虛擬機器有何不同?

  2. 我看到 Ubuntu(過去)有 Ubuntu JeOS,並且看到可以從伺服器 iso 安裝它的參考資料,但我不知道如何安裝。這仍然是一個選擇嗎?如果是這樣,那是 vmbuilder 安裝的嗎?

  3. 如何手動建立類似 vmbuilder 的系統,或如何將 qcow2 映像轉換為原始區塊而不是原始檔案映像。

答案1

這還沒有得到答案,但我能夠找到部分解決方案。我發現的是這個文章,它描述瞭如何將 Qcow2 映像轉換為原始區塊設備,而不是原始檔案映像。

基本步驟:

  1. 虛擬機器需要關閉
  2. 使用以下命令將 qcow2 轉換為原始影像檔案:

    qemu-img 轉換 [qcow2] [rawimg]

  3. 取得原始影像的大小(以位元組為單位):

    ls -l [原始]

    123456789

  4. 建立 LV 並精確匹配原始影像的大小:

    lvcreate -L 123456789b -n [lvname] [vgroup]

  5. 將原始影像寫入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>

相關內容