Blog

Ralph Böhme sur "La nouvelle Samba VFS

Les enregistrements de la Storage Developer Conference 2021 sont désormais en ligne, notamment ceux de l'équipe SerNet Samba. Ralph Böhme a parlé de "The new Samba VFS" et Stefan Metzmacher a présenté une mise à jour de l'état d'avancement de "Samba Multi-Channel/io_uring".

"Le nouveau Samba VFS" vidéo de Ralph Böhme est sur YouTube : https://youtu.be/D9EZO3gkT9U, sont également disponibles les slides.

Abstrait: À partir de la version 4.14, Samba fournit un code d'infrastructure de base qui permet de baser tous les accès au système de fichiers du serveur sur les handles de fichiers et non sur les chemins. Un exemple de ceci est l'utilisation de fstat() au lieu de stat(), ou SMB_VFS_FSTAT() au lieu de SMB_VFS_STAT() dans le langage Samba. Historiquement, le code du serveur de fichiers de Samba a dû traiter de nombreuses requêtes SMB basées sur le chemin. Alors que le protocole SMB lui-même a été rationalisé pour être purement basé sur les handle à partir de SMB2, de grandes parties du code de l'infrastructure restent en place pour "dégrader" les demandes SMB2 basées sur les handle en accès au système de fichiers basé sur les path. Afin de tirer pleinement parti de la nature du protocole SMB2, nous avons trouvé un moyen simple de convertir ce code d'infrastructure, de sorte qu'il puisse être converti pour utiliser une interface VFS purement basée sur les handle. L'exposé présente ce que nous avons réalisé jusqu'à présent et ce qu'il reste à faire. Son public visé est toute personne travaillant sur le code du serveur de fichiers Samba et toute personne travaillant sur les modules VFS Samba.

Le"Samba Multi-Channel/io_uring Status Update" de Stefan Metzmacher est également sur YouTube: https://youtu.be/fnA4imgBsUo, les diapositives sont disponibles.

Abstrait: Samba avait un support expérimental pour le multicanal pendant un certain temps. SMB3 a quelques concepts pour rejouer les demandes en toute sécurité. Nous les implémentons maintenant complètement (et dans certaines parties mieux qu'un serveur Windows). L'exposé expliquera comment nous avons implémenté les fonctionnalités manquantes. Avec l'augmentation du débit du réseau, nous atteindrons un point où les copies de données seront trop importantes pour un seul cœur de processeur. Cette présentation donne un aperçu de la façon dont l'infrastructure io_uring du noyau Linux pourrait être utilisée afin d'éviter la copie de données, ainsi que la répartition de la charge entre les cœurs de processeurs. Un prototype pour cela existe et montre d'excellents résultats.


SAMBA+ 4.15.2, 4.14.10 et 4.13.14 viennent d'être publiés par SerNet. Il s'agit de mises à jour de sécurité importantes. Veuillez mettre à jour les systèmes concernés dès que possible. Les paquets pour les différentes plateformes SUSE et Red Hat ainsi que pour Debian GNU/Linux, Ubuntu et AIX sont disponibles dès maintenant.

Les paquets corrigent les problèmes suivants:

  • 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.

NOTES IMPORTANTES:

Cette version introduit quelques ajustements comportementaux qui peuvent affecter les systèmes existants. Des modifications supplémentaires de la configuration peuvent être nécessaires.

Un nouveau paramètre smb.conf "min domain uid" (valeur par défaut 1000) a été ajouté. Par défaut, aucun uid UNIX inférieur à cette valeur n'est accepté. Veuillez vérifier la configuration de votre mappage d'ID.

Le remplacement de 'DOMAIN\user' par 'user' a également été supprimé car il est dangereux et inutile lors de l'utilisation de nss_winbind (même si 'winbind use default domain = yes' est défini).

Cependant, il existe des configurations qui ne sont connectées qu'à un domaine Active Directory pour l'authentification, mais l'autorisation est gérée sans nss_winbind en faisant correspondre le compte du domaine à un utilisateur local fourni par nss_file, nss_ldap ou quelque chose de similaire. NOTE : Ces configurations ne fonctionnent plus sans mappage explicite des utilisateurs!

Pour ces configurations, les administrateurs doivent utiliser l'option 'username map' ou 'username map script' pour faire correspondre explicitement les utilisateurs du domaine aux utilisateurs locaux, par exemple user = DOMAIN\user.

Pour plus de détails sur 'username map' ou 'username map script', voir 'man 5 smb.conf'. Notez également que dans l'exemple ci-dessus, '\' fait référence à la valeur par défaut de l'option 'winbind separator'.

Il y a une régression avec l'option smb.conf 'allow trusted domains = no'. Il empêche le service winbind de démarrer. Nous fournirons un correctif dès que possible.

De plus, les paquets 4.15.2 corrigent les problèmes suivants:

  • 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.

Les paquets SAMBA+ et toutes les versions ultérieures sont disponibles sous forme d'abonnement logiciel. Ils peuvent être achetés sur la boutique SAMBA+, les informations détaillées et les prix sont indiqués sur https://shop.samba.plus. Les abonnements sont gérés sur notre plateforme OPOSSO (https://oposso.samba.plus). Les utilisateurs peuvent y activer leurs abonnements et gérer les identifiants d'accès. Les nouveaux paquets SAMBA+ sont inclus dans les abonnements existants.


ksmbd vs. Samba

"ksmbd" est un nouveau module du noyau Linux qui implémente un serveur SMB. Il vise à être un serveur de fichiers performant, à faible encombrement, couvrant de nombreux cas d'utilisation de base, le fonctionnement sur des appareils plus petits avec des ressources limitées étant le plus apparent : OpenWRT, la distribution Linux pour les appareils embarqués, a adopté ksmbd il y a déjà 18 mois, alors que ksmbd était encore en cours de développement.

ksmbd a frappé le public en novembre 2021 dans le cadre de la prochaine version 5.15 du noyau Linux. Il n'est pas destiné à remplacer le serveur de fichiers Samba existant "smbd", mais plutôt à être une extension et s'intégrera à Samba à l'avenir. Le serveur de fichiers de Samba "smbd" a une portée beaucoup plus large et prend en charge divers cas d'utilisation et fonctionnalités que ksmbd ne prend pas en charge:

  • Exécution en tant que membre du domaine Active Directory
  • Scale-out clustering
  • Optimiser pour des systèmes de fichiers spécifiques comme GlusterFS ou Ceph via des modules VFS dédiés
  • Prise en charge de Shadow Copy

Bien qu'il s'agisse d'un serveur SMB3 majoritairement complet en termes de fonctionnalités, ne manquant que certaines fonctionnalités avancées comme les Handles durables, les baux de répertoire et le multicanal, ksmbd ne peut actuellement faire usage que des utilisateurs et des mots de passe locaux, ce qui exclut toute utilisation dans les environnements d'entreprise où l'on utilise généralement Active Directory ou des sources d'identité similaires.

ksmbd revendique des améliorations de performances sur un large éventail de benchmarks: les graphiques de cette page montrent un doublement des performances sur certains tests. Il y avait aussi l'idée qu'un serveur in-kernel est probablement un endroit plus facile pour prendre en charge SMB Direct, qui utilise RDMA pour transférer des données entre les systèmes.

Certes, ces chiffres sont impressionnants, mais en même temps, les récentes améliorations des performances IO de Samba remettent cela en perspective : en exploitant la nouvelle API Linux "io_uring", Samba est capable de fournir un débit environ 10 fois supérieur à celui de ksmbd.

Le temps nous dira s'il est préférable de résider dans l'espace noyau comme ksmbd ou dans l'espace utilisateur comme Samba afin d'extraire le dernier morceau de performance du matériel disponible.

Quelle est la maturité de ksmbd ? Étant donné que son a été principalement développé par un ingénieur de Samsung, il est probable qu'il soit utilisé dans les produits Samsung aujourd'hui. Cependant, la version de novembre est une version .0 avec toutes les mises en garde qui l'accompagnent. Certains des détails, y compris divers problèmes de sécurité qui ont été trouvés et corrigés assez tardivement, sont décrits dans un article sur LWN.

Tout compte fait, ksmbd est un travail impressionnant et afin de faciliter et d'encourager la collaboration, le principal développeur de ksmbd, Namjae Jeon, a été invité à rejoindre l'équipe l'équipe internationale Samba. ksmbd ajoute déjà des capacités intéressantes au mélange et l'équipe SerNet de Samba est impatiente de travailler avec et sur ksmbd!


Les versions 4.13.13 de SAMBA+ viennent d'être publiées par SerNet. Les paquets pour les différentes plateformes SUSE et Red Hat ainsi que pour Debian GNU/Linux, Ubuntu et AIX sont disponibles dès maintenant.

Les notes de mise à jour sont disponibles ici:

Les paquets SAMBA+ et toutes les versions ultérieures sont disponibles sous forme d'abonnement logiciel. Ils peuvent être achetés sur la boutique SAMBA+, les informations détaillées et les prix sont indiqués sur https://shop.samba.plus. Les abonnements sont gérés sur notre plateforme OPOSSO (https://oposso.samba.plus). Les utilisateurs peuvent y activer leurs abonnements et gérer les identifiants d'accès. Les nouveaux paquets SAMBA+ sont inclus dans les abonnements existants.


Jalons techniques et développements futurs

Cet article en deux parties présente les forces et les avantages qui rendent Samba unique. Alors que La première partie a jeté un coup d'œil à certaines des questions organisationnelles, techniques et conceptuelles souvent abordées, cette deuxième partie aborde les jalons techniques et les avancées émergentes. Nous soulignons les contributions importantes à Samba sur lesquelles les membres de l'équipe SerNet Samba, Volker Lendecke, Stefan Metzmacher et Ralph Böhme, travaillent encore.

Robuste et évolutive - support multicanal pour une performance optimale
Samba est parfois critiquée pour ses "faibles connexions simultanées / faibles accès simultanés". En raison du modèle multiprocessus, qui est plus robuste qu'un modèle de serveur monoprocessus multithread, Samba a des besoins en RAM plus élevés que d'autres solutions éventuelles. Ceci est plus pertinent pour le marché des routeurs SOHO embarqués que pour les solutions de stockage d'entreprise, et pour aider les premiers, la prochaine version de Samba sera livrée avec un serveur RPC réécrit par Volker Lendecke qui se traduira par des besoins en mémoire beaucoup plus faibles.

La prise en charge du multicanal SMB3 dans Samba existe depuis la version 4.15, publiée en septembre 2021, et l'équipe SerNet Samba peut fournir des rétro portages stables pour les versions 4.12, 4.13 et 4.14, car nous les intégrons (et les utilisons) déjà dans SAMBA+ 4.14 et dans les paquets personnalisés.

Amélioration des performances IO
Les performances d'E/S de Samba sont limitées par les fréquentes copies de tampons de données dans le noyau pour répondre aux demandes d'E/S de l'espace utilisateur Samba, ce qui entraîne une utilisation élevée du CPU et une limite de performance liée au CPU. Il s'agit d'une limitation architecturale profondément ancrée dans la conception d'UNIX. Il y a deux ans, une API moderne appelée "io_uring" a été ajoutée à Linux, qui permet aux applications de l'espace utilisateur telles que Samba d'obtenir une IO zéro-copie-zéro-appel-système pour l'ensemble du chemin d'IO du disque au réseau.

Récemment, des recherches ont été financées pour améliorer les performances de Samba et un prototype de Samba a été développé en utilisant "io_uring". Nous avons pu améliorer considérablement les performances d'E/S en passant de 4 Go/s sur un matériel donné à 10 Go/s, soit la vitesse de ligne de l'adaptateur 100 Gbps, avec une charge CPU considérablement réduite de seulement 25 %. D'autres tests avec l'interface de bouclage ont permis d'atteindre un débit maximal de 30 Go/s, le goulot d'étranglement étant les clients utilisés dans le test (smbclient) et non le serveur.

Pour plus de détails, voir la discussion sur la liste Samba ou la présentation de la DDC 2021 "Samba Multi-Channel/io_uring Status Update" par Stefan Metzmacher.

Il suffirait de quelques semaines de travail pour intégrer le prototype dans Samba mainline. Les entreprises intéressées par cette fonctionnalité doivent nous contacter pour éventuellement rejoindre la liste des entreprises soutenant le développement de Samba!

Samba prend en charge les fonctionnalités d'entreprise
En ce qui concerne la mise en grappe, Samba vous offre une grappe SMB "prête pour l'entreprise". Il prend en charge la mise en grappe active/active à grande échelle et est utilisé depuis de nombreuses années avec les systèmes de fichiers d'entreprise en grappe leaders du secteur, tels que GPFS. Samba prévoit de prendre en charge le "SMB Transparent Failover" et Ralph Böhme a donné une conférence à la SNIA SDC 2018 sur Persistent Handles in Samba. Là encore, les entreprises intéressées par cette fonctionnalité doivent nous contacter pour devenir un sponsor du développement de Samba!

ksmbd
À partir du noyau Linux 5.15, Linux fournira un serveur SMB intégré au noyau appelé "ksmbd". ksmbd et Samba prévoient de collaborer étroitement à l'avenir. Le principal développeur de ksmbd a récemment rejoint l'équipe internationale de Samba. Les deux projets travailleront main dans la main pour combiner le moteur SMB du noyau de ksmbd avec les démons et outils de l'espace utilisateur de Samba. Pour une brève introduction, consultez la présentation de sambaXP 2019

Vous avez encore des questions ? Ou bien vous souhaitez nous parler de l'utilisation de Samba / SAMBA+? Alors n'hésitez pas à nous contacter.


Note

Attention! Les textes ont été automatiquement traduits de l'anglais. Si vous constatez des inexactitudes, veuillez nous contacter par e-mail à l'adresse kontakt@remove-this.sernet.de.

Newsletter

La bulletin d'information Samba de SerNet vous informe sur tous les développements et événements importants avec un accent particulier sur les nouveaux paquets.

+ s'abonner à la Bulletins

RSS Feed

Ne manquez plus les actualités de SAMBA+ ? Lisez les dernières nouvelles dans le lecteur de flux RSS de votre choix.

+ subscribe to RSS feed

SAMBA+ Shop

Acheter et gérer les abonnements aux logiciels. Les abonnements SAMBA+ sont disponibles pour un, deux et trois ans dans la SAMBA+ shop.

+ visiter la shop

Deutsch English Français