Wie kann ich Sambas VFS-Fruit mit großen erweiterten macOS-Attributen auf einem Linux-Kernel zum Laufen bringen?

Wie kann ich Sambas VFS-Fruit mit großen erweiterten macOS-Attributen auf einem Linux-Kernel zum Laufen bringen?

Ich habe einen macOS-Client (12.6.7) mit APFS-Dateisystem, das große erweiterte Attribute unterstützt (ein Attributwert war bei einem Test über 68 MB groß).

Ich habe einen NAS-Server mit Ubuntu Server 22.04.2 LTS mit ZFS-Dateisystem und Samba Version 4.15.13-Ubuntu.

ZFS hat xattr=sa gesetzt. Damit sind erweiterte Attribute auf dem NAS aktiviert.

Ich habe Samba so konfiguriert, dass es wie vfs fruitfolgt läuft:

ea support = yes
vfs objects = catia fruit streams_xattr
fruit:resource = stream
fruit:metadata = stream

Mit dieser Konfiguration konnte ich kleinere erweiterte Attribute und Ressourcengabeln (weniger als 64 KB) auf die NAS-Freigabe schreiben.

Bei größeren erweiterten Attributen und Ressourcengabeln (über 64 KB) funktionierte es jedoch nicht.

Nach vielen Threads, Manpages und Code bin ich auf dieses kleineNotizin der ZFS-Manpage:

xattr = an | aus | sa

Der Standardwert on aktiviert verzeichnisbasierte erweiterte Attribute. Diese Art von erweiterten Attributen setzt weder der Größe noch der Anzahl der Attribute, die für eine Datei festgelegt werden können, praktische Grenzen. Unter Linux begrenzen die Systemaufrufe getxattr(2) und setxattr(2) die maximale Größe jedoch auf 64 KB.

So cool, dass wir ein ZFS unter Linux „ohne praktische Begrenzung“ haben, nur der Linux-Kernel (was eine praktische Sache ist) begrenzt in der Praxis die Größe erweiterter Attribute.

Ok, also ich kann es weder auf der ZFS-Seite noch auf der Linux-Seite beheben.

Der nächste Schritt warSambaspeziell.

Aufgrund der Größenbeschränkung erweiterter Attribute brauchte ich einen alternativen Speicher für sie. Für Resource Forks gibt es eine Einstellung, um sie in Dateien zu schreiben:

fruit:resource = file

Wenn ich dies aktiviert habe, kann ich große Ressourcenzweige in die Freigabe schreiben.

Fruit bietet jedoch keine Möglichkeit, andere Metadaten (wie erweiterte Attribute) in eine Begleitdatei zu schreiben:

Frucht:Metadaten = [Stream | Netatalk]

  • netatalk (Standard) – Netatalk-kompatibles xattr verwenden
  • stream – leitet den Stream an das nächste Modul im VFS-Stapel weiter

streamfunktioniert nicht, weil streams_xattr versucht, es in ein erweitertes Attribut zu schreiben.

netatalkfunktioniert nicht, weil Fruit versucht, es in ein mit Netatalk kompatibles benanntes erweitertes Attribut zu schreiben.

Warum gibt es keine Option, Metadaten auch in Dateien zu schreiben?

Dies würde Samba unabhängiger vom bereitgestellten zugrunde liegenden Dateisystem machen (selbst wenn es überhaupt keine erweiterten Attribute hätte).

Meine aktuelle Lösung ist:

ea support = no

Dies zwingt macOS-Clients zum ErstellenAppleDouble-Dateienfür ihre Ressourcenzweige und erweiterten Attribute.

Dabei bleiben der Resource Fork und die erweiterten Attribute vom Client erhalten.

Natürlich ist dies nicht mit Windows-Clients kompatibel, was für mich im Moment ok ist, aber es stellt eine erhebliche Einschränkung der Verwendung dieser Box dar.

Auch weil vfs fruites benötigt wird ea support = yes, kann ich es nicht verwenden. Nach dem, was ich über Fruit gelesen habe, bedeutet dies eine Verlangsamung der NAS-Leistung und ich bekomme auch keine einfache Einrichtung von Time Machine hin. Ich weiß nicht einmal über die anderen Konsequenzen Bescheid. Fruit scheint die FULLSYNC-Funktion zu implementieren (siehe fruit:time machine). Von derältere Apple-Dokumentees liest sich, als ob es für ein sauberes Time Machine-Backup bei einem Stromausfall benötigt wird.

Ich habe auch darüber nachgedacht, die Streams in eine Datenbank zu schreiben, aber das macht die Behebung von Problemen viel schwieriger, wenn mit diesem VFS-Objekt etwas schief geht (weitere Informationensehen). Beachten Sie die Anweisung „Verwenden Sie dieses Modul nicht in der Produktion“.

Der Wechsel zu einem Betriebssystem ohne erweiterte Attributbeschränkungen, um Samba zum Laufen zu bringen, ist keine Option … zumindest im Moment.

Gibt es eine andere Möglichkeit, macOS-Ressourcengabeln und erweiterte Attribute auf Linux-Systemen vollständig zu unterstützen, ohne erweiterte Attribute auf der Samba-Freigabe (und damit VFS-Fruit) zu deaktivieren?

verwandte Informationen