KVM / Qemuを使用してゲスト用のフルディスクレイアウトを偽造できますか?

KVM / Qemuを使用してゲスト用のフルディスクレイアウトを偽造できますか?

私が知りたいのは、QCOW2(または他の形式)を使用して物理的な範囲を偽造して、ファイルをバックアップストレージとパーティションに混在させて一致させることができるかどうかです。

つまり、ゲストが使用したい物理ディスクがある場合(もちろん排他的に)、ディスク上のコンテンツとホストのコンテンツを/dev/sda2含む一種のディスクイメージを準備して表示できますか?ゲスト内部およびディスクイメージの他のパーティションは、ファイル(または自動インクリメント)ディスクイメージ自体によってバックアップされます。/dev/hda{1..4}/dev/sda2/dev/hda1

kpartx本質的に、私に必要なことは、分割テーブルなどのツールを使用して画像設定を提供することによって達成することができます(ただ1つの可能なアプローチを想像することによって)。losetupいったんkpartx/ が使えると、losetupすべてが非常に柔軟でなければならないからです。

そこに似たものがありますか?

ベストアンサー1

これを行うことはできますが、実際に推奨するものではありません。

以下は、安全に実験できる4つの小さなディスクイメージファイルを使用する例です。必要に応じて、これらのいずれかを物理デバイスに交換できます。

# Create four empty disk image files
dd bs=1M count=1 </dev/zero >img.1
dd bs=1M count=100 </dev/zero >img.2
dd bs=1M count=100 </dev/zero >img.3
dd bs=1M count=1 </dev/zero >img.4

# Convert them into block devices
losetup /dev/loop1 img.1
losetup /dev/loop2 img.2
losetup /dev/loop3 img.3
losetup /dev/loop4 img.4

# Build the array. There is no metadata written anywhere that records the array
# construction - you really are on your own with this one if it goes wrong
mdadm --build /dev/md0 --level linear --raid-devices 4 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4

# Create partition table
# This should match the sizes of the image files (above)
parted --align none /dev/md0 <<'x'
  unit MiB
  mklabel gpt
  mkpart primary 1 101
  mkpart primary 101 201
  mkpart primary 201 100%
  quit
x

複合線形「ディスク」の先頭と終わりにある1MBのパーティションは、GPTを保存するために使用されます(2つが記録されています)。 2つの100 MBパーティションがデータを表します。

RAID0とLINEARは同じではありません。 RAID0はすべての「ディスク」にデータをストライプし、LINEARは単に「ディスク」を接続します。

/dev/loop1実際のコードではavailableなどに依存してはいけません。代わりに、このようなものを使用してlo1=$(losetup --show --find img.1)ループデバイスを"$lo1"

おすすめ記事