Lvm

KVM主機,給guest添加LV

  • June 25, 2019

我有一個帶有軟體 RAID 10 陣列的 KVM 主機。軟體 RAID 10 陣列是主機上的一個 PV,並且有一個 VG。

我在主機級別使用了幾個 LV(用於 KVM 來賓.img文件的數據儲存)。

通常,在向來賓添加新磁碟時,我會在主機上創建 LV,然後將其添加到來賓的配置中。然後pvcreate直接在塊設備(無分區)上vgcreatelvcreatemkfs來賓內的新塊設備上。

之前我不會費心對塊設備進行分區,pvcreate因為在調整主機上的 LV 大小時它少了一步。我意識到缺點是理論上某些系統可能決定自動分區未分區的塊設備,因為它們無法辨識 LVM 元數據,儘管我從未在實踐中看到過這種情況。

當在主機上調整 LV 的大小時,PV 中的可用空間被拾取,我必須vgextend在來賓中lvextend。 我不認為有一種方法可以跳過讓 LVM 在來賓中執行,然後在主機上執行,然後在來賓中執行?resize2fs
lvextend``resize2fs

我不認為有一種方法可以跳過在來賓中執行 LVM 而只是在主機上進行 lvextend 然後在來賓中 resize2fs?

絕對不需要在來賓內部使用 LVM。您可以直接使用塊設備。在來賓內部使用 LVM幾乎沒有任何好處(因為您已經在主機上使用 LVM 來管理您的空間)。

如果“KVM”是指“libvirt”,那麼virsh blockresize在調整塊設備大小後,您可以使用該命令讓您的客人辨識額外的空間。也就是說,如果我有一個附有 LV 的客人:

</disk><disk type="block" device="disk">
 <driver name="qemu" type="raw"/>
 <source dev="/dev/tank/foobar"/>
 <backingStore/>
 <target dev="vdb" bus="virtio"/>
 <alias name="virtio-disk1"/></disk>

在哪裡:

# lvs
 foobar                                      tank           -wi-ao----   4.00g                                                              

我可以為主機上的 LV 添加空間:

# lvresize -L +2G /dev/tank/foobar

告訴 libvirt 更新大小:

# virsh blockresize myguest /dev/tank/foobar --size 0

然後在來賓內部,調整文件幹的大小:

guest# resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/vdb to 1572864 (4k) blocks.
The filesystem on /dev/vdb is now 1572864 (4k) blocks long.

引用自:https://unix.stackexchange.com/questions/220583