Stor IT Back - Ihr Speicherspezialist

Stor IT Back

SMB / CIFS Protokoll V1.6 (c) Stor IT Back 2024



SMB und CIFS - Server Message Block, Windows Fileserver und Samba

Das SMB-Protokoll (Server Message Block) ist eine Netzwerkdateifreigabe, genauer gesagt ein Protokoll. Die eigentliche Funktion von SMB ist die Dateifreigabe, es umfasst noch zusätzliche Funktionen wie Drucken im Netzwerk, Authentifizierung, Sperren von Dateien und das Suchen von SMB-Servern im Netzwerk.

Jedes Windows Client- und Server-Betriebssystem beherscht SMB in verschiedenen Versionen und wird zum Datei-Austausch genutzt. Aber auch Linux-Distributionen und andere Betriebssysteme nutzen SMB bzw. CIFS. So können auch Dateien einfach zwischen Windows und Linux ausgetauscht werden. Auf der Seite von Linux übernimmt Samba die Funktion.

Vergleichbar ist SMB bzw. CIFS mit NFS aus der Unix- und Linux-Welt.



 
 

SMB und CIFS - Begriffe und Abgrenzungen

Wo liegt der Unterschied zwischen SMB und CIFS? Sind das eigentlich zwei unterschiedliche Begriffe für die gleiche Sache? Oder ist das eine von Microsoft und das andere von einem anderen Hersteller, also eine reine Patentfrage des Begriffes? Und welche Funktion bringt SMB bzw. CIFS?

Die erste Entwicklung stammt von IBM aus den Achtziger Jahren und wurde SMB genannt. SMB steht hierbei für Server Message Block. Es handelt sich hierbei um ein Filesharing-Protokoll. Es sollten Dateien einfach und komfortable über ein lokales Netzwerk geschrieben und gelesen werden, dies war und ist die Funktion. Die Freigaben auf dem Host wurden als Shares bezeichnet. Auf den Clients ist es dann der CIFS Mount oder SMB Mount.

CIFS (Common Internet File System) ist eine Implementierung durch die Firma Microsoft, entwickelt für das Windows Betriebssystem. Es ist also eine Form von SMB, eine spezielle Implementierung.

Die beiden Begriffe bedeuten also etwas vereinfacht die gleiche Sache. Ein Client der CIFS spricht kann auf einen Server mit SMB zugreifen und umgekehrt, die Version muss kompatibel sein.

Welcher Begriff ist den jetzt der richtige? Der heute passende Begriff ist SMB, moderne Systeme setzen nicht mehr CIFS, sondern SMB ein. Selbst bei Microsoft wird seit Windows Vista SMB 2 und seit Windows 8 bzw. Windows Server 2012 SMB 3 eingesetzt. SMB 2 und SMB 3 nutzen also deutliche Verbesserungen gegenüber von CIFS.

Was ist denn jetzt aber Samba? Samba ist eine Implementierung von SMB auf Unix bzw. Linux Rechnern. Samba wurde entwickelt, um Linux Clients einen Zugriff auf Windows Server zu ermöglichen bzw. Windows Clients den Zugriff auf Linux Server.
Unter Linux bzw. Unix Rechnern wird sonst nur das NFS Netzwerkdateisystem (Network File System) genutzt. Das ist allerdings ein vollständig anderes Protokoll als SMB oder CIFS. Eine NFS Client kann also nicht mit einem SMB Server Daten austauschen.



 
 

Implementierung und Funktion in Windows und Linux Samba

Das SMB Protokoll implementiert ein Netzwerkdateisystem (File-Server-Protokoll), welches vom Filesystem des Servers relativ unabhängig ist. Microsoft stellt SMB bzw. früher CIFS auf Basis des NTFS zur Verfügung, mit Samba wird SMB auf Linux und Unix Servern mit zum Beispiel EXT3, EXT4, ZFS oder XFS aufgebaut. Eine ältere Entwicklung des SMB bzw. CIFS Protokoll war das LAN-Manager-Produkt auf Basis des NetBIOS-Protokoll.

In der Praxis wird das SMB-Protokoll für die Freigabe von Dateien von einem zentralen Server an verschiedene Clients genutzt. Dies sind häufig Office-Daten, Bilder und Zeichnungen oder Videos. Seit SMB 3.0 können die Freigaben auch für Virtualisierung (Hyper-V) und Microsoft SQL Server genutzt werden.
Wie bei NFS können bei SMB auch Dateien gemeinsam genutzt werden, es können Dateien gleichzeitig gelesen werden. Auf eine Datei kann meist nur ein Client schreibend zugreifen, aber verschiedene Clients können auf verschiedene Dateien auf einer Freigabe schreibend zugreifen. Dies ist ein großer Unterschied zu iSCSI-Freigaben oder anderen Block-Devices.



 
 

CIFS / SMB Historie

Das SMB Protokoll wurde 1983 bei IBM vorgestellt. Verschiedene Firmen arbeiteten dann an der Weiterentwicklung des Protokolls, unter anderem Microsoft, IBM, SCO und das Samba-Team. Microsoft entwickelte in dieser Zeit sicherlich die meisten Erweiterungen, allerdings bis 2007 als Closed Source. Danach hat Microsoft wichtige Verfahren offen gelegt.

Mit Windows NT 4.0 hat Microsoft das Ur-SMB veröffentlicht, damals als CIFS bezeichnet. Mit Windows 2000 kam dann die SMB Version 1.0 raus, bei Windows Server 2008 dann die SMB Version 2 und mit Windows Server 2012 die neuste SMB 3 Version.

SMB-VersionWindows VersionSamba VersionFeatures
CIFSWindows NT 4.0Samba 1
SMB1 / SMB 1.0Windows 2000Samba 2SMB über TCP/IP
SMB2 / SMB 2.0Windows Vista / Server 2008Samba 3.5Performancesteigerung, weniger Befehle
SMB2 / SMB 2.1Windows 7 / Server 2008 R2neuer Locking-Mechanismus
SMB3 / SMB 3.0Windows 8 / Server 2012Samba 4.0für Hyper-V, Verschlüsselung
SMB3 / SMB 3.0.2Windows 8.1 / Server 2012 R2
SMB3 / SMB 3.1.1Windows 10 / Server 2016Samba 4.3Verschlüsselung, Integritätsprüfung



 
 

SMB 3.0 - Features und Neuerungen

SMB Transparent Failover:
Ist eine Freigabe auf einem Clusterdateiserver vorhanden, so wird beim Ausfall eines Nodes (oder der Wartung) die Freigabe transparent auf einem anderen Node weiter bedient, ohne die Anwendungen zu unterbrechen, die Dateien in diesen Freigaben speichern. Neben einem Fileserver-Cluster auf Basis von Windows Server 2012 werden auch Clients in der Version Windows 8 bzw. Server 2012 benötigt.

SMB Scale Out:
Werden in einem Fileserver-Cluster Clustervolumes der Version 2 (Cluster Shared Volumes CSV) genutzt, so kann ein direkter Zugriff von Clients auf alle Cluster-Nodes über SMB 3.0 erfolgen. Dies bedeutet eine bessere Laster-Verteilung, sowohl für die Cluster-Nodes wie auch für die Clients.

SMB Multichannel:
Mit dem Multichannel werden verschiedene Netzwerkverbindungen zwischen Client und Server zusammengefasst. Die Daten laufen über die verschiedenen Pfade und bieten einen Lastausgleich. Sollte ein Pfad ausfallen, so werden transparent die übrigen Pfade genutzt. Dieses Verfahren ist ähnlich dem Multipathing bei iSCSI oder Fibre Channel.

SMB Direct:
SMB Direct unterstützt Netzwerkkarten mit RDMA Features. RDMA (Remote Direct Memory Access) ermöglicht den direkten Zugriff der Netzwerkkarte auf den Speicher einer Applikation. Damit müssen die Daten nicht zwischen Applikationsspeicher und Netzwerk-Puffer hin und her kopiert werden. Dies spart einmal CPU-Zeit und verringert die Latenzzeit einer IO-Operation. Bei SMB 3.0 bedeutet dies einen performanteren Zugriff auf die Daten, was sich speziell bei Hyper-V und Microsoft SQL Server positiv auswirkt.

Leistungsindikatoren für Serveranwendungen:
Die neuen SMB-Leistungsindikatoren liefern detaillierte, nach Freigabe unterteilte Daten über Durchsatz, Latenz und I/O pro Sekunde. Dies ermöglicht die Leistung von SMB 3.0-Dateifreigaben zu analysieren, in denen ihre Daten gespeichert sind. Diese Indikatoren sind speziell für Serveranwendungen wie Hyper-V und SQL Server konzipiert, die Dateien in Remote-Dateifreigaben speichern.

SMB Verschlüsselung:
Dies ist eine End-to-End Verschlüsselung vom SMB 3.0 Client zum Server. Es schützt den Datenstrom vor Lauschangriffen auf nicht vertrauenswürdigen Verbindungen. So kann zum Beispiel eine Filialanbindung über das Internet ohne zusätzliche Hard- oder Software realisiert werden. Die Verschlüsselung wird auf Freigabebasis oder für einen gesamten Server konfiguriert.

SMB Directory Leasing:
Das Directory Leasing verbessert die Antwortzeiten von Anwendungen in Filialen mit langsamer Anbindung. Durch die Verwendung von Verzeichnis-Leases werden Roundtrips vom Client zum Server reduziert, da Metadaten von einem Verzeichniscache mit längerer Lebensdauer abgerufen werden. Die Cache-Kohärenz bleibt erhalten, da Clients benachrichtigt werden, wenn sich Verzeichnisinformationen auf dem Server ändern.



 
 

BranchCache

Der BranchCache ist eine Optimierung bei Wide Area Network (WAN) Übertragungen von Dateien zwischen Windows Systemen. Dieses Feature ist seit Windows Server 2008 R2 und Windows 7 verfügbar. Dabei werden Dateien auf den lokalen Systemen zwischengespeichert, die sonst über WAN Verbindungen vom Server geholt werden müssten. Also eine Optimierung bei der Anbindung von verteilten Büros und remoten Clients über langsame Verbindungen.

Dabei gibt es zwei verschiedene Modelle: Einmal der Distributed Cache und zum anderen der Hosted Cache. Beim Hosted Cache wird in den verteilten Büros jeweils ein Server benötigt, der die Daten speichert und den Clients zur Verfügung stellt. Der Vorteil dieser Lösung ist es, dass der Server Cache für alle Clients im Büro das Caching übernimmt.
Beim Distributed Cache übernimmt dies jeder Client selbst. Benötigen also zwei Clients in einem entfernten Büro die gleiche Datei und der erste Client ist offline, dann müssen die beiden Clients jeweils unabhängig die Datei cachen, aber auch vom zentralen Server holen. Weiterhin funktioniert das Distributed Caching nur in einem Subnet im entfernten Büro. Sind dort verschiedene Subnets installiert, dann muss der Hosted Cache genutzt werden.

Der BranchCache kann nicht nur bei File Servern (SMB/CIFS), sondern auch bei Webservern und Applikationsservern genutzt werden. Es muss auf den Servern der Background Intelligent Transfer Service (BITS) aktiviert sein. Ein Beispiel hierfür ist der WSUS Dienst (Microsoft Windows Server Update Services).

Die vollständige Unterstützung von BranchCache in Clients ist in der Enterprise Versionen vorhanden, also zum Beispiel Windows 10 Enterprise oder Windows 8.1 Enterprise. Nicht aber in den Pro Versionen, dort ist nur der BITS Support verfügbar.

Die Konsistenz der Daten ist natürlich weiterhin gewährleistet. Ändert ein User im verteilten Büro eine Datei, so wird diese direkt auf den zentralen Server über die WAN Verbindung geschrieben. Sollte jetzt ein anderer User die gleiche Datei anfordern, dann wird erst die Änderung vom zentralen Server zum Cache geladen und dann erst zum User ausgeliefert. Die funktioniert sowohl beim Hosted Cache, wie auch bei Distributed Cache.



 
 

Windows File-Services in der Praxis

Viele Anwender in Unternehmen nutzen SMB täglich und meist auch ohne größere Probleme. Selbst in einem reinen Windows Netzwerk sind verschiedene SMB Versionen im Einsatz und auch das meist reibungslos. Aber wo können im Zusammenspiel zwischen Server und Client Probleme auftreten?

Eine Klippe sind die verschiedenen Protokoll aber schon, Microsoft hat innerhalb von Updates in Windows 10 zum Beispiel das SMB 1.0 abgeschaltet. Greift der Windows 10 Client auf einen Windows 2016 oder 2019 Server zu, dann kommt es zu keinen Problemen. Beide nutzen das 3.x Protokoll und alles läuft. Nutzen die Clients aber SMB 1 Shares, zum Beispiel von älteren NAS Systemen, dann ist der Zugriff nicht mehr möglich, da der Client die Version 1.0 nicht mehr unterstützt. Das lässt sich aber in den Windows Features von Windows 10 einfach wieder aktivieren:

SMB / CIFS bei Windows 10

Die Screenshots zeigen die Einstellmöglichkeiten von SMB 1.0 bei den unterschiedlichen Update-Versionen von Windows 10. Wenn der Windows 10 Client nicht mehr auf das NAS zugreifen kann, dann müssen einfach nur die entsprechenden Features im Windows 10 aktiviert werden.

Aber das SMB Protokoll wird nicht nur bei Windows Clients genutzt. Auch ein Linux Client kann auf SMB Shares zugreifen. Selbst auf einen Samba Server (der ja auch auf einem Linux läuft), kann der Linux Client per SMB zugreifen. Aber warum denn das, ist doch doppelte Umsetzung? Wenn die Zugriffsrechte im Samba für Windows Clients gesetzt werden, dann kann der Linux Client ohne weitere Definitionen auf das Rechtesystem von Samba zugreifen. Ein Linux Client verhält sich dann also genauso wie ein Windows Client.

Aber eines ist dabei wichtig: Normalerweise wird ein SMB Share mit mount -f cifs user=test1,domain=DOM //192.168.1.1/datenremote /datenlokal gemountet. Jetzt wird ein Linux Client aber Unix-Berechtigungen auch bei dem SMB Share nutzen (wollen). Dies kann im Falle eines Samba Servers zu Problemen führen. Soll nur die Samba-Berechtigungen genutzt werden, dann muss der Share mit mount -f cifs user=test1,domain=DOM,nounix //192.168.1.1/datenremote /datenlokal.

Hier mal ein Aufzug der man-Pages von mount-cifs:

nounix
    Disable the CIFS Unix Extensions for this mount. This can be useful in order to turn off multiple settings at once. 
    This includes POSIX acls, POSIX locks, POSIX paths, symlink support and retrieving uids/gids/mode from the server. 
    This can also be useful to work around a bug in a server that supports Unix Extensions. 

Wird das nicht mit nounix gemountet, dann unterscheiden sich die Berechtigungen von Dateien unter Umständen von denen der Windows Clients. Ein Windows Client kann dann unter Umständen nicht auf die Dateien zugreifen.



 
 

Angebote der Stor IT Back zum Thema Windows Fileservices

Angebot Dell EMC Unity XT 380
Dell EMC Unity XT 380 Unified Storage
FC / iSCSI und NAS RAID-System

Hybrid oder All Flash / Replikation
inkl. Installation und Einweisung
Preis
auf Anfrage
Angebot Netapp FAS2750/FAS2820
NetApp FAS2750 Unified Storage
4 x UTA2 / 2 x 25 Gb LAN pro Controller

FAS2750 mit 24 x 2,5", FAS2820 mit 12 x 3,5"
FC, CIFS, iSCSI und NFS, inkl. Installation vor Ort
Preis
auf Anfrage
Angebot Windows Storage Server 2022
Microsoft Windows iOT 2022 Storage Server
NAS (Network Attached Storage)

SSD / SAS / SATA
SAS-Hardware-RAID / Intel Xeon Prozessor / 32 GB RAM
Preis
bitte anfragen
 
 
Zurück zur Übersicht
SMB CIFS
Übersicht der Angebote
Kontakt zur Stor IT Back
Suche auf der Webseite