最近、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の誰かが、ゲストのユーザーにホストファイルシステムへの書き込みアクセスを許可するパススルーファイルシステムを設定するのに役立つことを願っています。
これはホストでの権限の問題のように思えます:
デフォルトでは、qemu/kvmプロセスは非特権ユーザー(Debian Wheezyのlibvirt-qemu)として開始されます。したがって、VMゲストがアクセスできる(書き込み可能な)ファイルは、そのユーザーがアクセスできる(または書き込み可能な)ファイルのみです。
Qemuを実行するユーザーにディレクトリの所有権を設定してみてください(/etc/libvirt/qemu.confのuser =およびgroup =を参照)。
多分これはあなたの場合に役立ちますか?
shellでqemuモニターを起動するときに、接頭辞として「Sudo」を追加する必要があります。ファイルまたはフォルダを作成するときの権限の問題を解決するために行いました。私の環境はubuntu16.04 + qemu-2.12です。