Si besoin, les informations de base et la gestion des utilisateurs sont décrites sur les pages précédentes dédiées à Samba Linux sous CentOS :



IMPORTANT : Vous trouverez ci-après nombre de modifications permettant de meilleures performances dans des cas spécifiques et en fonction de plusieurs paramètres locaux (Type de machines, vitesse du réseau, type de fichiers, etc..). Ne greffez pas des lignes à la légère, effectuez tout d'abord des tests hors production, au plus près de vos situations réelles.


dossiers_partage


Optimisation des paramètres réseau


Les paramètres par défaut de Samba permettent un fonctionnement optimal adapté à la majorité des cas. Toutefois, en fonction de votre réseau local, de sa vitesse (100 Mb ou Gigabit), de la taille de vos fichiers et du nombre d'utilisateurs simultanés, il est possible de gagner un peu en performances en affinant les réglages.

Le gain n'est pas systématique et dépend de nombreux facteurs ! Effectuez des essais avant de passer vos réglages en production.

  • L'option " socket options = TCP_NODELAY " (à ajouter dans la partie " Global " de votre smb.conf), permet souvent une augmentation significative de la vitesse de lecture.
## fichier conf samba
## exemple 3 mgroup.fr

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================


  • L'option " IPTOS_LOWDELAY ", peut-être ajoutée à " socket options = TCP_NODELAY ", mais n'est pas supportée par tous les Switchs ou Routeurs réseau.
## fichier conf samba
## exemple 3 mgroup.fr

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY  IPTOS_LOWDELAY

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================


  • Une autre solution consiste à jouer sur la taille des paquets (Send and Receive Buffers) via les options " SO_RCVBUF= " et " SO_SNDBUF= ". Sur un réseau lent, affectez des valeurs plus basses (exemple 8192). Sur un réseau Gigabit, avec des postes clients récents, essayez avec des paquets plus gros (exemple 65536). Pour info, je n'ai jamais dépassé une valeur de 131072. Notez que les valeurs sont des multiples de 1024.
## fichier conf samba
## exemple 3 mgroup.fr

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY  SO_RCVBUF=65536 SO_SNDBUF=65536

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================


  • Il est tout à fait possible de cumuler les trois options de " socket " :
## fichier conf samba
## exemple 3 mgroup.fr

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY  IPTOS_LOWDELAY  SO_RCVBUF=65536 SO_SNDBUF=65536

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================


  • Peu usitée avec des programmes récents, l'option de désactivation "Lecture Seule" est parfois nécessaire (programmes issus du monde Unix/Linux par exemple). Par ailleurs, dans certaines situations, elle améliore sensiblement les performances réseau. Cette option se rajoute au cas par cas dans les paramètres de chaque partage via la ligne " delete readonly = yes ". Exemple ci-dessous :
#===================== Share Definitions =======================

[partage_test]
        path = /share/test
        comment = Partage test delete readonly
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers
        delete readonly = yes



Important : Prenez le temps d'effectuer plusieurs tests avec des fichiers de tailles différentes et depuis plusieurs machines de votre réseau. A plus forte raison si vous avez un parc hétérogène (Postes sous XP/Vista/Seven mélangés à des machines plus anciennes ou Mix Stations Windows/Linux, etc..).


Optimisations via les OPLOCKS (aussi appelé verrouillage opportuniste)


Le verrouillage opportuniste (oplocks) est commandé depuis le système de fichiers Windows (par opposition à un API) par l'intermédiaire des entrées d'enregistrement (sur le serveur et le client) dans le but d'améliorer les performances réseau lors de l'accès à un fichier résidant sur ​​un serveur. Il est activé par défaut dans Samba.

Si, pour la grande majorité des fichiers, ce fonctionnement est le bienvenu, il peut s'avérer source de ralentissements importants lorsqu'il s'agit de fichiers de type " base de données " attaqués simultanément par plusieurs utilisateurs.

Note Importante : Si vous exportez via Samba des dossiers montés en NFS, les modifs de type " OPLOCKS " risquent d'entrainer un impact négatif sur les performances.

  • L'état "OPLOCK" d'un fichier ouvert au travers de Samba est visible depuis une simple commande " smbstatus -v ". Comme dans l'exemple ci-dessous :
Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
9620         1011       DENY_NONE  0x100001    RDONLY     NONE             /share/commun   .   Fri Feb 15 09:52:15 2013
8079         1008       DENY_WRITE 0x2019f     RDWR       EXCLUSIVE+BATCH  /share/commun   document.doc   Fri Feb 15 10:24:00 2013



  • Première solution pour désactiver " OPLOCKS ", via la section " Global " de Samba, avec la ligne d'option " oplocks = False ". C'est la solution la moins conseillée ! Elle imposera à Samba de traiter tous les fichiers des partages sous le même mode.
## fichier conf samba
## exemple 3 mgroup.fr NON Recommandé

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY  SO_RCVBUF=65536 SO_SNDBUF=65536
        oplocks = False

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================



  • Seconde possibilité, traiter l'option spécifiquement pour un ou plusieurs partages via l'option " level2 oplocks = ". La ligne d'option est rajoutée dans les paramètres du partage concerné, et non plus dans " Global ". Un exemple ci-dessous avec le share " partage_special ". Notez que cette option ne fonctionne pas si vous avez laissé " oplocks = False " dans " Global "
## fichier conf samba
## exemple 3 mgroup.fr oplocks level 2

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = users
        passdb backend = tdbsam
        load printers = no
	disable spoolss = Yes
        socket options = TCP_NODELAY  SO_RCVBUF=65536 SO_SNDBUF=65536

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================

[partage_special]
        path = /share/special
        comment = Partage specifique sans oplocks
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers
        level2 oplocks = False



  • 3eme méthode, et à vrai dire celle que je recommande, qui consiste (toujours dans les options de chaque partage), à désactiver les " OPLOCKS " mais uniquement pour certains types de fichiers (comme les bases de données propriétaires par exemple). La ligne étant " veto oplock files = ". Exemple ci dessous pour les bases de données Access (fichiers .mdb) :
#===================== Share Definitions =======================

[partage_special]
        path = /share/special
        comment = Partage specifique sans oplocks
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers
        veto oplock files = *.mdb


  • Notez qu'il est possible d'indiquer plusieurs types de fichiers :
#===================== Share Definitions =======================

[partage_special]
        path = /share/special
        comment = Partage specifique sans oplocks
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers
        veto oplock files = /*.xls/*.mdb/




Partage spécifique pour logiciel dédié - Principe de l'utilisateur Samba unique


A destination des logiciels utilisant une base de données commune (au Format Propriétaire la plupart du temps), il peut s'avérer plus performant de forcer, via Samba, un utilisateur unique pour le partage dédié à ladite base de données. Sous réserve que le logiciel ne soit pas incompatible avec ce fonctionnement.
Notez qu'il s'agit d'un utilisateur unique au sens translation Samba/Linux, et non un utilisateur unique dans le logiciel propriétaire.

Un exemple avec le logiciel DUCHNOC qui utilise, comme base de données partagée, le fichier " tartempion.mabase ".

  • Création du partage dédié au fichier " tartempion.mabase "
# mkdir /share/duchnoc_folder
# chmod 700 /share/duchnoc_folder


  • On limite l'accès à ce partage (via samba) à l'utilisateur " duchnoc " créé pour la circonstance :
# useradd -s /bin/false -g sambausers  duchnoc
# passwd duchnoc
# chown duchnoc  /share/duchnoc_folder


  • le partiel samba de ce partage va ressembler à :
#===================== Share Definitions =======================

[partage_special]
        path = /share/duchnoc_folder
        comment = Partage reserved duchnoc
        valid users = duchnoc
        write list = duchnoc
        force user = duchnoc
	force group = sambausers
        force directory mode = 700
        force create mode = 700
	writeable = yes
        browseable = yes
        


  • Sur les postes clients Windows, on utilise la fonction "connexion d'un lecteur réseau" permanente (depuis outils dans la fenêtre du poste de travail) et on renseigne avec l'utilisateur "duchnoc" et son mot de passe associé (ligne se connecter sous un nom d'utilisateur différent). Pensez à laisser la case "se reconnecter à l'ouverture de session" cochée. Ne reste plus qu'à placer la base de données dans son nouvel emplacement réseau (via le poste de travail) et à l'indiquer au logiciel qui l'utilise.



capture_samba_montage

Note : Vérifiez la compatibilité de vos logiciels avec ce mode de fonctionnement, notamment avec plusieurs utilisateurs connectés à la base de données.


Offrir une corbeille réseau à vos utilisateurs via Samba


Avec Samba, il est effectivement possible de fournir une " corbeille réseau ", ou plus explicitement un dossier dans lequel viendraient se jeter les fichiers ou dossiers effacés par les utilisateurs.

Plutôt qu'un simple résumé, voici une page dédiée à la corbeille réseau sous Samba Linux, sur mgroup.fr




Liens utiles et Sources qui ont permis la rédaction de ce tuto :



Les pages précédentes dédiées à Samba Linux sous CentOS sur Mgroup.fr :




Vous pouvez commenter ou participer à l'amélioration de cet article via le topic dédié du forum.