Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo consente di risolvere i problemi relativi all'ID evento 50 messaggio di errore.
Sintomi
Quando Windows scrive informazioni sul disco fisico, potrebbe registrare i messaggi di evento seguenti nel registro di sistema:
ID evento: 50
Tipo evento: Avviso
Origine evento: Ftdisk
Descrizione: {Lost Delayed-Write Data} Il sistema stava tentando di trasferire i dati dei file dai buffer a \Device\HarddiskVolume4. L'operazione di scrittura non è riuscita e solo alcuni dati potrebbero essere stati scritti nel file.
Dati:
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
ID evento: 26
Tipo di evento: informazioni
Origine evento: Popup applicazione
Descrizione: Windows - Scrittura ritardata non riuscita: Windows non è riuscito a salvare tutti i dati per il file \Device\HarddiskVolume4\Programmi\Microsoft SQL Server\MSSQL$INSTANCETWO\LOG\ERRORLOG. I dati sono stati persi. Questo errore può essere causato da un errore dell'hardware del computer o della connessione di rete.Provare a salvare il file altrove.
Questi messaggi di evento indicano esattamente la stessa cosa e vengono generati per gli stessi motivi. Questo articolo è incentrato sull'ID evento 50.
Note
Il dispositivo e il percorso nella descrizione e i dati esadecimali specifici in questi messaggi variano a seconda delle circostanze esatte che hanno causato l'evento.
Ulteriori informazioni
Esistono diverse origini per un messaggio con ID evento 50. Ad esempio, si verifica un messaggio con ID evento 50 registrato da un'origine MRxSmb se si verifica un problema di connettività di rete che interessa il redirector. Questo articolo risolve i messaggi con ID evento 50 che fanno riferimento a problemi di scrittura del disco. Esaminare il messaggio id evento 50 per verificare che faccia riferimento a un problema di scrittura del disco e che questo articolo si applica.
In questo contesto Windows registra un messaggio con ID evento 50 se si verifica un errore generico quando Windows tenta di scrivere informazioni da Gestione cache del file system (non dalla cache a livello di hardware) al disco fisico. Questo comportamento di scrittura, noto come writeback o memorizzazione nella cache di scrittura ritardata, fa parte della funzione di gestione della memoria di Windows. La memorizzazione nella cache writeback migliora le prestazioni del sistema. Tuttavia, gli errori nelle operazioni di scrittura ritardata potrebbero causare una perdita di dati o integrità del volume.
In genere, quando un'applicazione invia una richiesta di scrittura a Windows, Gestione cache memorizza nella cache la richiesta di scrittura e segnala all'applicazione che la scrittura ha avuto esito positivo. Successivamente, Gestione cache scrive i dati nel disco fisico e quindi cancella la cache. Se si verifica un errore durante l'operazione di scrittura, i dati vengono persi quando Gestione cache cancella la cache.
Le applicazioni o i processi che scrivono dati non critici, ad esempio i processi di registrazione, usano Gestione cache per migliorare le prestazioni complessive. Le applicazioni che scrivono dati critici, ad esempio SQL Server, non usano Gestione cache. Tali applicazioni impostano un FILE_FLAG_NO_BUFFERING
flag per garantire che la transazione venga completata direttamente su disco. Le scritture da direct a disco non generano mai messaggi con ID evento 50.
Un messaggio con ID evento 50 è simile a un ID evento 9 o un messaggio con ID evento 11. Anche se l'errore non è grave come l'errore indicato dal messaggio ID evento 9 o ID evento 11, è possibile usare le stesse tecniche di risoluzione dei problemi per un messaggio id evento 50 come si fa per un ID evento 9 e un messaggio ID evento 11. Tenere tuttavia presente che qualsiasi elemento presente nello stack può causare scritture in ritardo perse, ad esempio driver di filtro e driver con mini-porta.
Decodifica dell'evento di esempio
La sezione Sintomi di questo articolo fornisce l'esempio seguente di un messaggio con ID evento 50:
ID evento: 50
Tipo evento: Avviso
Origine evento: Ftdisk
Descrizione: {Lost Delayed-Write Data} Il sistema stava tentando di trasferire i dati dei file dai buffer a \Device\HarddiskVolume4. L'operazione di scrittura non è riuscita e solo alcuni dati potrebbero essere stati scritti nel file.
Dati:
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
Come identificare il disco di destinazione
È possibile identificare il disco di destinazione dell'operazione di scrittura usando il collegamento simbolico elencato per l'unità nella sezione "Descrizione" del messaggio id evento, ad esempio: \Device\HarddiskVolume4.
Come decodificare la sezione dati
L'ID evento 50 messaggi (e anche l'ID evento 9, 11, 51 o simili messaggi "DISK") includono dati binari che è possibile usare per identificare il problema. Il messaggio include la sezione dati seguente:
Dati:
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
Note
Quando si convertono i dati esadecimali nel messaggio id evento nel codice di stato, tenere presente che i valori sono rappresentati nel formato little-endian.
Nella tabella seguente viene descritto l'offset rappresentato da ogni offset del messaggio.
OffsetLengthValues | Durata | Valori |
---|---|---|
0x00 | 2 | Non usato |
0x02 | 2 | Dimensioni dei dati di dump = 0x0004 |
0x04 | 2 | Numero di stringhe = 0x0002 |
0x06 | 2 | Offset delle stringhe |
0x08 | 2 | Categoria evento |
0x0c | 4 | Codice errore NTSTATUS |
0x10 | 8 | Non usato |
0x18 | 8 | Non usato |
0x20 | 8 | Non usato |
0x28 | 4 | Codice errore di stato NT |
Codice di errore di stato NT
Il codice di stato finale è la parte più importante di informazioni in un messaggio con ID evento 50. Si tratta del codice di errore restituito quando viene effettuata la richiesta di scrittura ed è l'origine chiave delle informazioni. Nell'esempio il codice di stato finale viene elencato in 0x28 alla sesta riga del set di dati. In inizia con "0028:" e include i quattro ottetti in questa riga:
0028: 11 00 00 80
Quando si convertono i dati esadecimali nel messaggio ID evento 50 nel codice di stato, tenere presente che i valori sono rappresentati nel formato little-endian. Poiché il codice di stato è l'unica informazione a cui si è interessati, potrebbe essere più semplice visualizzare i dati in formato WORDS anziché BYTE. In questo caso, i byte saranno nel formato corretto e i dati potrebbero essere più facili da interpretare rapidamente.
Per modificare la visualizzazione dei dati, selezionare Parole nella finestra Proprietà evento. Nella visualizzazione Parole dati la sezione dati dell'esempio legge come segue:
() Bytes (.)
Words 0000: 00040000 00560002 00000000 80040032 0010: 00000000 00000000 00000000 00000000 0020: 00000000 00000000 80000011
In questo caso, il codice di stato finale è 0x80000011. Questo codice di stato è mappato a STATUS_DEVICE_BUSY
e implica che il dispositivo è attualmente occupato. Questo è il motivo per cui l'operazione di scrittura non è riuscita.
Per altre informazioni sui codici di stato NT, vedere Uso di valori NTSTATUS. L'elenco dei codici è disponibile anche in Windows Software Developers Kit (SDK) in NTSTATUS. File H .
Codice della categoria di eventi
Nell'esempio il codice della categoria di eventi (il codice associato all'ID evento 50) viene elencato nella seconda riga. Questa riga inizia con "0008:" e include gli ultimi 4 byte della riga seguente:
0008: 00 00 00 00 32 00 04 80
In questo caso, il codice di errore è 0x80040032, che corrisponde a IO_LOST_DELAYED_WRITE
. Queste informazioni vengono visualizzate nella descrizione dell'evento come "Lost Delayed-Write Data".