20.2. virtiofs を使用してホストと仮想マシン間でファイルを共有する
virtiofs を使用すると、ホストと仮想マシン (VM) の間で、ローカルファイルシステムの構造と同じように機能するディレクトリーツリーとしてファイルを共有できます。
20.2.1. virtiofs を使用してホストと仮想マシン間でファイルを共有する
RHEL 9 をハイパーバイザーとして使用する場合は、virtiofs
機能を使用して、ホストシステムとその仮想マシン間でファイルを効率的に共有できます。
前提条件
- 仮想化は、RHEL 9 ホストでインストールされ、有効になります。
仮想マシンと共有するディレクトリーがある。既存のディレクトリーを共有しない場合は、shared-files などの新しいディレクトリーを作成します。
# mkdir /root/shared-files
- データを共有する仮想マシンは、ゲストオペレーティングシステムとして Linux ディストリビューションを使用します。
手順
仮想マシンと共有するホストの各ディレクトリーを、仮想マシンの XML 設定の virtiofs ファイルシステムとして設定します。
目的の仮想マシンの XML 設定を開きます。
# virsh edit vm-name
仮想マシンの XML 設定の
<devices>
に、以下のようなエントリーを追加します。<filesystem type='mount' accessmode='passthrough'> <driver type='virtiofs'/> <binary path='/usr/libexec/virtiofsd' xattr='on'/> <source dir='/root/shared-files'/> <target dir='host-file-share'/> </filesystem>
この例では、ホストの
/root/shared-files
ディレクトリーを、仮想マシンのhost-file-share
として表示するように設定します。
仮想マシンの共有メモリーを設定します。そのためには、共有メモリーバッキングを XML 設定の
<domain>
セクションに追加します。<domain> [...] <memoryBacking> <access mode='shared'/> </memoryBacking> [...] </domain>
仮想マシンを起動します。
# virsh start vm-name
ゲストオペレーティングシステムにファイルシステムをマウントします。以下の例では、Linux ゲストオペレーティングシステムで事前に設定した
host-file-share
ディレクトリーをマウントします。# mount -t virtiofs host-file-share /mnt
検証
- 共有ディレクトリーが仮想マシンからアクセス可能になり、ディレクトリーに保存されているファイルを開けるようになりました。
既知の問題と制限
-
noatime
、strictatime
など、アクセス時間に関連するファイルシステムのマウントオプションは virtiofs では機能しない可能性が高く、Red Hat はその使用を推奨しません。
トラブルシューティング
-
virtiofs
がユースケースに最適でない場合、またはシステムでサポートされていない場合は、代わりに NFS を使用できます。
20.2.2. virtiofs を使用してホストと Windows 仮想マシン間でファイルを共有する
RHEL 9 をハイパーバイザーとして使用する場合、virtiofs
機能と virtio-win
パッケージを使用して、ホストシステムと Windows 仮想マシン (VM) の間でファイルを効率的に共有できます。
virtiofs.exe
コマンドと -i
パラメーターを使用して、Windows 仮想マシン上で virtiofs
サービスを大文字と小文字を区別しないモードで実行できます。
前提条件
- virtiofs を使用するように仮想マシンの XML 設定ファイルを設定している。詳細は、「virtiofs を使用してホストと仮想マシン間でファイルを共有する」 を参照してください。
-
virtio
ドライバーインストールメディアを仮想マシンに割り当てている。 -
Windows 仮想マシンに
virtio-win
パッケージがインストールされている。詳細は、Installing virtio drivers on a Windows guest を参照してください。
手順
Windows 仮想マシンで WinFsp をインストールします。これを行うには、
virtio-win
ISO イメージをマウントし、winfsp
MSI インストーラーを起動して、プロンプトに従います。インストールウィザードの Custom Setup ウィンドウで、仮想マシンにインストールする機能を選択します。
virtiofs サービスを起動します。
# sc start VirtioFsSvc
This PC に移動します。
File Explorer
This PC virtiofs は、Windows 仮想マシン上で、
z:
から逆順に遡る、使用可能な最初のドライブ文字として使用できます。たとえば、my_viofs (Z:)
です。重要共有ディレクトリーにアクセスするには、仮想マシンを再起動するたびに virtiofs サービスを再起動する必要があります。
オプション: 追加の virtiofs インスタンスを設定するには、以下を実行します。
virtiofs サービスを停止します。
# sc stop VirtioFsSvc # sc config VirtioFsSvc start=demand
複数の virtiofs インスタンスをセットアップするように WinFSP.Launcher サービスを設定します。
# "C:\Program Files (x86)\WinFsp\bin\fsreg.bat" virtiofs "<path to the binary>\virtiofs.exe" "-t %1 -m %2"
virtiofs インスタンスをドライブにマウントします。
たとえば、
mount_tag0
タグを持つ virtiofs をY:
ドライブにマウントするには、以下を実行します。"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsY mount_tag0 Y:
- 前の手順を繰り返して、すべての virtiofs インスタンスをマウントします。
virtiofs インスタンスをアンマウントするには、以下を実行します。
"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsY
検証
Windows 仮想マシンで、This PC に移動します。
File Explorer
This PC -
virtiofs サービスのセットアップ時にマウントポイントを指定しなかった場合は、
z:
から逆順に遡る、使用可能な最初のドライブ文字が使用されます。 - 複数の virtiofs インスタンスをセットアップした場合、それらはインスタンスに割り当てた文字を持つドライブとして表示されます。
-
virtiofs サービスのセットアップ時にマウントポイントを指定しなかった場合は、