Beliebt

WSL-Dateisystem-Inkoh├Ąrenz - Dateisysteme, Windows-Subsystem f├╝r Linux

Hinten sto├če ich aber manchmal auf folgendes Problem. Die WSL und das Windows sehen unterschiedliche Dateien.

Ich hatte ein Verzeichnis namens foo auf dem Laufwerk D. Ich habe von Windows entfernt, dann sind einige seltsame Dinge passiert. Das Verzeichnis wird unsichtbar und nicht mehr l├Âschbar, aber ich kann darauf eingehen!

home:/mnt/d$ ll
total 0
drwxrwxrwx 1 user user 4096 Oct 31 14:46 ./
drwxrwxrwx 1 user user 4096 Oct 31 14:45 ../
drwxrwxrwx 1 user user 4096 May  2 08:59 bar/
home:/mnt/d$ rm foo
rm: cannot remove "foo": Is a directory
home:/mnt/d$ rm -rf foo
home:/mnt/d$ rm -rf foo
home:/mnt/d$ cd foo
home:/mnt/d/foo$ ll
total 0
drwxrwxrwx 1 user user 4096 Oct 31 14:46 ./
drwxrwxrwx 1 user user 4096 Oct 31 14:45 ../

Ich kannte die Ursache nicht.

Die einzige L├Âsung besteht darin, alle WSL-Instanzen einschlie├člich aller Hintergrund- und GUI-Anwendungen zu schlie├čen. Dann ├Âffne eine neue WSL.

Gibt es eine bessere L├Âsung? (Ich m├Âchte nicht alle meine WSLs neu starten.)

Ich benutze: - Gewinnen Sie 10 Pro - Version 10.0.18362 Build 18362

Antworten:

1 f├╝r Antwort Ôäľ 1

Ich habe keine L├Âsung f├╝r das Problem, kann aber zeigen, woher es kommt.

Die Dualit├Ąt von Windows und Linux, die alle auf der gleichen Windows-API basieren, Microsoft hat viele Kompromisse gemacht.

Erstens unterscheiden sich Dateimetadaten zwischenLinux und Windows, Microsoft beschlossen, die Linux-Metadaten als Fork in der Datei zu speichern. Das bedeutet, dass Operationen, die keine Gabeln speichern, zerst├Âren die Linux-Metadaten. Zum Beispiel alle Windows-Vorg├Ąnge, bei denen Dateien durch Erstellen einer neuen Version aktualisiert werden verliert die Linux-Eigenschaften der Datei.

Die goldene Regel lautet, dass Linux-Dateien unter Linux manipuliert werden sollten, und Windows-Dateien von Windows. Das Abweichen von diesen Regeln kann seltsame Nebenwirkungen verursachen und Inkonsistenzen.

Weitere Informationen hierzu finden Sie im Microsoft-Blog
Ändern Sie Linux-Dateien nicht mit Windows-Apps und -Tools.

Es gab Verbesserungen dieser Situation in Windows 10 Version 1903, wie im Artikel dokumentiert Mit der aktualisierten WSL in Windows 10, Version 1903, k├Ânnen Sie von Windows aus auf Linux-Dateien zugreifen. Man sollte bei solchen Operationen immer noch vorsichtig sein und sorgf├Ąltig pr├╝fen, was funktioniert Das folgende Zitat aus dem obigen Artikel zeigt, dass dies der Fall ist ist ein laufender Prozess:

Die Ehe zwischen Linux und Windows wird geschlossenst├Ąrker. Nachdem Microsoft Linux mit WSL (Windows Subsystem for Linux) eingef├╝hrt hat, tut es jetzt, wonach Benutzer gebeten haben: Windows 10 April 2019 Update erm├Âglicht den Zugriff auf Linux-Dateien von Windows.

Die Windows / Linux-Dichotomie hat eine sehr geschaffeneineffiziente Struktur, Dabei musste Linux Daten aus den Dateien lesen, um auf ihre Metadaten zugreifen zu k├Ânnen. Das Linux-Dateisystem basiert eher auf Inodes und speicherresidenten Dateitabellen. ohne welche leistung ist das einfach nicht m├Âglich.

Die L├Âsung von Microsoft bestand darin, ein virtuelles Dateisystem f├╝r Linux namens VolFs zu erstellen. Die gemounteten Windows-Festplatten verwenden DrvFs, was sehr ├Ąhnlich ist.

Zitat aus dem Microsoft-Blog WSL-Dateisystemunterst├╝tzung:

VolFs wird verwendet, um das VFS-Stammverzeichnis mithilfe von bereitzustellen %LocalAppData%lxssrootfs als Hintergrundspeicher.

Da Windows kein verwandtes Inode-Konzept hat, sind VolFsmuss ein Handle f├╝r ein Windows-Dateiobjekt in einer Inode behalten. Wenn VFS mithilfe des Lookup-R├╝ckrufs einen neuen Inode anfordert, verwenden VolFs das Handle des ├╝bergeordneten Inodes und den Namen des untergeordneten Inodes, um ein relatives ├ľffnen durchzuf├╝hren und ein Handle f├╝r den neuen Inode abzurufen. Diese Handles werden ohne Lese- / Schreibzugriff auf die Dateien ge├Âffnet und k├Ânnen nur f├╝r Metadatenanforderungen verwendet werden.

Beim ├ľffnen einer Datei erstellt VolFs eine Linux-DateiObjekt, das auf die Inode zeigt. Au├čerdem wird das Dateihandle des Inodes mit dem angeforderten Lese- / Schreibzugriff erneut ge├Âffnet und das neue Handle im Dateiobjekt gespeichert. Dieses Handle wird dann verwendet, um Dateioperationen wie Lesen und Schreiben zu erf├╝llen.

In der Tat passiert, dass hier zwei Dateisysteme parallel existieren, Windows NTFS und WSL VFS, und die Koh├Ąrenz ist nicht garantiert.

Jede L├Âsung des Problems muss von Microsoft stammen. Sie sollten sicherstellen, dass Sie immer auf dem neuesten Stand von Windows 10 sind. Microsoft arbeitet derzeit noch an diesen Problemen.