web-dev-qa-db-ja.com

virt-managerでQEMU / KVM仮想マシンに物理パーティションを追加します

関連する質問に対するこの回答の指示に従いました: 物理ディスクをKVM_仮想マシンに追加

VMの.xmlファイル内の結果のコードは次のとおりです。

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/disk/by-partuuid/d8b63353-34n6-6587-ac07-810dmf36d544'/>
  <target dev='vdb' bus='virtio'/>
  <boot order='2'/>
  <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</disk>

/dev/disk/by-partuuid/d8b63353-34n6-6587-ac07-810dmf36d544の代わりに<source>要素に/dev/sda4を使用したことに注意してください。

私を悩ませているのは、私のユースケースはdiskの代わりにpartitionをQEMUに渡すことです。 Windows 10をインストールすると、セットアップインストーラーがストレージを認識しないため、 FedoraProject からviostorドライバーをロードする必要がありました。

Windowsのインストールは問題なく行われ、パフォーマンスは驚くべきものでしたが、VMがオフになっていると、ホストシステムはパーティションフォーマットを認識しません。

viostorドライバーがロードされたWindowsインストーラーが ベアディスク上のWindowsで通常必要な追加のパーティション を作成したのは興味深いことです。言い換えれば、それはおそらくパーティションの内部にパーティションを作成しました。これは不可能であるべきだ、またはそう思った。

/dev/sda4はホストに存在しますが、NTFSファイルシステム(実際には予期されていません)、LVM、LDM( ldmtool でテスト済み)として認識されません。

VMは、 Q35チップセットEFIモード で正しく起動しています。

質問:virt-managerにパーティションを追加する手順は正しいですか、それともディスクではなくパーティションに対してのみ行うべきですか?また、どのパーティションタイプまたはフォーマットになったのですか?

5
Marc.2377

解決策は、/dev/sdaまたは/dev/disk/by-id/の同等物のようなブロックデバイス全体<source dev=''>設定に渡すようです。

これにより、Windowsセットアップは、ホストのルートパーティションを含む既存のパーティションを確認できます。

次の条件が満たされる限り、競合は発生しません。

  • すでにホストにマウントされているゲストのパーティションをマウント/変更しようとしないでください。そして

  • VMがパワーオンされている間、ゲストが現在使用しているパーティションをホストからマウント/変更しません。

最初の点に関しては、VMを起動する前にホストからESP(EFIシステムパーティション)をアンマウントする必要があります。私はそのためのスクリプトを最初に書いてから、QEMUオートメーションフックの形で より良い解決策 を思いつきました。 https://gitlab.com/ranolfi/rvirtesp で利用できるようにしています。

これの素晴らしいところは、デュアルブートのように、マザーボードのブートメニューで新しいエントリを選択することで、仮想化OSをネイティブにブートできることです。

これが「サポートされている」かどうかは正確にはわかりません。しかし、ほぼ1年間、問題なく使用しています。

3
Marc.2377