GNU/Linux >> Linux の 問題 >  >> Linux

KVMホストとゲストの間に共有フォルダーをセットアップする

新しい仮想マシンを作成した後、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

これがお役に立てば幸いです。


Linux
  1. Linux KVM をインストールしてゲスト VM を作成する方法と例

  2. ゲストとホストが linux-kvm と macvtap を使用してお互いを認識できない

  3. 共有フォルダー内の新しいファイルを監視するスクリプト (Windows ホスト、Linux ゲスト)

  1. [[$ a ==Z*]]と[$a==Z *]の違いは?

  2. Ubuntu 20.04のWindowsホスト共有フォルダー?

  3. /の間のコンテンツフォルダの差分コピー。および /* Linux では

  1. Debian8ミニマリストDockerホストをインストールしてセットアップする方法

  2. 共有ハードウェアファイアウォールと専用ハードウェアファイアウォールの違い

  3. Windows – Qemu WindowsゲストとLinuxホスト間の共有フォルダー?