virt-managerを使用してLinuxホストとWindowsゲスト間でファイルを共有しますか?

virt-managerを使用してLinuxホストとWindowsゲスト間でファイルを共有しますか?

virt-managerの「ファイルシステムのパススルー」仮想ハードウェアオプションを使用して、WindowsゲストとLinuxホスト上のフォルダを共有できますか? Linuxゲストでこれを行う方法についていくつかのチュートリアルを見つけましたが、Windowsゲストでこれを試みると、VMを起動しようとすると次のエラーメッセージが表示されます。

Error starting domain: Unable to read from monitor: Connection reset by peer

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
    self._backend.create()   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

いくつかの文書を探しましたが、見つけることができるものよくある質問と「一部のスクリーンショット」を含む公式ページへのリンク

答え1

Windowsゲストを使用すると、これは可能ではないと思います。私は通常Linux KVMホストにSambaサーバーを設定し、そのサーバーを使用してKVMゲストとフォルダを共有します。

ファイルシステムパススルー

KVMゲスト(Linux)とKVMホストディレクトリを共有する方法のドキュメントは、virt-manager Webサイトにあります。ページのタイトルは次のとおりです。ゲストとホストファイルを共有する例

サンバの設定

linux-kvmのウェブサイトにはSambaの設定手順も含まれています。文書は次のタイトルで提供されます。ヒント:Sambaを使用してLinuxホスト上のファイルをWindowsゲストと共有する方法

答え2

GnomeおよびKDEデスクトップ環境のデフォルトのファイルマネージャは、SMBプロトコルを使用してWindows共有リソースへの簡単なアクセスを提供します。
LinuxホストにSambaサーバーをインストールする必要はありません。WindowsオペレーティングシステムにはすでにSamba通信プロトコルが組み込まれているためです。

ゲストOSが「Windows XPたとえば、共有するフォルダを選択するか、「hostshare」などの目的でフォルダを作成し、そのフォルダを右クリックします。->特性->共有するラベル->選択する: "このフォルダをネットワークで共有「そして」ネットワークユーザーが自分のファイルを変更できるようにする」。

この時点で、Windowsファイアウォールが共有ファイルとプリンタリソースへのアクセスを許可していることを確認してください。行く」メニューを始める->設定->コントロールパネル->Windowsファイアウォール->例外ラベル->選択: ->"ファイルとプリンタの共有」。

Windows ゲスト仮想マシンがネットワーク経由で Linux ホストを表示できることを確認します。したがって、Windowsのコマンドラインで次のように入力します。ping 10.0.0.12この場合(たとえば、「10.0.0.12」はホストのIPアドレスです)。 echoから応答がない場合は、問題を解決する必要があります。
そして、Linuxのコマンドラインでも同じことをします。ping -c3 192.168.122.216ここでは、これらの数字(たとえば)はゲストVMに割り当てられているvirt-IPアドレスに属し、それを独自のものに変更する必要があります。

Windows IP アドレスを取得するには、次のコマンドを実行します。ipconfig

Linux IP アドレスを取得するには、次のコマンドを実行すると便利です。

$ ifconfig
$ ip a
$ ip r
$ hostname -I
$ hostname -i

開いている」ノーチラス「じゃあ行きなさい」文書->サーバーに接続->入力する」サーバーアドレス”箱のタイプ:smb://192.168.122.216 ->つながるWindows に組み込まれた
Samba サーバーの検索可能なリソースを含む Nautilus ウィンドウが開きます。ホスト共有「Windowsフォルダの内容です。それはすべてです!

答え3

これで、次のものを使用できます。virtio-fsゲストからホストからエクスポートされたファイルシステムを効率的に共有できます。一部のネットワークベースの解決策ではなく、ホストとゲスト間の共有メモリに依存するため、非常に効率的です。

最小前提条件(作成時)

  • マスター:
    • カーネル 5.4、QEMU 5.0、libvirt 6.2、
    • 大容量ページやファイル対応メモリなどのゲストRAM割り当て用の共有メモリメカニズム。
  • ゲスト:
    • Linux: カーネル 5.4
    • Windows:WinFSP(Windowsファイルシステムエージェント)

大容量ページがサポートされているRAMを使用して20.04ゲストをホストするUbuntu 20.10サーバー(この組み合わせは上記の最小前提条件を満たしています)に正常にデプロイされました。

いくつかの方法

詳細な背景の紹介

  • "virtio-fs: 仮想マシン用共有ファイルシステム" 作成者: Stefan Hajnoczi, Fosdem20(PDF/フルデモ)

答え4

@slmが最善の答えを提供したと思います。しかし、別のユースケースがあります。しかし、この選択肢は少し面倒です。

おおよそのガイドです。次の明示的なコマンドについて考えないでください。

  1. イメージファイルの作成(ms-dosフロッピーまたはISO-9660 CD)
  2. mkfs.msdos などのファイルシステムを使用してイメージ形式を指定します。
  3. 必要に応じて画像のファイルをコピーして操作します(例:mcopyなど)。
  4. ゲストVM CD-ROMまたはフロッピードライブにイメージをマウントします。

これは理想的ではありませんが、ゲストVMがdom0とゲスト間のネットワークプロトコル接続を許可しない場合(たとえば、閉じたVPNセッション中)に機能します。

詳細については、ここをクリックしてください。

https://stackoverflow.com/q/11202706/3407600

関連情報