kvm/vmbuilder 分區小於應有的大小,10% 的邏輯卷始終未分配
我使用 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”。重新定義並重新啟動並對您的分區大小感到滿意,因為它們應該一直存在。