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


26

virt-manager内で「Filesystem Passthrough」仮想ハードウェアオプションを使用して、Linuxホスト上のフォルダーをWindowsゲストと共有することはできますか?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

私はいくつかのドキュメントを入手しようとしましたが見つけることができたのはFAQと「いくつかのスクリーンショット」にリンクしている公式ページだけでし

回答:


16

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

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

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

Sambaのセットアップ

linux-kvm Webサイトには、Sambaのセットアップ方法も記載されています。このドキュメントは、タイトル:ヒント:Linuxホスト上のファイルをSambaを使用してWindowsゲストと共有する方法です


「Sambaのセットアップ」の部分に賛成です。これは、より安全なアプローチである
pqnet

@pqnet:どのように、そしてなぜそれがより安全であるかを限定してもらえますか?
0xC0000022L

4
@ 0xC0000022Lは、ゲストOSを効果的にだますことができるバーチャライザーに依存していないため、オペレーティングシステムが変更された場合に破損する可能性があります。Sambaはネットワークプロトコルであるため、ゲストオペレーティングシステムは、できることと期待できないことについてあまり期待していません。
pqnet

6

GnomeとKDEの両方のデスクトップ環境のデフォルトのファイルマネージャーは、SMBプロトコルを使用してWindows共有リソースに簡単にアクセスできます。Windows OSには既にSamba通信プロトコルが組み込まれているため
、LinuxホストマシンにSambaサーバーをインストールする必要はありません

たとえば、ゲストOSが「Windows XP」で、共有するフォルダーを選択するか、「hostshare」などの目的でフォルダーを作成して右クリックします->プロパティ->共有」タブ->ネットワーク上でこのフォルダを共有する」および「ネットワークユーザーにファイルの変更を許可する」を選択します。

この時点で、Windowsのファイアウォールが共有ファイルとプリンターリソースにアクセスできることを確認してください。「に進みメニューを起動する> -設定- >コントロールパネル- >Windowsファイアウォール- >例外」タブ- > - >「:選択してファイルとプリンタの共有を」。

Linuxホストマシンがネットワーク経由でWindowsゲストVMから見えることを確認します。したがって、Windowsのコマンドラインから次のように入力します。「ping 10.0.0.12」。この場合(例として)「10.0.0.12」はホストIPアドレスです。それを自分のものに変更する必要があります。エコーの応答がない場合は、トラブルシューティングを行う必要があります。
Linuxコマンドラインから同じことを行います: " ping -c3 192.168.122.216 "、これらの番号は(例として)ゲストVMに割り当てられたvirt-IPアドレスに属します。自分のものに変更する必要があります。

Linuxホストマシンから「Nautilus」を開き、「ファイル->サーバーに接続->サーバーアドレス」ボックスに移動します:「smb / 192.168.122.216->接続」。
Nautilusウィンドウが開き、Windows組み込みのSambaサーバーの参照可能なリソースが表示されます。「hostshare」windowsフォルダーのコンテンツを表示してアクセスできるようになります。それで全部です!


2

@slmが最良の答えを提供してくれたと思います。ただし、別のユースケースがあります。ただし、この代替手段はちょっとしたハックです。

大まかなガイド。これらの決定的なコマンドを考慮しないでください。

  1. イメージファイルを作成する(ms-dosフロッピーまたはISO-9660 CD)
  2. mkfs.msdosなどのファイルシステムで画像をフォーマットします
  3. mcopyなどを使用して、必要に応じてイメージ上のファイルをコピーおよび操作します
  4. ゲストVMのcd-romまたはフロッピードライブにイメージをマウントする

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

詳細はこちら:

/programming//q/11202706/3407600


1

LinuxホストはループバックデバイスにNTFSをマウントできるため、読み取り専用の共有が可能です(WindowsゲストにはR / Wがあり、Linuxホストは読み取り専用になります)。Windowsゲストに「raw」タイプのストレージを使用するとします。

Win.imgを生のイメージとして使用し、ディスクとしてエミュレートされていると仮定します。

  • 手順1:fdiskを使用して、ファイルシステムのオフセットを見つけます(ディスクであるため)。
$ fdisk -lu Win.img

Disk Win.img: 16.3 GB, 16252928000 bytes
255 heads, 63 sectors/track, 1975 cylinders, total 31744000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3a793a79

    Device Boot      Start         End      Blocks   Id  System
    Win.img   *          63    31712309    15856123+   7  HPFS/NTFS/exFAT

次に、オフセット= 63 x 512 = 32256を計算します

  • ステップ2:マウントする
mount Win.img /mntpoint -o ro,loop,offset=32256

注意

RWでマウントできるので、Linuxは書き込みできます、ファイルシステムは破損します!LinuxとWindowsの両方が、同時にファイルシステムにアクセスしているためです!同じ空きブロックを割り当てて、書き込みたいファイルを書き込むことができます!

Linuxの読み取りが安定しない、まれなケース

この方法を使用すると、ファイルシステムは安全になり、安定した読み取りが可能になります。しかし、私が言ったように、彼らは同時にファイルシステムにアクセスするため、Windowsが何かを書き込もうとすると、Linuxに通知されず、破損したものを読むことがあります。ただし、慎重に使用すれば、読み取りは非常に安定しているはずです。


3
これはどれくらい信頼性がありますか?データはキャッシュに入れることができます。書き込みは、他のシステムでの読み取りに関してアトミックではありません。
ctrl-alt-delor


0

Andyのソリューションは、私、debianホスト、そしてWindowsゲストのために働きました。redhatの特別なネットワークドライバーを使用してspice-guest-toolsをインストールしていることに注意してください。

さらに、smbを使用してパスワード保護を削除する必要がありました。ここでそのリンクでパスワードを削除する方法を見つけました https://pureinfotech.com/setup-network-file-sharing-windows-10/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.