Delen via


Voorbeelden van opportunistische vergrendeling

In de volgende voorbeelden ziet u gegevens- en SMB-berichtverplaatsingen als opportunistische vergrendelingen worden gemaakt en verbroken. Houd er rekening mee dat clients gegevens van bestandskenmerken en bestandsgegevens in de cache kunnen opslaan.

Houd er ook rekening mee dat deze voorbeelden zijn gebaseerd op situaties waarin clienttoepassingen opportunistische vergrendelingen aanvragen van externe servers. Deze processen worden automatisch gestart door de netwerkomleidingsfunctie en de externe server. Er is geen directe betrokkenheid van de clienttoepassing of -toepassingen. De processen die in deze voorbeelden worden beschreven, kunnen worden gegeneraliseerd in situaties waarin lokale clienttoepassingen rechtstreeks opportunistische vergrendelingen aanvragen vanuit het lokale bestandssysteem, met uitzondering dat er geen uitwisseling van gegevens via het netwerk betrokken is.

Opportunistische vergrendeling op niveau 1

In het volgende diagram ziet u een netwerkverkeersweergave van een opportunistische vergrendeling op niveau 1 voor een bestand. De pijlen geven de richting van gegevensverplaatsing aan, indien van toepassing.

Gebeurtenis Client X Server Client Y
1 Opent bestand, aanvraagniveau 1-vergrendeling ==>
2 <== Verleent niveau 1 opportunistisch slot
3 Voert lees-, schrijf- en andere bewerkingen uit ==>
4 <== Aanvragen om het bestand te openen
5 <== Opportunistisch einde
6 Gegevens die worden gelezen, worden verwijderd
7 Schrijft gegevens ==>
8 Verzendt het bericht 'sluiten' of 'gereed' ==>
9 Okeen open bewerking ==>
10 Voert lees-, schrijf- en andere bewerkingen uit ==> <== Voert lees-, schrijf- en andere bewerkingen uit

 

Als 1, client X opent een bestand en als onderdeel van de open bewerking vraagt een opportunistische vergrendeling op niveau 1 op het bestand. In geval van 2 verleent de server de vergrendeling op niveau 1 omdat er geen andere client het bestand heeft geopend. De client gaat het bestand op de gebruikelijke manier openen in gebeurtenis 3.

In geval 4 probeert client Y het bestand te openen en vraagt een opportunistische vergrendeling aan. De server ziet dat client X het bestand heeft geopend. De server negeert de aanvraag van Y terwijl client X schrijfgegevens leegmaakt en de leescache voor het bestand verlaat.

De server dwingt X op te schonen door naar X een SMB-bericht te verzenden dat de opportunistische vergrendeling wordt onderbroken, gebeurtenis 5. Client X 'op de achtergrond' negeert alle leesgegevens; Met andere woorden, dit proces genereert geen netwerkverkeer. In geval van 7 schrijft client X alle schrijfgegevens in de cache naar de server. Wanneer client X klaar is met het schrijven van gegevens in de cache naar de server, verzendt client X een bericht 'sluiten' of 'gereed' naar de server, gebeurtenis 8.

Nadat de server op de hoogte is gesteld dat client X klaar is met het leegmaken van de schrijfcache naar de server of het bestand heeft gesloten, kan de server het bestand openen voor client Y, in geval 9. Omdat de server nu twee clients met hetzelfde bestand heeft geopend, verleent deze een opportunistische vergrendeling aan geen van beide. Beide clients gaan verder met het lezen van het bestand en een of beide schrijfbewerkingen naar het bestand.

Batch Opportunistisch vergrendelen

In het volgende diagram ziet u een netwerkverkeersweergave van een batch-opportunistische vergrendeling. De pijlen geven de richting van gegevensverplaatsing aan, indien van toepassing.

Gebeurtenis Client X Server Client Y
1 Bestand openen, batchvergrendeling aanvragen ==>
2 <== Verleent batch-opportunistische vergrendeling
3 Bestand lezen ==>
4 <== Gegevens verzenden
5 Bestand sluiten
6 Bestand openen
7 Zoekt naar gegevens
8 Leest gegevens ==>
9 <== Gegevens verzenden
10 Bestand sluiten
11 <== Bestand openen
12 <== Opportunistisch einde
13 Bestand sluiten ==>
14 Okeen open bewerking ==>
15 <== Voert lees-, schrijf- en andere bewerkingen uit

 

In de batch opportunistische vergrendeling opent client X een bestand, gebeurtenis 1 en de server verleent client X een batchvergrendeling in gebeurtenis 2. Client X probeert gegevens te lezen, gebeurtenis 3, waarop de server reageert met gegevens, gebeurtenis 4.

Gebeurtenis 5 toont de batch opportunistische vergrendeling op het werk. De toepassing op Client X sluit het bestand. De netwerkomleiding filtert echter de sluitingsbewerking uit en verzendt geen gesloten bericht, waardoor een 'stille' sluiting wordt uitgevoerd. De netwerkomleiding kan dit doen omdat client X het enige eigendom van het bestand heeft. Later, in geval 6, opent de toepassing het bestand opnieuw. Nogmaals, er stromen geen gegevens over het netwerk. Wat de server betreft, heeft deze client het bestand geopend sinds gebeurtenis 2.

Gebeurtenissen 7, 8 en 9 tonen de gebruikelijke gang van netwerkverkeer. Als er 10 zijn, treedt er nog een stille sluiting op.

In geval 11 probeert client Y het bestand te openen. De serverweergave van het bestand is dat client X het heeft geopend, ook al heeft de toepassing op client X het gesloten. Daarom verzendt de server een bericht dat de opportunistische vergrendeling naar client X breekt. Client X verzendt nu het gesloten bericht via het netwerk, gebeurtenis 13. Gebeurtenis 14 volgt als de server het bestand voor client Y opent. De toepassing op client X heeft het bestand gesloten, dus er worden geen overdrachten meer naar of van de server voor dat bestand uitgevoerd. Client Y begint gegevensoverdracht zoals gebruikelijk in gebeurtenis 15.

Tussen de tijd dat client X de vergrendeling op het bestand krijgt in gebeurtenis 2 en de laatste sluiting bij gebeurtenis 13, zijn alle bestandsgegevens die de client in de cache heeft opgeslagen geldig, ondanks de tussenliggende toepassing geopende en gesloten bewerkingen. Nadat de opportunistische vergrendeling is verbroken, kunnen gegevens in de cache echter niet als geldig worden beschouwd.

Filter Opportunistisch vergrendelen

In het volgende diagram ziet u een netwerkverkeersweergave van een filter opportunistische vergrendeling. De pijlen geven de richting van gegevensverplaatsing aan, indien van toepassing.

Gebeurtenis Client X Server Client Y
1 Bestand openen zonder toegangsrechten ==>
2 <== Het bestand openen
3 Filtervergrendeling aanvragen==>
4 <== Vergrendeling van subsidies
5 Bestand openen voor lezen ==>
6 <== Het bestand opnieuw openen
7 Leest gegevens met behulp van de leesgreep ==>
8 <== Gegevens verzenden
9 <== Gegevens verzenden
10 <== Gegevens verzenden
11 <== Het bestand openen
12 Hiermee opent u het bestand ==>
13 <== Aanvraagfiltervergrendeling
14 Filtervergrendeling ==>
15 <== Gegevens lezen
16 Verzendt gegevens ==>
17 Gegevens lezen (in cache)
18 Bestand sluiten ==>
19 <== Bestand sluiten

 

In de filter opportunistische vergrendeling opent client X een bestand, gebeurtenis 1 en de server reageert in gebeurtenis 2. De client vraagt vervolgens een filter opportunistische vergrendeling aan in gebeurtenis 3, gevolgd door de server die de opportunistische vergrendeling verleent in gebeurtenis 4. Client X opent het bestand vervolgens opnieuw voor het lezen in gebeurtenis 5, waarop de server reageert in gebeurtenis 6. De client probeert vervolgens gegevens te lezen, waarop de server reageert met gegevens, gebeurtenis 8.

Gebeurtenis 9 toont de filter opportunistische vergrendeling op het werk. De server leest voor de client en verzendt de gegevens via het netwerk, ook al heeft de client deze niet aangevraagd. De client slaat de gegevens in de cache op. In geval van 10 verwacht de server ook een toekomstige aanvraag voor gegevens en verzendt een ander deel van het bestand voor de client in de cache.

In het geval 11 en 12, opent een andere client, Y, het bestand. Client Y vraagt ook een filter opportunistische vergrendeling aan. In geval van 14 weigert de server deze. In geval 15 vraagt client Y gegevens op, die de server verzendt in gebeurtenis 16. Dit heeft geen invloed op client X. Op elk gewenst moment kan een andere client dit bestand openen voor leestoegang. Geen andere client is van invloed op de filtervergrendeling van client X.

Gebeurtenis 17 toont client X-leesgegevens. Omdat de server echter al de gegevens heeft verzonden en de client deze in de cache heeft opgeslagen, wordt het netwerk niet doorkruist.

In dit voorbeeld probeert client X nooit alle gegevens in het bestand te lezen, dus de leesdoorloop die wordt aangegeven door gebeurtenissen 9 en 10 is "verspild"; Dat wil gezegd, de gegevens worden nooit daadwerkelijk gebruikt. Dit is een acceptabel verlies omdat de read-ahead de toepassing heeft versneld.

In geval 18 sluit client X het bestand. De netwerkomleidingsor van de client verlaat de gegevens in de cache. De server sluit het bestand.