Fehler beim Speichern in Verbindung mit Virtualbox

Allgemeine Diskussionen über den Einsatz von VirtualBox.
fth0
Volunteer
Posts: 5677
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Fehler beim Speichern in Verbindung mit Virtualbox

Post by fth0 »

Die folgende Beschreibung beginnt mit dem konkreten Speichervorgang in xed und wird dann immer allgemeiner:

Es geht nicht nur um den Speichervorgang an sich, sondern um die Teilschritte, aus denen er besteht. Der Ausgangszustand ist, dass die Textdatei zum Lesen geöffnet ist, und der Editor deren Inhalt in einem Puffer hat, in dem wiederum Änderungen vorgenommen wurden. Wenn der Vorgang "Speichern" ausgewählt wird, legt xed eine neue temporäre Datei an, kopiert den Pufferinhalt hinein, schließt die ursprüngliche Textdatei, benennt dann die temporäre Datei um und schließt danach die (jetzt nicht mehr temporäre) Datei.

Die letzten beiden Dateisystemoperationen (Umbenennen und Schließen) werden von der Kombination VirtualBox Shared Folder mit NTFS nicht unterstützt, bei einer lokalen NTFS-Partition aber doch. Ob das bei einem anderen Dateisystem (FAT32, EXT3, ...) anders ist, weiß ich bisher nicht. Vielleicht mache ich heute Abend nochmal ein paar Versuche ...

Gestern konnte ich das Verhalten mit xed in Linux Mint Cinnamon nachstellen und feststellen, dass es mit den Beschreibungen aus 2009, 2011 und 2016 genau übereinstimmt. Entscheidend ist allerdings die Verwendung der GLib-Library, die z. B. von Gnome-basierten Desktop-Umgebungen verwendet wird. Wenn das Verhalten bei Dir früher nicht aufgetreten ist, hattest Du vielleicht eine andere Desktop-Umgebung verwendet. Oder es gibt weitere Hintergründe, die wir noch nicht herausgefunden haben ...
fth0
Volunteer
Posts: 5677
Joined: 14. Feb 2019, 03:06
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Linux, Windows 10, ...
Location: Germany

Re: Fehler beim Speichern in Verbindung mit Virtualbox

Post by fth0 »

Um mal an einem Beispiel zu zeigen, welche Dateisystemzugriffe es in meiner Nachstellung gab:
strace.1691 wrote:
19:19:24.241254 openat(AT_FDCWD, "/media/sf_Test/Test.txt", O_RDONLY) = 14
19:19:24.241987 fstat(14, {st_mode=S_IFREG|0770, st_size=4, ...}) = 0
19:19:24.609776 lstat("/media/sf_Test/Test.txt", {st_mode=S_IFREG|0770, st_size=4, ...}) = 0
19:19:24.610314 access("/media/sf_Test/Test.txt", W_OK) = 0
19:19:24.625949 read(14, "Z1\n\n", 8192) = 4

19:19:32.766828 lstat("/media/sf_Test/Test.txt", {st_mode=S_IFREG|0770, st_size=4, ...}) = 0
19:19:32.767847 openat(AT_FDCWD, "/media/sf_Test/Test.txt", O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0666) = -1 EEXIST (Die Datei existiert bereits)
19:19:32.768065 openat(AT_FDCWD, "/media/sf_Test/Test.txt", O_WRONLY|O_CREAT|O_NOFOLLOW, 0666) = 14
19:19:32.768533 fstat(14, {st_mode=S_IFREG|0770, st_size=4, ...}) = 0

19:19:32.768756 openat(AT_FDCWD, "/media/sf_Test/.goutputstream-MDK0M1", O_WRONLY|O_CREAT|O_EXCL, 0666) = 15
19:19:32.769305 fchown(15, 0, 999)      = 0
19:19:32.769653 fchmod(15, 0770)        = 0

19:19:32.770222 close(14)               = 0

19:19:32.773922 write(15, "Z1\nZ2\n\n", 7) = 7
19:19:32.778954 fsync(15)               = 0
19:19:32.779560 rename("/media/sf_Test/.goutputstream-MDK0M1", "/media/sf_Test/Test.txt") = -1 ETXTBSY (Das Programm kann nicht ausgeführt oder verändert werden (busy))
19:19:32.781851 close(15)               = 0
19:19:32.782321 unlink("/media/sf_Test/.goutputstream-MDK0M1") = 0
Ich habe in xed die Datei "Test.txt" geöffnet (14), eine Zeile ("Z2") hinzugefügt und 8 Sekunden später auf den Speichern-Button geklickt. Daraufhin wurde eine temporäre Datei ".goutputstream-MDK0M1" geöffnet (15), Eigentümer und Zugriff geändert, die Originaldatei geschlossen, die temporäre Datei beschrieben, synchronisiert, vergeblich umzubenennen versucht und danach geschlossen. Vielleicht würde das Ganze schon funktionieren, wenn erst das "close(15)" und danach das "rename" käme, aber das ist alles in der verbreiteten GLib-Library implementiert.

Du siehst hier also, wie kompliziert der Speichervorgang tatsächlich ist. ;)
Dago-Bert
Posts: 8
Joined: 1. Jun 2022, 13:34

Re: Fehler beim Speichern in Verbindung mit Virtualbox

Post by Dago-Bert »

Hallo Leute,

vielen Dank. Ich bin nur ein User und kein IT-Spezialist (und möchte auch keiner werden, da bräuchte ich noch ein Leben ;--))
Echte Netzwerkfreigaben waren keine Lösung für mich, sind auch sehr langsam. So braucht XnView 'ewig' beim Öffnen/Anzeigen einer Photosession (mit z.B. 1200 Bildern) und dem Erstellen der Miniaturen ...

Mein 'Workaround' : bei etlichen VM's bin ich jetzt wieder auf Win7 zurück, obwohl ich eigentlich immer mehr zu Linux wollte. In Windows funktionieren die 'shared Folders' einwandfrei. (und dort ist der Internetzugang deaktiviert)

Ansonsten speichere ich jetzt wo weniger oft nötig (in den verbleibenden Mint-VM's) immer mit Namen+hochgezählterNummer, also ständig neuem Namen.

So brauche ich auch bei meinen NTFS-Daten-Festplatten nichts ändern.

Grüße, Bert
Post Reply