Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo ajuda a solucionar a mensagem de erro da ID do evento 50.
Sintomas
Quando o Windows grava informações no disco físico, ele pode registrar as seguintes mensagens de evento no log do sistema:
ID do evento: 50
Tipo de Evento: Aviso
Fonte do evento: Ftdisk
Descrição: {Lost Delayed-Write Data} O sistema estava tentando transferir dados de arquivo de buffers para \Device\HarddiskVolume4. A operação de gravação falhou e apenas alguns dos dados podem ter sido gravados no arquivo.
Dados:
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 do evento: 26
Tipo de evento: Informações
Origem do evento: pop-up do aplicativo
Descrição: Windows - Falha na gravação atrasada: o Windows não pôde salvar todos os dados do arquivo \Device\HarddiskVolume4\Program Files\Microsoft SQL Server\MSSQL$INSTANCETWO\LOG\ERRORLOG. Os dados foram perdidos. Esse erro pode ser causado por uma falha no hardware do computador ou na conexão de rede.Por favor, tente salvar este arquivo em outro lugar.
Essas mensagens de evento significam exatamente a mesma coisa e são geradas pelos mesmos motivos. Este artigo se concentra na ID de evento 50.
Observação
O dispositivo e o caminho na descrição e os dados hexadecimais específicos nessas mensagens variam dependendo das circunstâncias exatas que causaram o evento.
Mais informações
Há várias fontes diferentes para uma mensagem de ID do evento 50. Por exemplo, uma mensagem de ID de evento 50 registrada de uma fonte MRxSmb ocorrerá se houver um problema de conectividade de rede que envolva o redirecionador. Este artigo aborda mensagens de ID de evento 50 que se referem a problemas de gravação de disco. Revise a mensagem de ID de evento 50 para verificar se ela se refere a um problema de gravação de disco e se este artigo se aplica.
Nesse contexto, o Windows registra uma mensagem de ID de evento 50 se ocorrer um erro genérico quando o Windows tentar gravar informações do Gerenciador de Cache do sistema de arquivos (não o cache no nível do hardware) no disco físico. Esse comportamento de gravação, conhecido como cache de gravação atrasada ou write-back, faz parte da função de gerenciamento de memória do Windows. O cache de write-back melhora o desempenho do sistema. No entanto, falhas nas operações de gravação atrasada podem causar perda de integridade de dados ou volume.
Normalmente, quando um aplicativo envia uma solicitação de gravação para o Windows, o Gerenciador de Cache armazena em cache a solicitação de gravação e relata ao aplicativo que a gravação foi bem-sucedida. Posteriormente, o Gerenciador de Cache grava os dados no disco físico e limpa o cache. Se ocorrer um erro durante a operação de gravação, os dados serão perdidos quando o Gerenciador de Cache limpar o cache.
Aplicativos ou processos que gravam dados não críticos, como processos de log, usam o Gerenciador de Cache para melhorar o desempenho geral. Aplicativos que gravam dados críticos, como SQL Server, não usam o Gerenciador de Cache. Esses aplicativos definem um FILE_FLAG_NO_BUFFERING
sinalizador para garantir que a transação seja concluída diretamente no disco. As gravações diretas em disco nunca geram mensagens de ID de evento 50.
Uma mensagem de ID de evento 50 é semelhante a uma mensagem de ID de evento 9 ou ID de evento 11. Embora o erro não seja tão grave quanto o erro indicado pela mensagem de ID de evento 9 ou ID de evento 11, você pode usar as mesmas técnicas de solução de problemas para uma mensagem de ID de evento 50 que você usa para uma mensagem de ID de evento 9 e uma mensagem de ID de evento 11. No entanto, lembre-se de que qualquer coisa que esteja na pilha pode causar gravações de atraso perdido, como drivers de filtro e drivers de miniporta.
Decodificando o evento de exemplo
A seção Sintomas deste artigo fornece o seguinte exemplo de uma mensagem de ID de evento 50:
ID do evento: 50
Tipo de Evento: Aviso
Fonte do evento: Ftdisk
Descrição: {Lost Delayed-Write Data} O sistema estava tentando transferir dados de arquivo de buffers para \Device\HarddiskVolume4. A operação de gravação falhou e apenas alguns dos dados podem ter sido gravados no arquivo.
Dados:
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
Como identificar o disco de destino
Você pode identificar o disco que foi o destino da operação de gravação usando o link simbólico listado para a unidade na seção "Descrição" da mensagem de ID do evento, por exemplo: \Device\HarddiskVolume4.
Como decodificar a seção de dados
As mensagens de ID de evento 50 (e também as mensagens de ID de evento 9, 11, 51 ou "DISK" semelhantes) incluem dados binários que você pode usar para ajudar a identificar o problema. A mensagem inclui a seguinte seção de dados:
Dados:
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
Observação
Quando você estiver convertendo os dados hexadecimais na mensagem de ID do evento para o código de status, lembre-se de que os valores são representados no formato little-endian.
A tabela a seguir descreve o que cada deslocamento dessa mensagem representa.
OffsetLengthValues | Comprimento | Valores |
---|---|---|
0x00 | 2 | Não usado |
0x02 | 2 | Tamanho dos dados de despejo = 0x0004 |
0x04 | 2 | Número de cadeias de caracteres = 0x0002 |
0x06 | 2 | Deslocamento para as cadeias de caracteres |
0x08 | 2 | Categoria de evento |
0x0c | 4 | Código de erro NTSTATUS |
0x10 | 8 | Não usado |
0x18 | 8 | Não usado |
0x20 | 8 | Não usado |
0x28 | 4 | Código de erro de status NT |
O código de erro de status do NT
O código de status final é a informação mais importante em uma mensagem de ID do evento 50. Esse é o código de erro retornado quando a solicitação de gravação é feita e é a principal fonte de informações. No exemplo, o código de status final é listado em 0x28 na sexta linha do conjunto de dados. Começa com "0028:" e inclui os quatro octetos nesta linha:
0028: 11 00 00 80
Ao converter os dados hexadecimais na mensagem de ID de evento 50 para o código de status, lembre-se de que os valores são representados no formato little-endian. Como o código de status é a única informação na qual você está interessado, pode ser mais fácil exibir os dados no formato WORDS em vez de BYTES. Se você fizer isso, os bytes estarão no formato correto e os dados poderão ser mais fáceis de interpretar rapidamente.
Para alterar a exibição dos dados, selecione Palavras na janela Propriedades do Evento . Na visualização Palavras de Dados, a seção de dados do exemplo tem a seguinte redação:
() Bytes (.)
Words 0000: 00040000 00560002 00000000 80040032 0010: 00000000 00000000 00000000 00000000 0020: 00000000 00000000 80000011
Nesse caso, o código de status final é 0x80000011. Esse código de status é mapeado e STATUS_DEVICE_BUSY
implica que o dispositivo está ocupado no momento. Esse foi o motivo pelo qual a operação de gravação falhou.
Para obter mais informações sobre códigos de status NT, consulte Usando valores NTSTATUS. A lista de códigos também está disponível no SDK (Software Developers Kit) do Windows, no NTSTATUS. H .
O código da categoria do evento
No exemplo, o código da categoria de evento (o código associado à ID do evento 50) é listado na segunda linha. Esta linha começa com "0008:" e inclui os últimos 4 bytes da seguinte linha:
0008: 00 00 00 00 32 00 04 80
Nesse caso, o código de erro é 0x80040032, que corresponde a IO_LOST_DELAYED_WRITE
. Essas informações aparecem na descrição do evento como "Dados de gravação atrasados perdidos".