第19章 ホストとその仮想マシン間でのファイルの共有
場合によっては、ホストシステムとそれが実行する仮想マシン (VM) 間でデータを共有することが頻繁に必要になります。これを迅速かつ効率的に行うには、virtio
ファイルシステム (virtiofs
) を使用できます。
19.1. virtiofs を使用してホストと仮想マシン間でファイルを共有する
virtio
ファイルシステム (virtiofs
) を使用すると、ホストと仮想マシン (VM) 間で、ローカルファイルシステムの構造と同じように機能するディレクトリーツリーとしてファイルを共有できます。
19.1.1. コマンドラインを使用してホストと Linux 仮想マシン間でファイルを共有する
RHEL 10 をハイパーバイザーとして使用する場合、virtiofs
機能を使用して、ホストシステムとその仮想マシン (VM) 間でファイルを共有できます。
前提条件
- RHEL 10 ホストに仮想化が インストールされ、有効になっている。
仮想マシンと共有するディレクトリーが利用可能である。既存のディレクトリーを共有しない場合は、shared-files などの新しいディレクトリーを作成します。
mkdir /root/shared-files
# mkdir /root/shared-files
Copy to Clipboard Copied! - ファイルを共有する仮想マシンが、ゲストオペレーティングシステムとして Linux ディストリビューションを使用している。
手順
仮想マシンと共有するホストの各ディレクトリーを、仮想マシンの XML 設定の virtiofs ファイルシステムとして設定します。
目的の仮想マシンの XML 設定を開きます。
virsh edit vm-name
# virsh edit vm-name
Copy to Clipboard Copied! 仮想マシンの 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>
<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>
Copy to Clipboard Copied! この例では、ホスト上の
/root/shared-files
ディレクトリーを仮想マシンに対してhost-file-share
として表示するように設定します。
仮想マシンの共有メモリーを設定します。そのためには、共有メモリーバッキングを XML 設定の
<domain>
セクションに追加します。<domain> [...] <memoryBacking> <access mode='shared'/> </memoryBacking> [...] </domain>
<domain> [...] <memoryBacking> <access mode='shared'/> </memoryBacking> [...] </domain>
Copy to Clipboard Copied! 仮想マシンを起動します。
virsh start vm-name
# virsh start vm-name
Copy to Clipboard Copied! ゲストオペレーティングシステムにファイルシステムをマウントします。以下の例では、Linux ゲストオペレーティングシステムで事前に設定した
host-file-share
ディレクトリーをマウントします。mount -t virtiofs host-file-share /mnt
# mount -t virtiofs host-file-share /mnt
Copy to Clipboard Copied!
検証
- 共有ディレクトリーが仮想マシンからアクセス可能になり、ディレクトリーに保存されているファイルを開けるようになりました。
既知の問題と制限
-
noatime
、strictatime
など、アクセス時間に関連するファイルシステムのマウントオプションは virtiofs では機能しない可能性が高く、Red Hat はその使用を推奨しません。
19.1.2. Web コンソールを使用してホストと Linux 仮想マシン間でファイルを共有する
RHEL Web コンソールを使用すると、virtiofs
機能を使用して、ホストシステムとその仮想マシン (VM) 間でファイルを効率的に共有できます。
前提条件
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
仮想マシンと共有するディレクトリーがある。既存のディレクトリーを共有したくない場合は、たとえば centurion という名前の新しいディレクトリーを作成します。
mkdir /home/centurion
# mkdir /home/centurion
Copy to Clipboard Copied! - データを共有する仮想マシンは、ゲストオペレーティングシステムとして Linux ディストリビューションを使用します。
手順
新しいページが開き、選択した仮想マシンに関する基本情報を含む Overview セクションと、Console セクションが表示されます。
Shared directories セクションには、その仮想マシンと共有されているホストファイルとディレクトリーに関する情報、および共有ディレクトリーを 追加 または 削除 するためのオプションが表示されます。
Share a host directory with the guest が表示されます。
以下の情報を入力します。
- Source path - 共有するホストディレクトリーへのパス。
- Mount tag - 仮想マシンがディレクトリーをマウントするために使用するタグ。
追加オプションを設定します。
-
Extended attributes - 共有ファイルとディレクトリーで拡張属性
(xattr)
を有効にするかどうかを設定します。
-
Extended attributes - 共有ファイルとディレクトリーで拡張属性
選択したディレクトリーが仮想マシンと共有されます。
検証
- 共有ディレクトリーが VM でアクセス可能であり、そのディレクトリーに保存されているファイルを開くことができるようになったことを確認します。