新しい仮想マシンを作成した後、KVMホストとKVM仮想マシンの間でファイルとフォルダーを共有したい場合があります。この簡単なガイドでは、LinuxでVirt-managerを使用してKVMホストとゲスト仮想マシン間で共有フォルダーをセットアップする方法を説明します。
共有フォルダーを構成する前に、KVMホストにVirt-managerがインストールされていることを確認してください。
- Virt-Managerを使用してKVM仮想マシンを管理する方法
完全なKVM仮想化パッケージグループを既にインストールしている場合は、Virt-managerを個別にインストールする必要はありません。 Virt-managerは、KVM仮想化パッケージグループの一部です。それ以外の場合は、上記のリンクに示されているようにインストールする必要があります。
Virt-managerインターフェースから新しい仮想マシンを作成します。それは非常に簡単で簡単です!まだVMを起動しないでください。 KVMホストに共有フォルダーを作成する必要があります。
KVMホストに共有フォルダーを作成する
ゲストマシンと共有するKVMホストシステムに新しい共有フォルダーを作成します。
このガイドの目的のために、「 KVM_Share
」という名前の共有フォルダーを作成しました "私の$HOME
ディレクトリ。
[[email protected] ~]$ mkdir ~/KVM_Share
次に、共有フォルダーに必要なアクセス許可を設定します。ゲスト仮想マシンからこの共有フォルダーの内容を編集および変更したかったので、共有フォルダーに完全なアクセス許可を付与しました。
[[email protected] ~]$ chmod 777 ~/KVM_Share
次に、KVM共有フォルダーに正しいSELinuxタイプを設定します。
$ sudo semanage fcontext -a -t svirt_image_t "/home/sk/KVM_Share(/.*)?"
このコマンドは、共有フォルダー(/home/sk/KVM_Share
など)の下にあるものすべてのデフォルトのファイルコンテキストを設定します 私たちの場合。
上記のコマンドを実行すると、/etc/selinux/targeted/contexts/files/file_contexts.local
に行が追加されます。 変更を永続化するファイル。
追加された行は次のようになります:
$ cat /etc/selinux/targeted/contexts/files/file_contexts.local This file is auto-generated by libsemanage Do not edit directly. /usr/lib/chromium-browser system_u:object_r:bin_t:s0 /usr/lib/chromium-browser/chromium-browser.sh system_u:object_r:bin_t:s0 /usr/lib/chrome-sandbox system_u:object_r:chrome_sandbox_exec_t:s0 /home/sk/KVM_Share(/.*)? system_u:object_r:svirt_image_t:s0
次に、次のコマンドを実行して、共有ディレクトリの下にあるすべてのファイルコンテキストをデフォルトとして設定されているもの(つまり、semanageが変更するもの)に復元するようにSELinuxに指示します。
$ sudo restorecon -vR /home/sk/KVM_Share
KVM共有フォルダーに正しいSELinuxタイプを設定しないと、VMの起動時に次のエラーが発生します。
Error starting domain: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper callback(asyncjob, *args, *kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 101, in tmpcb callback(args, **kwargs) File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn ret = fn(self, *args, **kwargs) File "/usr/share/virt-manager/virtManager/object/domain.py", line 1329, in startup self._backend.create() File "/usr/lib64/python3.9/site-packages/libvirt.py", line 1353, in create raise libvirtError('virDomainCreate() failed') libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied
次に、Virt-managerで共有フォルダーを構成します。
KVMホストとゲストの間に共有フォルダーを設定します
Virt-managerを開き、ゲストシステムがオフになっていることを確認します。ゲストマシンを選択し、開くをクリックします メニューバーのボタンをクリックして、仮想マシンコンソールと詳細を表示します。
次のウィンドウで、[仮想ハードウェアの詳細を表示する]をクリックします。 メニューバーのボタンをクリックし、[ハードウェアの追加]をクリックします。 左ペインのボタン。
左側のペインの[ファイルシステム]タブをクリックし、ソースパスに共有フォルダの場所を入力し、ターゲットパスの下にマウントタグを入力します。ここでは、"~/KVM_Share"
を共有しています ディレクトリと私のマウントタグは/hostshare
。必要に応じてmount_tagの名前を指定できます。 mount_tagはパスではないことに注意してください。 mount_tagは、ホストの共有を識別するために使用される単なる名前です。 [完了して適用]をクリックして、変更を更新します。
最後にすべきことは、適切なアクセスモードを選択することです。 共有フォルダにアクセスするため。
3つの可能な値があります。それらはpassthrough
です 、mapped
およびsquash
。
- パススルー -ソース(つまり、共有フォルダー)に、ゲスト仮想マシン内から設定されたユーザーのアクセス許可設定でアクセスすることを指定します。つまり、ファイルはゲストで作成されたものと同じクレデンシャルを使用して保存されます。指定されていない場合、これがデフォルトのアクセスモードです。
- マッピング -ハイパーバイザーの権限設定を使用してソースにアクセスすることを指定します。ゲストマシンからの読み取りおよび書き込みアクセスを許可する場合は、このモードを選択する必要があります。
- スカッシュ -'passthrough'と同様に、例外は
chown
などの特権操作の失敗です。 無視されます。これにより、ハイパーバイザーを非ルートとして実行するユーザーがパススルーのようなモードを使用できるようになります。
ご希望のアクセスモードを選択したら、[適用]ボタンをクリックします。これで、Virt-managerからKVMホストとゲストシステムの共有フォルダーを構成しました。
次に、ゲスト仮想マシンの電源を入れ、ゲストマシンにマウントポイントを作成して、KVMホストシステムの共有フォルダーをマウントします。
[[email protected] ~]$ mkdir ~/hostfiles
最後に、次のコマンドを使用して、ゲストマシンに共有フォルダをマウントします。
[[email protected] ~]$ sudo mount -t 9p -o trans=virtio /hostshare hostfiles/
共有フォルダー~/KVM_Share
hostfiles
にマウントされています 仮想マシンのディレクトリ。今後は、ゲスト仮想マシンから共有フォルダの内容にアクセスできるようになります。 KVMホストシステムとゲストシステムの両方で共有フォルダーの内容を編集および削除することもできます。
起動時に毎回共有フォルダを自動的にマウントするには、次の行を/etc/fstab
に追加します。 ゲストシステムのファイル:
/hostshare /hostfiles 9p trans=virtio,version=9p2000.L,rw 0 0
これがお役に立てば幸いです。