Problemen met het foutbericht voor gebeurtenis-id 50 oplossen

Dit artikel helpt bij het oplossen van het foutbericht voor gebeurtenis-id 50.

Symptomen

Wanneer Windows informatie naar de fysieke schijf schrijft, worden de volgende gebeurtenisberichten mogelijk in het systeemlogboek geregistreerd:

Gebeurtenis-id: 50
Gebeurtenistype: Waarschuwing
Gebeurtenisbron: Ftdisk
Beschrijving: {Lost Delayed-Write Data} Het systeem probeerde bestandsgegevens over te dragen van buffers naar \Device\HarddiskVolume4. De schrijfbewerking is mislukt en mogelijk zijn slechts enkele gegevens naar het bestand geschreven.
Gegevens:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80

Gebeurtenis-id: 26
Gebeurtenistype: Informatie
Gebeurtenisbron: Toepassingspop-up
Beschrijving: Windows - Vertraagd schrijven mislukt: Windows kan niet alle gegevens opslaan voor het bestand \Device\HarddiskVolume4\Program Files\Microsoft SQL Server\MSSQL$INSTANCETWO\LOG\ERRORLOG. De gegevens zijn verloren gegaan. Deze fout kan worden veroorzaakt door een storing in uw computerhardware of netwerkverbinding.

Probeer dit bestand ergens anders op te slaan.

Deze gebeurtenisberichten betekenen precies hetzelfde en worden om dezelfde redenen gegenereerd. Dit artikel richt zich op gebeurtenis-id 50.

Opmerking

Het apparaat en pad in de beschrijving en de specifieke hexadecimale gegevens in deze berichten variëren, afhankelijk van de exacte omstandigheden die de gebeurtenis hebben veroorzaakt.

Meer informatie

Er zijn verschillende bronnen voor een gebeurtenis-id 50-bericht. Een gebeurtenis-id 50-bericht dat is geregistreerd vanuit een MRxSmb-bron treedt bijvoorbeeld op als er een netwerkverbindingsprobleem is waarbij de omleiding betrokken is. In dit artikel worden gebeurtenis-id 50-berichten behandeld die verwijzen naar schijfschrijfproblemen. Controleer het gebeurtenis-id 50-bericht om te controleren of het verwijst naar een schijfschrijfprobleem en of dit artikel van toepassing is.

In deze context registreert Windows een gebeurtenis-id 50-bericht als er een algemene fout optreedt wanneer Windows probeert informatie te schrijven vanuit cachebeheer van het bestandssysteem (niet de cache op hardwareniveau) naar de fysieke schijf. Dit schrijfgedrag, ook wel write-back of delayed-write caching genoemd, maakt deel uit van de geheugenbeheerfunctie van Windows. Write-backcache verbetert de systeemprestaties. Fouten in de vertraagde schrijfbewerkingen kunnen echter leiden tot verlies van gegevens of volume-integriteit.

Wanneer een toepassing een schrijfaanvraag naar Windows verzendt, wordt de schrijfaanvraag doorgaans in cache opgeslagen in Cachebeheer en wordt aan de toepassing gemeld dat het schrijven is geslaagd. Later schrijft CacheBeheer de gegevens naar de fysieke schijf en wist vervolgens de cache. Als er een fout optreedt tijdens de schrijfbewerking, gaan de gegevens verloren wanneer cachebeheer de cache wist.

Toepassingen of processen die niet-kritieke gegevens schrijven, zoals logboekregistratieprocessen, gebruiken CacheBeheer om de algehele prestaties te verbeteren. Toepassingen die kritieke gegevens schrijven, zoals SQL Server, maken geen gebruik van Cachebeheer. Dergelijke toepassingen stellen een FILE_FLAG_NO_BUFFERING vlag in om te garanderen dat de transactie rechtstreeks naar de schijf wordt voltooid. Schrijven met direct-naar-schijf genereert nooit gebeurtenis-id 50-berichten.

Een gebeurtenis-id 50-bericht is vergelijkbaar met een gebeurtenis-id 9 of een gebeurtenis-id 11-bericht. Hoewel de fout niet zo ernstig is als de fout die wordt aangegeven door het bericht met gebeurtenis-id 9 of gebeurtenis-id 11, kunt u dezelfde probleemoplossingstechnieken gebruiken voor een gebeurtenis-id 50-bericht als voor een gebeurtenis-id 9 en een gebeurtenis-id 11-bericht. Houd er echter rekening mee dat alles in de stack schrijfbewerkingen met verloren vertraging kan veroorzaken, zoals filterstuurprogramma's en stuurprogramma's voor minipoorten.

De voorbeeldgebeurtenis decoderen

De sectie Symptomen van dit artikel bevat het volgende voorbeeld van een gebeurtenis-id 50-bericht:

Gebeurtenis-id: 50
Gebeurtenistype: Waarschuwing
Gebeurtenisbron: Ftdisk
Beschrijving: {Lost Delayed-Write Data} Het systeem probeerde bestandsgegevens over te dragen van buffers naar \Device\HarddiskVolume4. De schrijfbewerking is mislukt en mogelijk zijn slechts enkele gegevens naar het bestand geschreven.
Gegevens:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80

De doelschijf identificeren

U kunt de schijf identificeren die het doel van de schrijfbewerking was met behulp van de symbolische koppeling die wordt vermeld voor het station in de sectie 'Beschrijving' van het gebeurtenis-id-bericht, bijvoorbeeld: \Device\HarddiskVolume4.

De gegevenssectie decoderen

Gebeurtenis-id 50-berichten (en ook gebeurtenis-id 9, 11, 51 of vergelijkbare 'DISK'-berichten) bevatten binaire gegevens die u kunt gebruiken om het probleem te identificeren. Het bericht bevat de volgende gegevenssectie:

Gegevens:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80

Opmerking

Wanneer u de hexadecimale gegevens in het gebeurtenis-id-bericht converteert naar de statuscode, moet u er rekening mee houden dat de waarden worden weergegeven in de little-endian-indeling.

In de volgende tabel wordt beschreven wat elke verschuiving van dit bericht vertegenwoordigt.

OffsetLengthValues Lengte Waarden
0x00 2 Niet gebruikt
0x02 2 Gegevensgrootte dump = 0x0004
0x04 2 Aantal tekenreeksen = 0x0002
0x06 2 Verschuiving naar de tekenreeksen
0x08 2 Gebeurteniscategorie
0x0c 4 NTSTATUS-foutcode
0x10 8 Niet gebruikt
0x18 8 Niet gebruikt
0x20 8 Niet gebruikt
0x28 4 Foutcode NT-status

De foutcode NT-status

De uiteindelijke statuscode is de belangrijkste informatie in een gebeurtenis-id 50-bericht. Dit is de foutcode die wordt geretourneerd wanneer de schrijfaanvraag wordt gedaan en het is de belangrijkste informatiebron. In het voorbeeld wordt de uiteindelijke statuscode weergegeven op 0x28 op de zesde regel van de gegevensset. In begint met '0028:' en bevat de vier octetten in deze regel:

0028: 11 00 00 80

Wanneer u de hexadecimale gegevens in het gebeurtenis-id 50-bericht converteert naar de statuscode, moet u er rekening mee houden dat de waarden worden weergegeven in de little-endian-indeling. Omdat de statuscode de enige informatie is waarin u geïnteresseerd bent, is het mogelijk gemakkelijker om de gegevens in DE INDELING WOORDEN weer te geven in plaats van in BYTES. Als u dit doet, hebben de bytes de juiste indeling en zijn de gegevens mogelijk sneller te interpreteren.

Als u de weergave van de gegevens wilt wijzigen, selecteert u Woorden in het venster Gebeurteniseigenschappen . In de weergave Gegevenswoorden wordt de gegevenssectie van het voorbeeld als volgt gelezen:

() Bytes (.) 
Words 0000: 00040000 00560002 00000000 80040032 0010: 00000000 00000000 00000000 00000000 0020: 00000000 00000000 80000011

In dit geval is de uiteindelijke statuscode 0x80000011. Deze statuscode wordt toegewezen aan STATUS_DEVICE_BUSY en impliceert dat het apparaat momenteel bezet is. Dit was de reden dat de schrijfbewerking is mislukt.

Zie NTSTATUS-waarden gebruiken voor meer informatie over NT-statuscodes. De lijst met codes is ook beschikbaar in de Windows Software Developers Kit (SDK) in de NTSTATUS. H-bestand .

De code van de gebeurteniscategorie

In het voorbeeld wordt de code van de gebeurteniscategorie (de code die is gekoppeld aan gebeurtenis-id 50) weergegeven op de tweede regel. Deze regel begint met '0008:' en bevat de laatste 4 bytes van de volgende regel:

0008: 00 00 00 00 32 00 04 80

In dit geval is de foutcode 0x80040032, wat overeenkomt met IO_LOST_DELAYED_WRITE. Deze informatie wordt in de beschrijving van de gebeurtenis weergegeven als 'Verloren Delayed-Write gegevens'.