19.2. virtiofs を使用したホストとその仮想マシン間でのファイルの共有
virtiofs を使用すると、ホストと仮想マシン (VM) の間で、ローカルファイルシステムの構造と同じように機能するディレクトリーツリーとしてファイルを共有できます。virtiofs を使用して、次のタスクを実行できます。
19.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
として表示するように設定します。
共有メモリー用の NUMA トポロジーを XML 設定に追加します。以下の例では、すべての CPU と RAM に基本的なトポロジーを追加します。
<cpu mode='host-passthrough' check='none'> <numa> <cell id='0' cpus='0-{number-vcpus - 1}' memory='{ram-amount-KiB}' unit='KiB' memAccess='shared'/> </numa> </cpu>
共有メモリーバッキングを 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 を使用できます。
19.2.2. virtiofs を使用したホストと Windows 仮想マシン間でのファイルの共有
RHEL 9 をハイパーバイザーとして使用する場合、virtiofs
機能と virtio-win
パッケージを使用して、ホストシステムと Windows 仮想マシン (VM) の間でファイルを効率的に共有できます。
virtiofs.exe
コマンドと -i
パラメーターを使用して、Windows 仮想マシン上で virtiofs
サービスを大文字と小文字を区別しないモードで実行できます。
前提条件
- virtiofs を使用するように仮想マシンの XML 設定ファイルを設定している。詳細は、「virtiofs を使用したホストとその仮想マシン間でのファイルの共有」 を参照してください。
- 最新バージョンの Windows File System Proxy インストーラーがある。詳細は、WinFsp installer を参照してください。
-
Windows 仮想マシンに
virtio-win
パッケージがインストールされている。詳細は、Installing virtio drivers on a Windows guest を参照してください。
手順
Windows 仮想マシンで WinFsp をインストールします。これを行うには、インストールプログラムを使用し、プロンプトに従います。
インストールウィザードの 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 サービスのセットアップ時にマウントポイントを指定しなかった場合は、
19.2.3. Web コンソールで virtiofs を使用してホストとその仮想マシン間でファイルを共有する
RHEL Web コンソールを使用すると、virtiofs
機能を使用して、ホストシステムとその仮想マシン (VM) 間でファイルを効率的に共有できます。
前提条件
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
仮想マシンと共有するディレクトリーがある。既存のディレクトリーを共有したくない場合は、たとえば centurion という名前の新しいディレクトリーを作成します。
# mkdir /home/centurion
- データを共有する仮想マシンは、ゲストオペレーティングシステムとして Linux ディストリビューションを使用します。
手順
仮想マシン インターフェイスで、ファイルを共有する VM をクリックします。
新しいページが開き、選択した VM に関する基本情報を含む 概要 セクションと、コンソール セクションが表示されます。
共有ディレクトリー までスクロールします。
共有ディレクトリー セクションには、その VM と共有されているホストファイルとディレクトリーに関する情報、および共有ディレクトリーを 追加 または 削除 するためのオプションが表示されます。
共有ディレクトリーの追加 をクリックします。
ホストディレクトリーをゲストと共有する ダイアログが表示されます。
以下の情報を入力します。
- ソースパス - 共有するホストディレクトリーへのパス。
- マウントタグ - VM がディレクトリーをマウントするために使用するタグ。
追加オプションを設定します。
-
拡張属性 - 共有ファイルとディレクトリーで拡張属性
xattr
を有効にするかどうかを設定します。
-
拡張属性 - 共有ファイルとディレクトリーで拡張属性
共有 をクリックします。
選択したディレクトリーは仮想マシンと共有されます。
検証
- 共有ディレクトリーが VM でアクセス可能であり、そのディレクトリーに保存されているファイルを開くことができるようになったことを確認します。
19.2.4. virtiofs を使用したホストとその仮想マシン間での共有ファイルの削除のための Web コンソールの使用
RHEL Web コンソールを使用すると、virtiofs
機能を使用してホストシステムとその仮想マシン (VM) 間で共有されているファイルを削除できます。
前提条件
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
- ディレクトリーは仮想マシンによって使用されなくなりました。
手順
仮想マシン インターフェイスで、共有ファイルを削除する VM をクリックします。
新しいページが開き、選択した VM に関する基本情報を含む 概要 セクションと、コンソール セクションが表示されます。
共有ディレクトリー までスクロールします。
共有ディレクトリー セクションには、その VM と共有されているホストファイルとディレクトリーに関する情報、および共有ディレクトリーを 追加 または 削除 するためのオプションが表示されます。
仮想マシンとの共有を解除するディレクトリーの横にある Remove をクリックします。
ファイルシステムの削除 ダイアログが表示されます。
削除 をクリックします。
選択したディレクトリーは VM と共有されていません。
検証
- 共有ディレクトリーは、VM で使用できなくなり、アクセスできなくなります。