Samba sous Debian 10 = souci de performance suite mise à jour de ma Debian 8

Tags: #<Tag:0x00007f50a3543648>

Joli charabia, qui montre à quel point vous n’êtes pas sûr de vous, et surtout à quel point vous savez dans votre for intérieur que vous ne pourrez pas vous empêcher de lancer des commandes à la hussarde qui pourraient mettre en péril la cohérence d’un système de fichiers tel que vu par un utilisateur. Un montage en lecture seule pour une arborescence d’un partage existant me semble suffisant pour tester les droits d’accès et la copie d’un ou deux fichiers.

Le nom en jette. Il me semble un peu en contradiction avec les directives suivantes qui fleurent plutôt le XXième siècle

D’autre part ne pas lancer des commandes depuis le compte root si ce n’est pas nécessaire.

Pourquoi privez-vous l’utilisateur de sa maison ? Si vous simulez un utilisateur existant, vous ne simulez pas un SDF !

Deuxième erreur, si vous utilisez le montage automatique, par définition les paramètres du montage sont dans

Et nous voyons immédiatement que les paramètres fondamentaux d’identification uidet gid sont des numéros associés à l’utilisateur qui lance le montage et non pas les valeurs 0 (super utilisateur) qui ont été obtenues

Et lancer mount en étant root pour une simple vérification de la réussite d’un montage me paraît pour le moins risqué.

Utilisation inutile et contre-productive (cache les erreurs liées aux permissions) du compte root
Détournement de la sortie de la commande vers le néant.
Remplacer pas un truc du genre
time find /tmp/ftp | wc
ou
ls -lR /tmp/ftp | less
pour une vérification rapide du bon fonctionnement et time … | wc pour le chronométrage approximatif.

Sachant que vous testez depuis un compte sans domicile fixe, posez vous la question de l’utilité de ce test.

Je ne me rappelle plus comment s’appelle l’outil pour visualiser le contenu des tdbsam, essayez de comparer la vraie base et celle de votre machine de test.

Je ne sais pas si dans le cas cifs cela a une importance, mais admettez que c’est « confusing », et un compte Linux desktop par défaut (appartenant à des groupes Linux qui n’ont pas d’équivalent du côté windows c’est loin d’être génial.

Trois quarts de minutes pour lister des fichiers qui totalisent 45 milliards d’octets ce n’est pas si mal, d’autant plus que vous remarquerez que la source a du être rectifiée (paramétrage autofs) et que vous utilisez un protocole où la sémantique des systèmes de fichiers POSIX ne peut qu’être émulée.

Vous avez bien du courage.
Je ne connais pas ces versions. Il y a bien un processus nommé nmbd pour le résolution de noms ?
Passer plus de temps sur la conception de l’architecture réseau ne serait pas, à mon avis du temps perdu., loin de là.
Je persiste à penser que si on a un système de fichiers distribué à la Microsoft avec lequel x utilisateurs interagissent simultanément (création, modification, suppression de fichiers et répertoires) il est indispensable d’avoir une base centrale des utilisateurs et groupes. Active Directory fournit tout cela (et Kerberos, et identification + autorisation + DNS + …). Ce n’est pas donné ni évident à gérer. Il y en a qui ont essayé, ils ont eu des problèmes.
Et, à mon humble avis, un SAMBA avec

vaut mieux oublier.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

En 2009 nous avons réduit notre endettement qui n’est plus que de 1,5 fois le cash flow
Franck Piedelièvre le 29 janvier 2010. Les voeux du Président.

Bonjour,

A partir du moment que je teste, après compilation, d’autres versions de samba etc… je vais pas m’amuser à faire çà en production et que je teste du tuning de paramètres / activation / désactivation du debug dans samba… C’est sur vous avez raison on va faire çà en prod.
Je vous comprends décidément pas.

Désolé pour vous on a stoppé notre dernier NT4 fin d’année dernière. Tout le monde ne travaille pas sur des machines que l’on peut arrêter 2 mins.

Entièrement d’accord avec vous

Là je vous suis pas. Il ne sert qu’à faire le lien entre user SAMBA et user unix pour les accès FS.
Pourquoi je vais lui créer un dossier user ?
Depuis Debian 8, si ya pas de répertoire « home user » les perfs samba tombent ?

je rappelle la procédure appliquée :

je teste/simule mon montage ftp depuis un client qui, au lieu de se trouver sur une machine x ou y sur le même réseau ou un autre réseau, se trouve en local.

On est bien sur du client/serveur donc on peut bien tester depuis l’IP 127.0.0.1 notre serveur ?

J’ai donc bien :

root@dfs-spare:~# smbstatus

Samba version 4.9.5-Debian
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
998     userwindows  users        127.0.0.1 (ipv4:127.0.0.1:54422)          SMB3_02           -                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing     
---------------------------------------------------------------------------------------------
IPC$         998     127.0.0.1     mar. sept. 22 15:29:13 2020 CEST -            -           
ftp          998     127.0.0.1     mar. sept. 22 15:29:13 2020 CEST -            -           

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
998          1000       DENY_NONE  0x80        RDONLY     NONE             /mnt/ftp   .   Tue Sep 22 15:29:12 2020

root@dfs-spare:~# 
root@dfs-spare:~# mount.cifs //127.0.0.1/ftp /tmp/ftp -o user=userwindows,uid=1000,gid=1000
Password for userwindows@//127.0.0.1/ftp:  *******
root@dfs-spare:~# 
root@dfs-spare:~# mount
//192.168.1.124/D/ftp on /mnt/ftp type cifs (rw,relatime,vers=2.1,cache=strict,username=userwindows,uid=1000,forceuid,gid=1000,forcegid,addr=192.168.1.124,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
//127.0.0.1/ftp on /tmp/ftp type cifs (rw,relatime,vers=default,cache=strict,username=userwindows,uid=1000,forceuid,gid=1000,forcegid,addr=127.0.0.1,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
root@dfs-spare:~# 
root@dfs-spare:~# time find /tmp/ftp/|wc
   8291    8768  739840

real	0m48,006s
user	0m0,017s
sys		0m0,416s
root@dfs-spare:~# 
root@dfs-spare:~# time find /tmp/ftp/|wc -l
8300

real	0m32,062s
user	0m0,065s
sys		0m0,323s
root@dfs-spare:~# 

et si je compare avec ce même test sur le montage Windows :

root@dfs-spare:~# time find /mnt/ftp|wc -l
8300

real	0m3,553s
user	0m0,050s
sys		0m0,227s
root@dfs-spare:~# 

Sur ce sujet je déprime je n’arrive vraiment pas à comprendre pourquoi j’ai ce type de résultat depuis ma bascule sur Debian 10…
Hormis un rollback sur Debian 8 (ce que je ne souhaite pas) je n’ai pas de piste pour le moment

Update :

Pour appuyer mes propos : (compiler sur ma machine de prod c’est sur :slight_smile: )

root@dfs-spare:~# /usr/local/samba/sbin/smbd -V
Version 4.4.16
root@dfs-spare:~# 
root@dfs-spare:~# /usr/local/samba/sbin/smbd -i -s /etc/samba/smb.conf -d2
smbd version 4.4.16 started.
root@dfs-spare:~# 

Même test que plus haut depuis le client en local car client/serveur :

root@dfs-spare:~# time find /tmp/ftp/|wc 
   8279    8756  739283

real	0m6,639s
user	0m0,019s
sys		0m0,351s
root@dfs-spare:~# 

Comment çà se fait que l’on passe de 32 secondes (voir ci-dessus) à 6 secondes en passant juste de Samba 4.9.5-Debian à Samba 4.4.16 avec exactement la même conf (smb.conf)

Ya bien un souci quelquepart depuis le passage de Debian 8 vers les nouvelles version de debian
Des nouveaux paramètres qui m’échappent ???

Cordialement,
Guedz

Tout simplement parce-que un système de fichiers ce n’est pas seulement la correspondance entre un nom (de fichier ou de répertoire) et un certain nombre d’octets, c’est aussi un ensemble de méta-données comme le propriétaire, les permissions d’accès, des dates, …
Il me semble qu’en disant

c’était vraiment clair. Bon ça en jette beaucoup moins que de dire « la prod », je fais du tuning en changeant tous les paramètres d’un coup au petit bonheur la chance, je n’hésite pas à recompiler …
De toute évidence, cette notion élémentaire vous ne voulez pas en entendre parler car cela implique de réfléchir, de concevoir une architecture réseau, de définir les rôles des personnes et des systèmes, … Et ça, c’est du boulot, et c’est autrement plus important que de se lancer dans des compilations de logiciel (alors que des bénévoles le de distribution libre comme Debian le font très bien ).
Ici, on parle de système de fichiers en réseau. Ce n’est pas pour rien que NFS veut dire « Network File System ».
On a donc une architecture client serveur, où une machine exporte un répertoire (sur un disque local) pour pouvoir être utilisé par des utilisateurs connectés sur des machines clientes.
La moindre des choses, c’est que les différentes machines soient bien identifiées, que n’importe qui ne puisse pas connecter n’importe quoi sur le réseau local, …
J’ai bien tenté de faire certaines allusions

(noms des machines), mais en vain.

et quelques lignes plus loin

Vous êtes tellement obnubilé par le temps que cela prend, que vous avez oublié de lancer la commande sans être root et que vous ne voyez même pas que le nombre de fichiers trouvé n’est pas le même entre les deux exécutions. Il y a 9 entrées de plus dans le deuxième cas.

Tout simplement parce-que au fil des versions, les logiciels sont améliorés, la sécurité est renforcée, les contrôles sont plus rigoureux et donc cela a un impact sur les performances si on fait n’importe quoi, n’importe comment.

La syntaxe du FS source de cifs est assez obscure, merci Microsoft, vous mélangez tout

ok. La machine est cliente, le montage de type cifs par le réseau est performant.

Sauf que Samba est un serveur de fichiers, c’est-à-dire qu’il exporte (présente à des machines du réseau) un système de fichiers local. Il n’est pas sensé réexporter un système de fichiers qui n’est pas local.

Vous utilisez le pilote cifs (système de fichiers réseau) une deuxième fois, dans une configuration qui n’est pas prévue. Du grand n’importe quoi.

Par contre si vous faites simple et logique
Le montage à la demande de /mnt/ftp du système de fichiers venat de Windows FTP (inchangé)
Un montage de type bind pour faire apparaître le contenu en deux endroits

mount  --bind  /mnt/ftp /tmp/ftp

Là, il n’y a pas de problème de performances, on utilise les logiciels en douceur, on ne force pas samba à réexporter un FS non local, importé par ailleurs (à l’insu de son plein gré :laughing: )

Pour chaque machine qui fait du « stockage », posez-vous la question de comment elle sait que le fichier contratxxx.docx lui a été envoyé par Untel et que les hôtesses à l’accueil n’y ont pas accès.
Pour gérer ce genre de problématique, si vous tenez à utiliser SAMBA, il faudra qu’un de ces serveurs joue le rôle de contrôleur de domaine. Les machines de « stockage » utilisent le contrôleur de domaine pour les identifications et autorisations.

Dans une optique moins inspirée Microsoft (mais Sun ) le paquet nis sur chaque machine Linux faisant partie d’un domaine NIS, est une solution très simple à mettre en oeuvre. Il suffit de trouver un nom de domaine, une machine qui servira de serveur NIS (consommation de ressources négligeable pour les machines actuelles ).

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)