Kvm-Virtualization

kvm/vmbuilder 分區小於應有的大小,10% 的邏輯卷始終未分配

  • November 8, 2012

我使用 vmbuilder 工具在我的 ubuntu 主機系統上創建 KVM 虛擬機。對於每個 vm,我設置了一個 vmbuilder.partitions 文本文件,其中定義了 vm 的分區大小。

很簡單:

root 100000
swap 4000

現在我將為 vm 創建一個新的邏輯卷,它的大小與所有已定義分區的大小完全相同。(在範例中,我會執行lvcreate -L 104G ...

結果是大小正好為 104 GiB 的 LV。但是我的 100 G(i?)B 根分區只填充了 93.13 GiB。交換大約 3.72 GiB。LV 中有大約 7 GiB 的未分配空間。

這很奇怪,因為即使您按 1024 字節/兆字節計算 vmbuilder.partitions 的數字,根分區仍然應該是 97.65 GiB 而不是 93。交換應該是大約 3.9 GiB 而不是 3.72。(不幸的是,這些數字按比例增加,1TB 的定義只有大約 930 GiB 而不是 976。)

這可以通過手動從 LV 中刪除根據經驗估計的字節數來解決。但我想從一開始就擁有健全的價值觀。在每個 VM 中都有 10% 的空間未分配顯然是不可接受的。

有誰知道這背後的邏輯?非常感謝。

好吧,在我找到真正的答案之前,我將堅持使用 gparted 的 LiveCD 的以下解決方法。事實證明,這些分區非常容易修復,而無需觸及 LV 本身。如果您使用 LVM/libvirt/KVM/QEMU 組合,則可以使用以下內容。

  • 將 gparted LiveCD-iso 放在某個可讀的地方(這意味著不是 /root)
  • virsh edit <vmname>更改<boot dev="hd" /><boot dev="cdrom" />
  • 在其他磁碟塊旁邊添加:

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source file='/some/vm-readable/path/gparted-live-0.14.0-1.iso'/>

<target dev='hdc' bus='ide'/>

<readonly/>

<address type='drive' controller='0' bus='1' unit='0'/>

</disk>

  • 重新定義並重新啟動 vm,通過 VNC 連接(例如使用 virt-viewer)

使用 gparted GUI,您可以拖放分區以填充 LV 的每個最後一個字節。

不要忘記將虛擬機的啟動設備改回“hd”。重新定義並重新啟動並對您的分區大小感到滿意,因為它們應該一直存在。

引用自:https://serverfault.com/questions/446408