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とファイル共有- IMHOの公式使い方はよく書かれていて理解しやすいです。
- QEMU/KVM + virtio-fs - ホストディレクトリを仮想マシンと共有- 包括的なブログ記事では、セキュリティのベストプラクティスを考慮し、ファイルベースのメモリ使用量を示します。
- Virtio-fsは本当に素晴らしいです! (しかも私が設定した方法)- 短い方法は、大きなページ対応メモリ使用量を示しています。
詳細な背景の紹介
答え4
@slmが最善の答えを提供したと思います。しかし、別のユースケースがあります。しかし、この選択肢は少し面倒です。
おおよそのガイドです。次の明示的なコマンドについて考えないでください。
- イメージファイルの作成(ms-dosフロッピーまたはISO-9660 CD)
- mkfs.msdos などのファイルシステムを使用してイメージ形式を指定します。
- 必要に応じて画像のファイルをコピーして操作します(例:mcopyなど)。
- ゲストVM CD-ROMまたはフロッピードライブにイメージをマウントします。
これは理想的ではありませんが、ゲストVMがdom0とゲスト間のネットワークプロトコル接続を許可しない場合(たとえば、閉じたVPNセッション中)に機能します。
詳細については、ここをクリックしてください。