Blog

Ralph Böhme zu "The new Samba VFS"

Die Aufzeichnungen der Storage Developer Conference 2021 sind nun online, darunter auch die des SerNet Samba Teams. Ralph Böhme sprach über "Das neue Samba VFS" und Stefan Metzmacher präsentierte ein Status Update zu "Samba Multi-Channel/io_uring".

Das Video zu "Das neue Samba VFS" von Ralph Böhme ist auf YouTube zu sehen: https://youtu.be/D9EZO3gkT9U, ebenfalls verfügbar sind die Folien.

Abstract: Beginnend mit Version 4.14 bietet Samba einen Core Infrastructure Code, der es erlaubt, alle Zugriffe auf das Dateisystem des Servers auf Filehandles und nicht auf Pfaden zu basieren. Ein Beispiel dafür ist die Verwendung von fstat() anstelle von stat(), oder SMB_VFS_FSTAT() anstelle von SMB_VFS_STAT() in der Samba-Sprache. In der Vergangenheit hatte der Fileserver-Code von Samba viel mit der Verarbeitung von pfadbasierten SMB-Anfragen zu tun. Während das SMB-Protokoll selbst gestrafft wurde, um ab SMB2 rein handle-basiert zu sein, blieben große Teile des Infrastrukturcodes bestehen, die handle-basierte SMB2-Anfragen zu pfadbasiertem Dateisystemzugriff "degradieren". Um die handle-basierte Natur des SMB2-Protokolls voll auszunutzen, haben wir einen einfachen Weg gefunden, diesen Infrastrukturcode zu konvertieren, so dass er in eine rein handle-basierte VFS-Schnittstelle umgewandelt werden kann. Der Vortrag zeigt, was wir bisher erreicht haben und was noch zu tun ist. Er richtet sich an alle, die am Samba Fileserver Code und an den Samba VFS Modulen arbeiten.

Das"Samba Multi-Channel/io_uring Status Update" von Stefan Metzmacher gibt es auch auf YouTube: https://youtu.be/fnA4imgBsUo, Slides sind verfügbar.

Abstract: Samba hatte bereits eine ganze Weile experimentelle Unterstützung für Multi-Channel. SMB3 hat ein paar Konzepte, um Anfragen sicher wiederzugeben. Wir implementieren sie nun vollständig (und teilweise besser als ein Windows Server). Der Vortrag erklärt, wie wir die fehlenden Funktionen implementiert haben. Mit dem zunehmenden Netzwerkdurchsatz werden wir einen Punkt erreichen, an dem eine Datenkopie für einen einzelnen CPU-Kern zu viel ist, um sie zu verarbeiten. Dieser Vortrag gibt einen Überblick darüber, wie die io_uring-Infrastruktur des Linux-Kernels genutzt werden kann, um das Kopieren von Daten zu vermeiden und die Last auf die CPU-Kerne zu verteilen. Ein Prototyp hierfür existiert und zeigt hervorragende Ergebnisse.


SAMBA+ 4.15.2, 4.14.10 und 4.13.14 wurden soeben von SerNet veröffentlicht. Dies sind wichtige Sicherheits-Updates, bitte aktualisieren Sie die betroffenen Systeme so bald wie möglich. Pakete für verschiedene SUSE und Red Hat Plattformen sowie für Debian GNU/Linux, Ubuntu und AIX sind ab sofort verfügbar.

Die Pakete beheben die folgenden Probleme:

  • CVE-2020-25717: A user in an AD Domain could become root on domain members.
  • CVE-2020-25718: Samba AD DC did not correctly sandbox Kerberos tickets issued by an RODC.
  • CVE-2020-25719: Samba AD DC did not always rely on the SID and PAC in Kerberos tickets.
  • CVE-2020-25721: Kerberos acceptors need easy access to stable AD identifiers (eg objectSid).
  • CVE-2020-25722: Samba AD DC did not do sufficient access and conformance checking of data stored. 
  • CVE-2016-2124: SMB1 client connections can be downgraded to plaintext authentication.
  • CVE-2021-3738: Use after free in Samba AD DC RPC server.
  • CVE-2021-23192: Subsequent DCE/RPC fragment injection vulnerability.

WICHTIGE HINWEISE:

Diese Version beinhaltet einige Anpassungen im Verhalten, die bestehende Systeme beeinträchtigen können. Es könnten zusätzliche Konfigurationsänderungen erforderlich sein.

Es wurde ein neuer smb.conf-Parameter "min domain uid" (Standardwert 1000) hinzugefügt. Standardmäßig wird keine UNIX uid unterhalb dieses Wertes akzeptiert. Bitte überprüfen Sie Ihre ID-Mapping-Konfiguration.

Der Fallback von 'DOMAIN\user' auf 'user' wurde ebenfalls entfernt, da er gefährlich ist und nicht benötigt wird, wenn nss_winbind verwendet wird (selbst wenn 'winbind use default domain = yes' gesetzt ist).

Es gibt jedoch Setups, die nur zur Authentifizierung mit einer Active Directory-Domäne verbunden sind, aber die Autorisierung wird ohne nss_winbind gehandhabt, indem der Domain Account einem lokalen Benutzer zugeordnet wird, der von nss_file, nss_ldap oder etwas Ähnlichem bereitgestellt wird. HINWEIS: Diese Setups funktionieren nicht mehr ohne explizites Mapping der Benutzer!

Für diese Setups müssen Administratoren die Option 'username map' oder 'username map script' verwenden, um Domänenbenutzer explizit lokalen Benutzern zuzuordnen, z.B. user = DOMAIN\user

Weitere Einzelheiten zu 'username map' oder 'username map script' finden Sie in 'man 5 smb.conf'. Beachten Sie auch, dass sich im obigen Beispiel '\' auf den Standardwert der Option 'winbind separator' bezieht.

Es gibt eine Regression mit der Option "allow trusted domains = no" smb.conf. Sie verhindert, dass der winbind-Dienst gestartet wird. Wir werden so bald wie möglich eine Korrektur bereitstellen.

Außerdem beheben die 4.15.2-Pakete die folgenden Probleme:

  • Bug 14890: Crash in vfs_fruit asking for fsp_get_io_fd() for an XATTR call. 
  • Bug 14846: Fix -k legacy option for client tools like smbclient, rpcclient, net, etc. 
  • Bug 14882: smbXsrv_client_global record validation leads to crash if existing record points at non-existing process.

SAMBA+ Pakete und alle späteren Versionen sind als Software-Abonnement erhältlich. Sie können im SAMBA+ Shop erworben werden, detaillierte Informationen und Preise sind unter https://shop.samba.plus aufgeführt. Die Abonnements werden auf unserer Plattform OPOSSO (https://oposso.samba.plus) verwaltet. Hier können Nutzerinnen und Nutzer ihre Abonnements aktivieren und die Zugangsdaten verwalten. Die neuen SAMBA+-Pakete sind in den bestehenden Abonnements enthalten.


ksmbd vs. Samba

"ksmbd" ist ein neues Linux-Kernelmodul, das einen SMB-Server implementiert. Es zielt darauf ab, ein leistungsfähiger Dateiserver mit geringem Overhead und geringem Platzbedarf zu sein, der viele grundlegende Anwendungsfälle abdeckt. Von diesen ist der Betrieb auf kleineren Geräten mit begrenzten Ressourcen der offensichtlichste: OpenWRT, die Linux-Distribution für eingebettete Geräte, hat ksmbd bereits vor 18 Monaten übernommen, als ksmbd noch in der Entwicklung war.

ksmbd wird ab November 2021 als Teil der nächsten Linux-Kernel-Version 5.15 der Öffentlichkeit zugänglich gemacht. Er soll den bestehenden Samba-Fileserver "smbd" nicht ersetzen, sondern eher eine Erweiterung sein und sich in Zukunft in Samba integrieren. Der Samba-Fileserver smbd ist viel breiter angelegt und unterstützt verschiedene Anwendungsfälle und Funktionen, die ksmbd nicht bedient:

  • Ausführung als Mitglied einer Active-Directory-Domäne
  • Scale-out-Clustering
  • Optimierung für bestimmte Dateisysteme wie GlusterFS oder Ceph über dedizierte VFS-Module
  • Unterstützung von Shadow Copy

Auch wenn es sich bei ksmbd um einen SMB3-Server handelt, dem nur einige fortgeschrittene Funktionen wie Durable Handles, Directory Leases und Multi-Channel fehlen, kann er derzeit nur lokale Benutzer und Passwörter verwenden. Das schließt den Einsatz in Unternehmensumgebungen aus, in denen normalerweise Active Directory oder ähnliche ID-Ressourcen verwendet werden.

ksmbd verspricht Leistungsverbesserungen bei einer Vielzahl von Benchmarks: Die Diagramme auf dieser Seite zeigen eine Verdoppelung der Leistung bei einigen Tests. Es wird außerdem darauf verwiesen, dass ein In-Kernel-Server wahrscheinlich einfacher SMB Direct unterstützen kann, das RDMA für die Datenübertragung zwischen Systemen verwendet.

Natürlich sind diese Zahlen beeindruckend, aber gleichzeitig relativieren sich die jüngsten Verbesserungen der IO-Leistung von Samba: Durch die Nutzung der neuen "io_uring"-Linux-API ist Samba in der Lage, einen etwa 10-fachen Durchsatz im Vergleich zu ksmbd zu bieten.

Die Zeit wird zeigen, ob es besser ist, im Kernel-Space wie ksmbd oder im User-Space wie Samba zu operieren, um das letzte Quäntchen Leistung aus der verfügbaren Hardware herauszuquetschen.

Wie ausgereift ist ksmbd? Da es hauptsächlich von einem Samsung-Ingenieur entwickelt wurde, ist es wahrscheinlich, dass es heute in Samsung-Produkten verwendet wird. Bei der Novemberversion handelt es sich jedoch um eine .0-Version mit allen damit verbundenen Vorbehalten. Einige der Details, einschließlich verschiedener Sicherheitsprobleme, die erst recht spät gefunden und behoben wurden, sind in einem Artikel bei LWN beschrieben.

Alles in allem ist ksmbd eine beeindruckende Arbeit, und um die Zusammenarbeit zu erleichtern und zu fördern, wurde der Hauptentwickler von ksmbd, Namjae Jeon, eingeladen, dem internationalen Samba Team beizutreten. ksmbd fügt dem Mix bereits interessante Fähigkeiten hinzu, und das SerNet Samba-Team freut sich auf die Arbeit mit und an ksmbd!


SAMBA+ 4.13.13 ist soeben von SerNet veröffentlicht worden. Pakete für verschiedene SUSE und Red Hat Plattformen sowie für Debian GNU/Linux, Ubuntu und AIX sind ab sofort verfügbar.

Die Release Notes sind hier verfügbar:

Diese Version behebt außerdem ein Sicherheitsproblem im Zusammenhang mit der Kerberos-Authentifizierung. Wie üblich empfehlen wir, auf die neueste Bugfix-Version des Hauptversionszweigs zu aktualisieren, den Sie verwenden.

SAMBA+ Pakete und alle späteren Versionen sind als Software-Abonnement erhältlich. Sie können im SAMBA+ Shop erworben werden, detaillierte Informationen und Preise sind unter https://shop.samba.plus aufgeführt. Die Abonnements werden auf unserer Plattform OPOSSO (https://oposso.samba.plus) verwaltet. Hier können Nutzerinnen und Nutzer ihre Abonnements aktivieren und die Zugangsdaten verwalten. Die neuen SAMBA+-Pakete sind in den bestehenden Abonnements enthalten.


Technische Meilensteine und künftige Entwicklungen

Dieser zweiteilige Artikel stellt die Stärken und Vorteile vor, die Samba einzigartig machen. Während Teil eins einen Blick auf einige der oft diskutierten organisatorischen, technischen und konzeptionellen Fragen geworfen hat, werden in diesem zweiten Teil technische Meilensteine und sich abzeichnende Fortschritte erörtert. Wir heben dabei wichtige Samba-Beiträge hervor werden, an denen die SerNet-Samba-Team-Mitglieder Volker Lendecke, Stefan Metzmacher und Ralph Böhme noch arbeiten.

Robust und skalierbar - Multichannel Support für optimale Performance
Manchmal wird Samba für "geringe gleichzeitige Verbindungen / geringe gleichzeitige Zugriffe" kritisiert. Aufgrund des Multiprozess-Modells, das robuster ist als ein Single-Prozess-Multithreading-Server-Modell, hat Samba höhere RAM-Anforderungen als möglicherweise andere Lösungen. Dies ist für den eingebetteten SOHO-Router-Markt relevanter als für Enterprise-Storage-Lösungen, und um ersteren zu helfen, wird die nächste Samba-Version mit einem von Volker Lendecke neu geschriebenen RPC-Server ausgeliefert, der zu einem wesentlich geringeren Speicherbedarf führt.

SMB3 Multichannel-Unterstützung in Samba gibt es seit der im September 2021 erschienenen Version 4.15. Das SerNet-Samba-Team kann stabile Backports für 4.12, 4.13 und 4.14 zur Verfügung stellen, da wir sie bereits in SAMBA+ 4.14 und in benutzerdefinierten Paketen integrieren (und verwenden).

Verbesserung der IO-Leistung
Die IO-Leistung von Samba wird durch die häufigen Datenpufferkopien im Kernel begrenzt, um die IO-Anforderungen des Samba-Benutzerraums zu bedienen, was zu einer hohen CPU-Auslastung und einer CPU-gebundenen Leistungsgrenze führt. Dies ist eine architektonische Einschränkung, die tief im UNIX-Design verwurzelt ist. Vor zwei Jahren wurde eine moderne Linux-API namens "io_uring" zu Linux hinzugefügt, die es User-Space-Anwendungen wie Samba ermöglicht, Zero-Copy-Zero-Syscall-IO für den gesamten IO-Pfad von der Festplatte bis zum Netzwerk zu erreichen.

Kürzlich wurden Forschungsarbeiten zur Verbesserung der Samba-Leistung gefördert, und es wurde ein Samba-Prototyp entwickelt, der "io_uring" nutzt. Wir waren in der Lage, die IO-Leistung drastisch zu verbessern, und zwar von 4 GByte/s auf einer gegebenen Hardware auf 10 GByte/s, der Leitungsgeschwindigkeit des 100-GBit/s-Adapters, bei einer deutlich reduzierten CPU-Last von nur 25 %. Bei weiteren Tests mit dem Loopback-Interface wurde ein maximaler Durchsatz von 30 GB/s erreicht, wobei der Engpass bei den im Test verwendeten Clients (smbclient) und nicht beim Server lag.

Für weitere Details siehe die Diskussion auf der Samba-Liste oder die SDC 2021 Präsentation "Samba Multi-Channel/io_uring Status Update" von Stefan Metzmacher.

Es würde nur ein paar Wochen Arbeit erfordern, den Prototyp in das Mainline-Samba zu integrieren. Firmen, die an dieser Funktion interessiert sind, sollten Kontakt mit uns aufnehmen, um sich eventuell in die Liste der Firmen einzureihen, die die Samba-Entwicklung unterstützen!

Samba unterstützt Enterprise-Funktionen
Wenn es um Clustering geht, erhalten Sie von Samba einen "unternehmensfähigen" SMB-Cluster. Es unterstützt Scale-out Active/Active Clustering und wird seit vielen Jahren zusammen mit branchenführenden geclusterten Enterprise-Dateisystemen wie GPFS eingesetzt. Samba plant die Unterstützung von "SMB Transparent Failover" und Ralph Böhme hielt auf der SNIA SDC 2018 einen Vortrag über Persistente Handles in Samba. Auch hier gilt: Unternehmen, die an dieser Funktion interessiert sind, sollten Kontakt mit uns aufnehmen, um Sponsor der Samba-Entwicklung zu werden!

ksmbd
Ab Linux-Kernel 5.15 wird Linux einen In-Kernel-SMB-Server namens "ksmbd" ausliefern. ksmbd und Samba planen, in Zukunft eng zusammenzuarbeiten. Der Hauptentwickler von ksmbd ist seit kurzem auch Mitglied des internationalen Samba-Teams. Beide Projekte werden Hand in Hand arbeiten, um die In-Kernel-SMB-Engine von ksmbd mit den User-Space-Daemons und -Tools von Samba zu kombinieren. Eine kurze Einführung finden Sie in der Präsentation von der sambaXP 2019

Haben Sie noch Fragen? Oder möchten Sie mit uns über den Einsatz von Samba / SAMBA+ sprechen? Dann zögern Sie nicht, Kontakt mit uns aufzunehmen.


Newsletter

Der Samba-Newsletter von SerNet informiert Sie über alle wichtigen Entwicklungen und Ereignisse. Der Schwerpunkt liegt auf neuen Paketen.

+ Newsletter abonnieren

RSS Feed

Keine SAMBA+ Neuigkeiten mehr verpassen? Lesen Sie die akuellsten News in ihrem Feed-Reader der Wahl.

+ RSS-Feed abonnieren

SAMBA+ Shop

Kaufen und verwalten Sie Software-Subskriptionen. Abonnements für SAMBA+ sind für ein, zwei und drei Jahre im SAMBA+ Shop erhältlich.

+ Zum Shop

Deutsch English Français