安裝在沒有分割區的虛擬LVM磁碟上

安裝在沒有分割區的虛擬LVM磁碟上

我正在使用文字/控制台安裝程式在 KVM/libvirt 虛擬機器中安裝 Ubuntu 伺服器。

我打算將兩個 LVM 磁碟區作為根並交換到 VM 作為虛擬磁碟。
它們被正確檢測為vdavdb,但是安裝程式似乎強制我將它們分割為磁碟,這會破壞 LVM 的靈活性。

如何直接格式化虛擬磁碟而不是使用分割區來安裝 Ubuntu,或者這是一個壞主意?

動機:

重點是透過從儲存層次結構中刪除不必要的抽象層級來降低複雜性。

  1. 實體驅動器:host:/dev/sd{a,b}
  2. 分區:host:/dev/sd{a,b}1
  3. sw-raid:host:/dev/md1
  4. LVM:host:/dev/vg0/mylv_root
  5. 虛擬IO磁碟guest:/dev/vda
  6. 分區:guest:/dev/vda1
  7. 檔案系統:guest:/

在此佈局中,當為單一虛擬機器指派額外空間時,我必須執行以下步驟:

  1. lvresize
  2. parted,特別難看
  3. resize2fs

以相反的方式減少分配的空間(這更難看)。

對於備份(例如使用lvcreate --snapshot),還有一個額外的步驟,kpartex如 psusi 所解釋的。

我想從等式中刪除 6. 因為我看不出這個抽象提供了什麼價值。但它確實會因增加複雜性、可能的性能影響和較小的空間浪費而產生成本。

駭客解決方案:

使用kpartx我能夠將根檔案系統從“引導分區”(在另一個臨時邏輯卷內)移動到目標邏輯卷,然後通過直接內核引導進行引導。

kpartx -a /dev/vg0/mylv_bootstrapper
dd if=/dev/mapper/vg0-mylv_bootstrapper1 of=/dev/vg0/mylv_root bs=4M
e2fsck -f /dev/vg0/mylv_root
# Edit fstab inside /dev/vg0/mylv_root accordingly
resize2fs /dev/vg0/mylv_root
kpartx -d /dev/vg0/mylv_bootstrapper

然而:

  1. 這感覺很奇怪。
  2. 我不太喜歡直接核心啟動的想法,因為每次升級核心時,我都必須手動更新主機中來賓的核心版本。

答案1

好吧,無論是否是LVM,你都必須對空間進行分割/格式化。

是的,KVM 會將設備視為「vda」和「vdb」。

一般來說,雖然KVM使用原始分割區/LVM,IMO,但僅使用虛擬磁碟要可靠得多。佔用相同的空間,並且您始終可以在虛擬磁碟上使用 LVM 和/或調整虛擬磁碟的大小。

答案2

實際上我發現有一個簡單的答案:如果邏輯磁碟區被格式化(例如host# mkfs.ext4 /dev/vg0/mylv_root),那麼安裝程式將檢測並允許將它們用作「虛擬磁碟的分割區1」。然後它甚至可以重新格式化分割區。

但是 Grub 將無法安裝,可以使用直接核心引導來代替。

相關內容