パーティションのない仮想 LVM ディスクへのインストール

パーティションのない仮想 LVM ディスクへのインストール

テキスト/コンソール インストーラーを使用して、KVM/libvirt VM に Ubuntu サーバーをインストールしています。

2 つの 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. VirtIO ディスクguest:/dev/vda
  6. パーティショニング:guest:/dev/vda1
  7. ファイルシステム:guest:/

このレイアウトでは、単一の VM に追加のスペースを割り当てるときに、次の手順を実行する必要があります。

  1. lvresize
  2. parted特に醜い
  3. resize2fs

割り当てられたスペースを逆に減らす(これはさらに醜い)。

バックアップの場合 ( を使用)、 psusi で説明されているように、lvcreate --snapshot追加の手順があります。kpartex

この抽象化がどのような価値をもたらすのかわからないので、方程式から 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 は raw パーティション / LVM を使用しますが、仮想ディスクを使用する方がはるかに信頼性が高いと思います。同じスペースを占有し、仮想ディスクで常に LVM を使用したり、仮想ディスクのサイズを変更したりできます。

答え2

実際には、簡単な答えがあることがわかりました。論理ボリュームがフォーマットされている場合 (例host# mkfs.ext4 /dev/vg0/mylv_root)、インストーラーはそれを検出し、「仮想ディスクのパーティション 1」として使用できるようにします。その後、パーティションを再フォーマットすることもできます。

ただし、Grub のインストールは失敗しますが、代わりに直接カーネル ブートを使用できます。

関連情報