Lese- / Schreibzugriff für Passthrough (9p) -Dateisysteme mit libvirt / qemu?

14

Ich habe kürzlich begonnen, mit der Unterstützung von Passthrough-Dateisystemen in neueren Versionen von KVM / QEMU / libvirt zu experimentieren. Das Bereitstellen der Dateisysteme für den Lesezugriff hat "gerade funktioniert", aber ich bin ein wenig verwirrt darüber, wie der Schreibzugriff funktionieren soll. Nach dem Mounten des Dateisystems im Gast:

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

Ich kann eine vorhandene Datei ändern, wenn sie den folgenden Modus hat o+w:

# 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

Unabhängig von den Verzeichnisberechtigungen kann ich jedoch keine neue Datei oder kein neues Verzeichnis erstellen :

# 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

In der Dokumentation, die ich finden konnte (z. B. diese ), wird dieses Problem nicht explizit behandelt. Ich hoffe, dass jemand hier bei Serverfault mir helfen kann, ein Passthrough-Dateisystem einzurichten, mit dem ich einem Benutzer im Gast Schreibzugriff auf ein Host-Dateisystem gewähren kann.

larsks
quelle
Sind Sie sicher, dass Sie das Dateisystem mit Lese- / Schreibzugriff aktiviert haben? Können Sie Dateien erstellen? Erstellen Sie Dateien als Root- oder normaler Benutzer (ja, ich sehe Ihr #, aber Sie haben das möglicherweise manuell geschrieben)?
Janus Troelsen
Haben Sie es geschafft, dies zu beheben? Ich habe ein ähnliches Problem, weil ich nicht in der Lage bin, auf den gemounteten Host-Pfad im Gast zu schreiben.
Shoan
Ich habe nie wirklich Fortschritte gemacht. Es war eine Art Nischenanwendung für mich ... Ich verwende KVM-Gäste im Allgemeinen nicht an Orten, an denen der Zugriff auf ein lokales Dateisystem nützlich wäre. Ich habe begonnen, VirtualBox auf meinem Desktop auszuführen, auf dem ich diese Funktion von Zeit zu Zeit verwenden möchte.
Larsks
Sehen Sie eine Selinux-Warnung auf dem physischen Host oder auf dem Gast?
c4f4t0r
Das könnte helfen? linux-kvm.org/page/9p_virtio
Danila Ladner

Antworten:

4

Dies scheint mir ein Berechtigungsproblem auf dem Host zu sein:

Standardmäßig wird der qemu / kvm-Prozess als nicht privilegierter Benutzer gestartet (libvirt-qemu in Debian Wheezy). Daher können die VM-Gäste nur auf Dateien zugreifen, auf die dieser Benutzer zugreifen kann (oder auf die er schreiben kann).

Sie können versuchen, den Besitz des Verzeichnisses auf den Benutzer festzulegen, unter dem qemu ausgeführt wird (siehe user = und group = in /etc/libvirt/qemu.conf).

Vielleicht hilft das in deinem Fall?

matt_gnu
quelle
Ich habe das in meinem Fall versucht, das ist das Gleiche wie diese Frage , aber ich kann es nicht zum Laufen bringen, selbst wenn Apparmor ausgeschaltet ist.
Diagon
0

Wenn Sie Ihren QEMU-Monitor in der Shell starten, sollten Sie "sudo" als Präfix hinzufügen. Ich habe es getan, um das Berechtigungsproblem beim Erstellen einer Datei oder eines Ordners zu beheben. meine umgebung ist ubuntu16.04 + qemu-2.12.

ianwang
quelle