Grundlegendes zu (fehlenden) verteilten Dateisperren in DFSRUnderstanding (the Lack of) Distributed File Locking in DFSR

In diesem Artikel wird das Fehlen eines verteilungssperrmechanismus für mehrere Hosts in Windows und insbesondere in Ordnern erläutert, die von DFSR repliziert wurden.This article discusses the absence of a multi-host distributed file locking mechanism within Windows, and specifically within folders replicated by DFSR.

HintergrundSome Background

  • Sperren verteilter Dateien – bezieht sich auf das Konzept der Verwendung mehrerer Kopien einer Datei auf mehreren Computern, und wenn eine Datei zum Schreiben geöffnet wird, werden alle anderen Kopien gesperrt.Distributed File Locking – this refers to the concept of having multiple copies of a file on several computers and when one file is opened for writing, all other copies are locked. Dadurch wird verhindert, dass eine Datei auf mehreren Servern gleichzeitig von mehreren Benutzern geändert wird.This prevents a file from being modified on multiple servers at the same time by several users.
  • Verteiltes Dateisystem Replikation – DFSR arbeitet in einem Zustands basierten Entwurf mit mehreren Mastern.Distributed File System Replication – DFSR operates in a multi-master, state-based design. Bei der Zustands basierten Replikation wendet jeder Server im multimastersystem Updates auf das zugehörige Replikat an, ohne Protokolldateien auszutauschen (Stattdessen werden Versions Vektoren verwendet, um "Aktualitäts Informationen" beizubehalten).In state-based replication, each server in the multi-master system applies updates to its replica as they arrive, without exchanging log files (it instead uses version vectors to maintain “up-to-dateness” information). Nach der anfänglichen Synchronisierung ist kein Server mehr beliebig autorisierend, daher ist er für verschiedene Netzwerktopologien hoch verfügbar und sehr flexibel.No one server is ever arbitrarily authoritative after initial sync, so it is highly available and very flexible on various network topologies.
  • Server Message Block: SMB ist das gängige Protokoll, das in Windows für den Zugriff auf Dateien über das Netzwerk verwendet wird.Server Message Block - SMB is the common protocol used in Windows for accessing files over the network. Vereinfacht ausgedrückt, ist es ein Client/Server-Protokoll, das einen Redirector verwendet, damit Remote Dateisysteme als lokale Dateisysteme angezeigt werden.In simplified terms, it's a client-server protocol that makes use of a redirector to have remote file systems appear to be local file systems. Er ist nicht spezifisch für Windows und ist recht häufig – ein bekanntes nicht-Microsoft-Beispiel ist Samba, mit dem Linux, Mac und andere Betriebssysteme als SMB-Clients/-Server fungieren und an Windows-Netzwerken teilnehmen können.It is not specific to Windows and is quite common – a well known non-Microsoft example is Samba, which allows Linux, Mac, and other operating systems to act as SMB clients/servers and participate in Windows networks.

Es ist wichtig, dass Sie eine klare Abgrenzung definieren, wo DFSR und SMB in ihrer replizierten Daten Umgebung leben.It's important to make a clear delineation of where DFSR and SMB live in your replicated data environment. SMB ermöglicht Benutzern den Zugriff auf Ihre Dateien, und Sie hat keine Kenntnis von DFSR.SMB allows users to access their files, and it has no awareness of DFSR. Ebenso hält DFSR (über das RPC-Protokoll) Dateien zwischen Servern synchron und hat keinerlei Kenntnis von SMB.Likewise, DFSR (using the RPC protocol) keeps files in sync between servers and has no awareness of SMB. Verwechseln Sie die verteilte Sperre nicht, wie Sie in diesem Beitrag definiert ist, und die opportunistische SperreDon't confuse distributed locking as defined in this post and Opportunistic Locking.

An dieser Stelle können die Dinge wie die Brits in Birnen geformt werden.So here's where things can go pear-shaped, as the Brits say.

Da Benutzerdaten auf mehreren Servern ändern können, und da jeder Windows-Server nur über eine Datei Sperre auf sich selbst weiß, und da DFSR nichts über diese Sperren auf anderen Servern weiß, ist es für Benutzer möglich, die Änderungen gegenseitig zu überschreiben.Since users can modify data on multiple servers, and since each Windows server only knows about a file lock on itself, and since DFSR doesn't know anything about those locks on other servers, it becomes possible for users to overwrite each other's changes. DFSR verwendet einen "Last Writer WINS"-Konflikt Algorithmus, sodass jemand verlieren muss und die Person, die zuletzt gespeichert werden muss, Ihre Änderungen behält.DFSR uses a “last writer wins” conflict algorithm, so someone has to lose and the person to save last gets to keep their changes. Der Verlust der Dateikopie wird in den Ordner ConflictandDeleted eingecheckt.The losing file copy is chucked into the ConflictAndDeleted folder.

Dies ist weitaus weniger häufig als Benutzer, die glauben.Now, this is far less common than people like to believe. Normalerweise werden echte freigegebene Dateien in einer lokalen Umgebung geändert. in der Zweigstelle oder in derselben Zeile von kubischen.Typically, true shared files are modified in a local environment; in the branch office or in the same row of cubicles. Sie werden in der Regel von Mitarbeitern desselben Teams bearbeitet, sodass die Benutzer im allgemeinen wissen, dass Sie Daten ändern.They are usually worked on by people on the same team, so people are generally aware of colleagues modifying data. Da Sie sich in der Regel am gleichen Standort befinden, sind die Chancen deutlich höher, dass alle Benutzer, die an einem freigegebenen Dokument arbeiten, denselben Server verwenden.And since they are usually in the same site, the odds are much higher that all the users working on a shared doc will be using the same server. Die Situation wird von Windows SMB behandelt.Windows SMB handles the situation here. Wenn ein Benutzer eine Datei für Änderungen gesperrt hat und er versucht, die Datei zu bearbeiten, erhält der andere Benutzer eine Fehlermeldung wie die folgende:When a user has a file locked for modification and his coworker tries to edit it, the other user will get an error like:

Screenshot des Dialog Felds "Datei in Verwendung" mit einer Fehlermeldung, die besagt, dass diese Aktion nicht abgeschlossen werden kann, weil die Datei in einem anderen Programm geöffnet ist.

Wenn die Anwendung, die die Datei öffnet, sehr clever ist, wie z. b. Word 2007, erhalten Sie möglicherweise Folgendes:And if the application opening the file is really clever, like Word 2007, it might give you:

Screenshot des Dialog Felds "Datei in Verwendung", das drei Aktionen anzeigt, die Sie ausführen können, wenn eine Datei von einem anderen Benutzer gesperrt wird.

DFSR verfügt über einen Mechanismus für gesperrte Dateien, befindet sich jedoch nur im Kontext des Servers.DFSR does have a mechanism for locked files, but it is only within the server's own context. DFSR repliziert eine Datei nicht in oder, wenn die lokale Kopie eine exklusive Sperre aufweist.DFSR will not replicate a file in or out if its local copy has an exclusive lock. Dadurch wird jedoch nicht verhindert, dass jemand auf einem anderen Server die Datei ändert.But this doesn't prevent anyone on another server from modifying the file.

Zurück zum Thema ist das Problem, dass freigegebene Daten geografisch geändert werden, und für einige Leute ist es ziemlich leicht.Back on topic, the issue of shared data being modified geographically does exist, and for some folks it's pretty gnarly. Wir werden gelegentlich gefragt, warum DFSR diese Sperre nicht behandelt und alles mit einer Welle der magischen Wand übernimmt.We're occasionally asked why DFSR doesn't handle this locking and take of everything with a wave of the magic wand. Es stellt sich heraus, dass dies ein interessantes und schwieriges Szenario ist, das für ein multimasterreplikations System gelöst werden muss.It turns out this is an interesting and difficult scenario to solve for a multi-master replication system. Sehen wir uns dies einmal genauer an.Let's explore.

Lösungen von DrittanbieternThird-Party Solutions

Es gibt einige Anbieter Lösungen, bei denen dieses Problem auftritt, das Sie in der Regel durch eine oder mehrere der folgenden Methoden lösen * :There are some vendor solutions that take on this problem, which they typically tackle through one or more of the following methods*:

  • Verwendung eines Broker MechanismusUse of a broker mechanism

Eine zentrale "Verkehrs-Cop" ermöglicht einem Server, alle anderen Server und die von Benutzern gesperrten Dateien zu kennen.Having a central ‘traffic cop' allows one server to be aware of all the other servers and which files they have locked by users. Dies bedeutet leider auch, dass es häufig einen Single Point of Failure im verteilten Sperrsystem gibt.Unfortunately this also means that there is often a single point of failure in the distributed locking system.

Diagramm, das die Verwendung eines Broker Mechanismus zeigt.

  • Anforderung für ein vollständig geroutetes NetzwerkRequirement for a fully routed network

Da ein zentraler Broker in der Lage sein muss, mit allen Servern zu kommunizieren, die an der Datei Replikation teilnehmen, ist dadurch die Möglichkeit, komplexe Netzwerktopologien zu verarbeiten.Since a central broker must be able to talk to all servers participating in file replication, this removes the ability to handle complex network topologies. Ringtopologien und Multihub-und-geclustertopologien sind in der Regel nicht möglich.Ring topologies and multi hub-and-spoke topologies are not usually possible. In einem nicht vollständig gerouteten Netzwerk sind einige Server möglicherweise nicht in der Lage, sich gegenseitig oder einen Broker direkt zu kontaktieren, und können nur mit einem Partner sprechen, der selbst mit einem anderen Server kommunizieren kann – usw.In a non-fully routed network, some servers may not be able to directly contact each other or a broker, and can only talk to a partner who himself can talk to another server – and so on. Dies ist in einer Umgebung mit mehreren Mastern, aber nicht mit einem Broker Mechanismus gut.This is fine in a multi-master environment, but not with a brokering mechanism.

Das Diagramm zeigt die Anforderung für ein vollständig geroutetes Netzwerk an.

  • Sind auf ein paar von Servern beschränktAre limited to a pair of servers

Einige Lösungen schränken die Topologie auf ein Server Paar ein, um ihren verteilten Sperrmechanismus zu vereinfachen.Some solutions limit the topology to a pair of servers in order to simplify their distributed locking mechanism. Bei größeren Umgebungen ist dies möglicherweise nicht möglich.For larger environments this is may not be feasible.

  • Verwenden von Agents auf Clients und ServernMake use of agents on clients and servers
  • Verwenden Sie die Multimasterreplikation nicht.Do not use multi-master replication
  • Verwenden Sie MS Clustering nicht.Do not make use of MS clustering
  • Verwenden von speziellen GerätenMake use of specialty appliances

*** _ Beachten Sie, dass ich in der Regel!*** _ Note that I say typically! Wenn Sie eine Lösung haben, die mindestens eine dieser Methoden nicht implementiert, sollten Sie keine Bedrohungen nach dem Tod veröffentlichen. !Please do not post death threats because you have a solution that does/does not implement one or more of those methods!_

Tiefere GedankenDeeper Thoughts

Wenn Sie mehr über dieses Problem nachzudenken, beginnen einige grundlegende Probleme.As you think further about this issue, some fundamental issues start to crop up. Wenn z. b. vier Server mit Daten vorhanden sind, die von Benutzern an vier Standorten geändert werden können, und die WAN-Verbindung zu einem der Anwendungen offline geschaltet wird, was tun wir?For example, if we have four servers with data that can be modified by users in four sites, and the WAN connection to one of them goes offline, what do we do? Die Benutzer können weiterhin auf ihre einzelnen Server zugreifen – aber sollten Sie Sie zulassen?The users can still access their individual servers – but should we let them? Wir möchten nicht, dass Sie Änderungen vornehmen, die in Konflikt stehen, aber wir möchten sicher sein, dass Sie weiterhin arbeiten und unser Unternehmen Geld verdienen.We don't want them to make changes that conflict, but we definitely want them to keep working and making our company money. Wenn Änderungen an diesem Punkt willkürlich blockiert werden, können keine Benutzer arbeiten, auch wenn keine Konflikte auftreten.!If we arbitrarily block changes at that point, no users can work even though there may not actually be any conflicts happening! Es gibt keine Möglichkeit, den anderen Servern mitzuteilen, dass die Datei verwendet wird und Sie sich wieder auf Quadrat eins befinden.There's no way to tell the other servers that the file is in use and you're back at square one.

Das Diagramm zeigt die Ergebnisse eines teilweisen Netzwerkausfalls.

Dann gibt es SMB selbst und die Fehlerbehandlung von Berichterstattungs sperren.Then there's SMB itself and the error handling of reporting locks. Wir können die Art und Weise, wie SMB-Berichte freigegeben werden, nicht ändern, da wir eine Menge von Anwendungen unterbrechen und Clients die neuen erweiterten Fehlermeldungen trotzdem nicht verstehenWe can't really change how SMB reports sharing violations as we'd break a ton of applications and clients wouldn't understand new extended error messages anyways. Anwendungen wie Word 2007 führen einige unter Deckung aus, um herauszufinden, wer Dateien sperrt, aber die meisten Anwendungen wissen nicht, wer über eine Datei verwendet wird (oder sogar, dass SMB vorhanden ist).Applications like Word 2007 do some undercover trickery to figure out who is locking files, but the vast majority of applications don't know who has a file in use (or even that SMB exists. Tatsächlich.).Really.). Wenn ein Benutzer also die Meldung "diese Datei wird verwendet" erhält, ist er nicht besonders handlungsfähig – sollte er den Helpdesk anrufen?So when a user gets the message ‘This file is in use' it's not particularly actionable – should they all call the help desk? Hat der Helpdesk Zugriff auf alle Dateiserver, um zu sehen, welche Benutzer auf Dateien zugreifen?Does the help desk have access to all the file servers to see which users are accessing files? Unübersichtlich.Messy.

Da wir multimasterunterstützung für hohe Verfügbarkeit benötigen, ist ein Broker System weniger erwünscht. möglicherweise muss auf allen Servern etwas ausgeführt werden, das Ihnen die Kommunikation mit nicht vollständig gerouteten Netzwerken ermöglicht.Since we want multi-master for high availability, a broker system is less desirable; we might need to have something running on all servers that allows them all to communicate even through non-fully routed networks. Dies erfordert sehr komplexe Synchronisierungs Techniken.This will require very complex synchronization techniques. Dies führt zu einem gewissen Verwaltungsaufwand (obwohl wahrscheinlich nicht viel), und es muss sich um einen blitzschnell handeln, um sicherzustellen, dass wir den Benutzer nicht in der Arbeit halten. Es muss die Datei Replikation selbst überstehen. tatsächlich muss Sie tatsächlich an die Replikation gebunden werden.It will add some overhead on the network (although probably not much) and it will need to be lightning fast to make sure that we are not holding up the user in their work; it needs to outrun file replication itself - in fact, it might need to actually be tied to replication somehow. Außerdem müssen Serverausfälle berücksichtigt werden, bei denen es sich um Netzwerk-und nicht um Serverabstürze handelt.It will also have to account for server outages that are network related and not server crashes, somehow.

Diagramm, das die Sperrung und Replikation über fünf Server hinweg anzeigt.

Und dann kommen wir zur speziellen Client Software für dieses Szenario zurück, die die Sperren besser versteht und dem Benutzer einige nützliche Informationen geben kann ("anrufen Sie sich bei der Buchhaltung an, und teilen Sie dem Dokument mit, dass die Datei Sperr Topologie beschädigt ist, und Ihr Administrator hindert Sie daran, diese Datei zu öffnen, bis Sie korrigiert wird" usw.).And then we're back to special client software for this scenario that better understands the locks and can give the user some useful info (“Go call Susie in accounting and tell her to release that doc”, “Sorry, the file locking topology is broken and your administrator is preventing you from opening this file until it's fixed”, etc). Es ist definitiv interessant, dies mit den Millionen von Anwendungen zu erreichen, die unter Windows ausgeführt werden.Getting this to play nicely with the millions of applications running in Windows will definitely be interesting. Es gibt viele Betriebssysteme, die nicht unterstützt werden oder die Software erhalten – Windows 2000 ist von grundlegender Unterstützung und XP bald.There are plenty of OS's that would not be supported or get the software – Windows 2000 is out of mainstream support and XP soon will be. Linux-und Mac-Clients hätten diese Software erst dann, wenn Sie es als wichtig empfunden hätte, damit der Kunde hoffen muss, dass seine Hersteller etwas ähnliches gemacht haben.Linux and Mac clients wouldn't have this software until they felt it was important, so the customer would have to hope their vendors made something analogous.

Weitere InformationenMore inforamtion

Die einfachste Möglichkeit, diese Situation in DFSR zu steuern, besteht darin, dass Sie DFS-Namespaces verwenden, um Benutzer zu vorhersagbaren Orten mit einem konsistenten Namespace zu leiten.Right now the easiest way to control this situation in DFSR is to use DFS Namespaces to guide users to predictable locations, with a consistent namespace. Durch die ordnungsgemäße Konfiguration der DFSN-Standort Topologie und der Server Verknüpfungen erzwingen Sie, dass Benutzer denselben lokalen Server freigeben und nur den Zugriff auf Remote Computer gestatten, wenn der Server "Main" nicht mehr zur Verfügung steht.By correctly configuring your DFSN site topology and server links, you force users to all share the same local server and only allow them to access remote computers when their ‘main' server is down. In den meisten Umgebungen funktioniert dies ziemlich gut.For most environments, this works quite well. Alternative zu DFSR, SharePoint ist eine Option, da es sich um ein Auschecken-/Eincheck System handelt.Alternative to DFSR, SharePoint is an option because of its check-out/check-in system. BranchCache (in Windows Server 2008 R2 und Windows 7) ist möglicherweise eine Option für Sie, da Sie für das Lesen von Dateien in einem branchszenario konzipiert ist, aber letztendlich bleiben die autorisierenden Daten immer noch auf einem Server, – hiermehr.BranchCache (coming in Windows Server 2008 R2 and Windows 7) may be an option for you as it is designed for easing the reading of files in a branch scenario, but in the end the authoritative data will still live on one server only – more on this here. Und auch hier haben diese Anbieter ihre Lösungen.And again, those vendors have their solutions.