web-dev-qa-db-ja.com

libvirt / qemuを使用したパススルー(9p)ファイルシステムの読み取り/書き込みアクセス?

最近、KVM/QEMU/libvirtの最近のバージョンでパススルーファイルシステムのサポートを実験し始めました。ファイルシステムを読み取りアクセスに使用できるようにすることは「うまくいった」だけですが、書き込みアクセスがどのように機能することになっているのかについて少し戸惑っています。ゲストにファイルシステムをマウントした後:

# mount -t 9p -o trans=virtio /fs/data /mnt

モードo+wがある場合、既存のファイルをmodifyできます。

# cd /mnt/work
# ls -l foo
-rw-rw-rw-. 1 root root 17 Dec 20 11:16 foo
# cat foo
this is line one
# echo this is line two >> foo
# cat foo
this is line one
this is line two

しかし、ディレクトリのアクセス許可に関係なく、新しいファイルまたはディレクトリを作成することはできません。

# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# touch bar
touch: setting times of `bar': No such file or directory
# mkdir bar
# mkdir: cannot create directory `bar': Operation not permitted

私が見つけたドキュメント(例 this )は、この問題を明示的に扱っていません。ここのServerfaultの誰かが、ゲストのユーザーにホストファイルシステムへの書き込みアクセスを許可するパススルーファイルシステムを設定するのに役立つことを願っています。

14
larsks

これはホストでの権限の問題のように思えます:

デフォルトでは、qemu/kvmプロセスは非特権ユーザー(Debian Wheezyのlibvirt-qemu)として開始されます。したがって、VMゲストがアクセスできる(書き込み可能な)ファイルは、そのユーザーがアクセスできる(または書き込み可能な)ファイルのみです。

Qemuを実行するユーザーにディレクトリの所有権を設定してみてください(/etc/libvirt/qemu.confのuser =およびgroup =を参照)。

多分これはあなたの場合に役立ちますか?

5
matt_gnu

shellでqemuモニターを起動するときに、接頭辞として「Sudo」を追加する必要があります。ファイルまたはフォルダを作成するときの権限の問題を解決するために行いました。私の環境はubuntu16.04 + qemu-2.12です。

0
ianwang