Partilhar via


Transferência de dados descarregados do Armazenamento do Windows

Visão geral

A Transferência de Dados Descarregadas (ODX) é um recurso que acelera as operações de cópia e movimentação do servidor. Esse recurso está disponível a partir de Windows Server 2012 e tem suporte em volumes NTFS. Esta página descreve o ODX de uma perspectiva de dispositivo de armazenamento. Para obter informações relacionadas a sistemas de arquivos e minifiltros, consulte Transferências de dados descarregados.

O Windows ODX apresenta uma operação com tokens para mover dados em dispositivos de armazenamento. Um arquivo de origem e um arquivo de destino podem estar no mesmo volume, dois volumes diferentes hospedados pelo mesmo computador, um volume local e um volume remoto por meio do Bloco de Mensagens do Servidor (SMB2 ou SMB3) ou dois volumes em dois computadores diferentes por meio de SMB2 ou SMB3. O ODX foi introduzido em Windows 8.

O processo de uma operação de cópia de descarregamento em dispositivos de armazenamento compatíveis com ODX é mostrado no diagrama a seguir e descrito abaixo.

Operação de descarregamento de cópia usando ODX.

  1. O aplicativo de cópia envia uma solicitação de leitura de descarregamento para o gerenciador de cópias do dispositivo de armazenamento de origem.
  2. O gerenciador de cópia de origem retorna um token. O token é uma representação de dados (ROD) a ser copiada.
  3. O aplicativo envia uma solicitação de gravação de descarregamento com token para o gerenciador de cópias do dispositivo de armazenamento de destino.
  4. O gerenciador de cópias da matriz de armazenamento move os dados do dispositivo de origem para o dispositivo de destino e retorna o resultado de gravação de descarregamento para o aplicativo.

Identificar uma origem e um destino de ODX-Capable

Para dar suporte ao ODX, as matrizes de armazenamento devem implementar as especificações padrão T10 relacionadas para matrizes de armazenamento compatíveis com ODX, incluindo operações de leitura e gravação de descarregamento com tokens. Durante a enumeração do dispositivo LUN (uma inicialização do sistema ou um evento plug-and-play), o Windows coleta ou atualiza as informações de funcionalidade ODX do dispositivo de destino de armazenamento por meio das etapas a seguir.

  1. Funcionalidade de descarregamento de cópia de consulta.
  2. Reúna os parâmetros necessários para operações e limitações de descarregamento de cópia.

Por padrão, o Windows tentará o caminho ODX primeiro para uma operação de cópia se os LUNs de origem e de destino forem compatíveis com ODX. Se o dispositivo de armazenamento falhar na solicitação ODX inicial, o Windows marcará a combinação do LUN de origem e destino como um caminho "não compatível com ODX" e seguirá o caminho do código do arquivo de cópia herdado.

Operações de leitura/gravação do ODX

ApIs e adoção de comando síncrono

Uma solicitação de gravação de descarregamento grande é dividida usando o algoritmo a seguir para garantir uma gravação de descarregamento síncrona robusta.

  • Se o dispositivo de armazenamento de destino não fornecer um tamanho de transferência ideal, defina o tamanho de transferência ideal em 64 MB.
  • Se o tamanho de transferência ideal definido pelo dispositivo de destino for maior que 256 MB, defina o tamanho de transferência ideal em 256 MB.
  • O tamanho de transferência ideal especificado pelo dispositivo de destino de armazenamento é maior que zero e menor que 256 MB.

Os comandos SCSI de leitura e descarregamento de descarregamento síncronos reduzem a complicação de cenários de failover de cluster e MPIO. O Windows espera que o gerenciador de cópias conclua os comandos SCSI de leitura/gravação de descarregamento síncrono dentro de 4 segundos.

Os aplicativos podem usar APIs FSCTL, DSM IOCTL ou SCSI_PASS_THROUGH para interagir com matrizes de armazenamento e executar operações de descarregamento de cópia. Para evitar dados corrompidos ou instabilidade do sistema, o Windows restringe os aplicativos de gravar diretamente em um volume montado por um sistema de arquivos sem primeiro obter acesso exclusivo ao volume. Isso ocorre devido à condição de que uma gravação no volume possa colidir com as gravações do sistema de arquivos. Quando essas colisões ocorrem, o conteúdo do volume pode ser deixado em um estado inconsistente.

Operações de leitura de descarregamento

A solicitação de leitura de descarregamento de um aplicativo pode especificar o tempo de vida do token (tempo limite de inatividade). Se o aplicativo definir o tempo de vida do token como zero, o temporizador de inatividade padrão será usado como o tempo de vida do token. O gerenciador de cópias da matriz de armazenamento mantém e valida o token de acordo com suas credenciais e valor de tempo limite de inatividade. O host do Windows também limita o número de fragmentos de arquivo a 64. Se a solicitação de leitura de descarregamento consistir em mais de 64 fragmentos, o Windows falhará na solicitação de descarregamento de cópia e retornará à operação de cópia tradicional.

Depois de concluir a solicitação de leitura de descarregamento, o gerenciador de cópia prepara um token ROD (representação de dados) para o comando de resultado de leitura de descarregamento de recebimento. O campo token ROD especifica a representação pontual de dados do usuário e informações de proteção. O ROD pode ser dados do usuário no formato "abrir exclusivamente" ou "abrir com compartilhamento". O gerenciador de cópias pode invalidar o token de acordo com sua configuração de política ROD. Se o ROD estiver "aberto exclusivamente" para uma operação de descarregamento de cópia, o token ROD poderá ser invalidado quando o ROD for modificado ou movido. Se ROD estiver no formato "abrir com compartilhamento", o token ROD permanecerá válido quando o ROD for modificado. Um token ROD tem 512 bytes com o seguinte formato:

Tamanho em bytes Conteúdo do Token
4 Tipo de token ROD
508 ROD Token ID

Como o token ROD é concedido e consumido apenas pela matriz de armazenamento, seu formato é opaco, exclusivo e altamente seguro. Se o token for modificado, não validado ou expirado, o gerenciador de cópias poderá invalidar o token durante a operação de gravação de descarregamento. O token ROD retornado da operação de leitura de descarregamento tem um valor de tempo limite inativo para indicar o número de segundos que o gerenciador de cópia deve manter o token válido para o próximo uso de Gravação usando Token.

Operações de descarregamento de gravação

Depois de receber o token ROD do gerenciador de cópias, o aplicativo envia a solicitação de gravação de descarregamento com o token ROD para o gerenciador de cópias da matriz de armazenamento. Quando um comando de gravação de descarregamento síncrono é enviado para o dispositivo de destino, o Windows espera que o gerenciador de cópias conclua o comando dentro de 4 segundos. Se o comando for encerrado devido ao tempo limite do comando ou a outras condições de erro, o Windows falhará no comando. O aplicativo retorna à operação de cópia herdada de acordo com o código de status retornado.

A solicitação de gravação de descarregamento pode ser concluída com um ou vários comandos Receber Resultado de Gravação de Descarregamento. Se a gravação de descarregamento for parcialmente concluída, o gerenciador de cópias retornará com o atraso estimado e o número de contagens de transferência para indicar o progresso da cópia. O número de contagens de transferência especifica o número de blocos lógicos contíguos que foram gravados sem erros da origem para a mídia de destino. O gerenciador de cópias pode executar gravações de descarregamento em um padrão sequencial ou de dispersão/coleta.

Quando ocorre uma falha de gravação, o progresso da cópia conta blocos lógicos contíguos do primeiro bloco lógico para o bloco de falha. O aplicativo cliente ou o mecanismo de cópia retoma a gravação de descarregamento do bloco de falha de gravação. Quando a gravação de descarregamento for concluída, o gerenciador de cópia concluirá o comando Receber Informações do Token ROD com o atraso estimado de status atualização definido como zero e o progresso da contagem de transferência de dados em 100%. Se o resultado de gravação de descarregamento de recebimento retornar o mesmo progresso da contagem de transferência de dados, o Windows falhará na operação de cópia de volta para o aplicativo após quatro tentativas.

Um aplicativo cliente também pode executar a operação de descarregamento de gravação com um token ROD conhecido. Esse é um token ROD predefinido com um padrão de dados conhecido e um formato de token. Uma implementação comum é chamada de token zero. Um aplicativo cliente pode usar um token zero para preencher um ou mais intervalos de blocos lógicos com zeros. Se o token conhecido não tiver suporte ou for reconhecível, o gerenciador de cópias falhará na solicitação de gravação de descarregamento com "Token Inválido". Um token ROD conhecido é de 512 bytes com o seguinte formato:

Tamanho em bytes Conteúdo do Token
4 Tipo de token ROD
2 Padrão conhecido
506 ROD Token ID

Em uma gravação de descarregamento com um token ROD conhecido, um aplicativo cliente não pode usar uma leitura de descarregamento para solicitar um token conhecido. O gerenciador de cópia verifica e mantém os tokens ROD conhecidos de acordo com sua própria política.

Parâmetros de ajuste de desempenho da implementação do ODX

O desempenho do ODX não depende das velocidades de link de transporte da rede cliente-servidor ou da SAN (rede de área de armazenamento) entre o servidor e a matriz de armazenamento. Os dados são movidos pelo gerenciador de cópias e pelos servidores de dispositivo da matriz de armazenamento.

Nem todo descarregamento de cópia se beneficia da tecnologia ODX. Por exemplo, o gerenciador de cópias de uma matriz de armazenamento iSCSI de 1 Gbit pode concluir uma cópia de arquivo de 3 GB dentro de 10 segundos e a taxa de transferência de dados será maior que 300 MB por segundo. A taxa de transferência de dados já supera a velocidade máxima de transferência teórica da interface Ethernet de 1 Gbit.

Além disso, é possível que o desempenho da cópia para arquivos de um determinado tamanho não se beneficie da tecnologia ODX. Para otimizar o desempenho, o uso do ODX pode ser restrito a um tamanho mínimo permitido de arquivo e comprimentos máximos de cópia. Observação:

  • O Windows define um requisito mínimo de tamanho de arquivo para operações de descarregamento de cópia em 256 KB no mecanismo de cópia. Se um arquivo for menor que 256 KB, o mecanismo de cópia retornará ao processo de cópia herdado.

  • O host do Windows usa um tamanho máximo de transferência de token e uma contagem de transferência ideal para preparar o tamanho de transferência ideal de um comando SCSI de leitura ou gravação de descarregamento. O tamanho total da transferência em número de blocos não deve exceder o tamanho máximo de transferência de token. Se a matriz de armazenamento não relatar uma contagem de transferência ideal, o Windows usará 64 MB como a contagem padrão.

Os parâmetros de comprimento de transferência ideal e máximo especificam o número ideal e máximo de blocos em um descritor de intervalo. Os aplicativos de descarregamento de cópia podem estar em conformidade com esses parâmetros para obter o desempenho ideal de transferência de arquivo.

Tratamento de erros ODX e suporte de alta disponibilidade

Quando uma operação ODX falha em uma solicitação de cópia de arquivo, o mecanismo de cópia e o sistema de arquivos do Windows (NTFS) retornam à operação de cópia herdada. Se o descarregamento de cópia falhar no meio da operação de gravação de descarregamento, o mecanismo de cópia e o NTFS serão retomados com a operação de cópia herdada do primeiro ponto de falha na gravação de descarregamento.

Tratamento de erros ODX

O ODX usa um algoritmo robusto de tratamento de erros de acordo com os recursos da matriz de armazenamento. Se o descarregamento de cópia falhar em um caminho compatível com ODX, o host do Windows espera que o aplicativo faça fallback para a operação de cópia herdada. Neste ponto, o mecanismo de cópia do Windows já implementou o mecanismo de "fallback para cópia tradicional". Após a falha de descarregamento de cópia, o NTFS marca o LUN de origem e destino como não compatível com ODX por três minutos. Depois que esse período passar, o mecanismo de cópia do Windows tentará novamente a operação ODX. Uma matriz de armazenamento pode usar esse recurso para desabilitar temporariamente o suporte ao ODX em alguns caminhos durante situações altamente estressantes.

Failover ODX nas configurações do MPIO e do servidor de cluster

As operações de leitura e gravação de descarregamento devem ser concluídas ou canceladas do mesmo link de armazenamento (I_T nexus).

Quando um MPIO ou um failover de servidor de cluster ocorre durante uma operação de leitura ou gravação de descarregamento síncrono, o Windows manipula o failover da seguinte maneira:

  • No caso de um failover de caminho MPIO, o Windows repete o comando ODX com falha. Se o comando falhar novamente, Windows:

    • Inicia um failover de nó do servidor de cluster quando parte de um servidor de cluster.
    • Emite uma redefinição de LUN para o dispositivo de armazenamento e retorna uma falha de E/S status para o aplicativo se o failover do servidor de cluster não for uma opção.
  • Em uma configuração de servidor de cluster, o serviço de armazenamento de cluster faz failover para o próximo nó de cluster preferencial e, em seguida, retoma o serviço de armazenamento de cluster. O aplicativo de descarregamento deve estar ciente do cluster para poder repetir o comando de leitura/gravação de descarregamento após o failover do serviço de armazenamento de cluster.

Se o comando de leitura ou gravação de descarregamento falhar após o failover do caminho do MPIO e do nó de cluster, o Windows emitirá uma redefinição de LUN para o dispositivo de armazenamento após o failover. O dispositivo de armazenamento encerra todos os comandos pendentes e operações pendentes no LUN.

Atualmente, o Windows não emite comandos SCSI de leitura ou gravação de descarregamento assíncrono da pilha de armazenamento.

Modelos de uso ODX

ODX em disco físico, disco rígido virtual e disco compartilhado SMB

Para executar operações ODX, o servidor de aplicativos deve ter acesso ao LUN de origem e ao LUN de destino com privilégios de leitura/gravação. O aplicativo de descarregamento de cópia emite uma solicitação de leitura de descarregamento para o LUN de origem e recebe um token do gerenciador de cópias do LUN de origem. Os aplicativos de descarregamento de cópia usam o token para emitir uma solicitação de gravação de descarregamento para o LUN de destino. Em seguida, o gerenciador de cópia move os dados do LUN de origem para o LUN de destino por meio da rede de armazenamento. O diagrama a seguir ilustra os destinos de origem e destino mais básicos com suporte para transferências de dados descarregados.

Destinos de origem e destino ODX com suporte básico.

Operação ODX com um servidor

Em uma configuração de servidor único, o aplicativo de descarregamento de cópia emite as solicitações de leitura e gravação de descarregamento do mesmo sistema de servidor.

O servidor de origem (ou VM de origem) tem acesso ao LUN de origem (VHD ou Disco Físico) e ao LUN de destino (VHD ou Disco Físico). O aplicativo de descarregamento de cópia emite uma solicitação de leitura de descarregamento para o LUN de origem e recebe o token do LUN de origem. Em seguida, o aplicativo de descarregamento de cópia usa o token para emitir uma solicitação de gravação de descarregamento para o LUN de destino. O gerenciador de cópia move os dados do LUN de origem para o LUN de destino dentro da mesma matriz de armazenamento.

Operação ODX com dois servidores

Na configuração de dois servidores, há dois servidores e várias matrizes de armazenamento gerenciadas pelo mesmo gerenciador de cópias.

  • Um servidor (ou VM) é o host do LUN de origem e o outro servidor (ou VM) é o host do LUN de destino. O servidor de origem compartilha o LUN de origem com o cliente do aplicativo por meio do protocolo SMB e o servidor de destino também compartilha o LUN de destino com o cliente do aplicativo por meio do protocolo SMB. Assim, o cliente do aplicativo tem acesso ao LUN de origem e ao LUN de destino.
  • As matrizes de armazenamento de origem e destino são gerenciadas pelo mesmo gerenciador de cópias em uma configuração de SAN.
  • No sistema cliente do aplicativo, o aplicativo de descarregamento de cópia emite uma solicitação de leitura de descarregamento para o LUN de origem e recebe o token do LUN de origem e, em seguida, emite uma solicitação de gravação de descarregamento com o token para o LUN de destino. O gerenciador de cópia move os dados do LUN de origem para o LUN de destino em duas matrizes de armazenamento diferentes em dois locais diferentes.

Migração maciça de dados

A migração de dados em massa é o processo de importar uma grande quantidade de dados, como registros de banco de dados, planilhas, arquivos de texto, documentos digitalizados e imagens para um novo sistema. A migração de dados pode ser causada por uma atualização do sistema de armazenamento, um novo mecanismo de banco de dados ou alterações no aplicativo ou processo empresarial. O ODX poderá ser usado para migrar dados de um sistema de armazenamento herdado para um novo sistema de armazenamento, se o sistema de armazenamento herdado puder ser gerenciado pelo gerenciador de cópias do novo sistema de armazenamento.

  • Um servidor é o host do sistema de armazenamento herdado e o outro servidor é o host do novo sistema de armazenamento. O servidor de origem compartilha o LUN de origem como o cliente de aplicativo de migração de dados por meio do protocolo SMB e o servidor de destino compartilha o LUN de destino como o cliente de aplicativo de migração de dados por meio do protocolo SMB. Assim, o cliente do aplicativo tem acesso ao LUN de origem e de destino.
  • O sistema de armazenamento herdado e o novo sistema de armazenamento são gerenciados pelo mesmo gerenciador de cópias em uma configuração de SAN.
  • No sistema cliente do aplicativo de migração de dados, o aplicativo de descarregamento de cópia emite uma solicitação de leitura de descarregamento para o LUN de origem e recebe o token do LUN de origem e, em seguida, emite uma solicitação de gravação de descarregamento com o token para o LUN de destino. O gerenciador de cópia move os dados do LUN de origem para o LUN de destino em dois sistemas de armazenamento diferentes em dois locais diferentes.
  • A migração de dados em massa também pode ser operada com um servidor no mesmo local.

Host-Controlled transferência de dados em um dispositivo de armazenamento em camadas

Um dispositivo de armazenamento em camadas categoriza os dados em diferentes tipos de mídia de armazenamento para reduzir custos, aumentar o desempenho e resolver problemas de capacidade. As categorias podem ser baseadas em níveis de proteção necessários, requisitos de desempenho, frequência de uso e outras considerações.

A estratégia de migração de dados desempenha um papel importante no resultado final de uma estratégia de armazenamento em camadas. O ODX habilita a migração de dados controlada pelo host dentro do dispositivo de armazenamento em camadas. O exemplo a seguir descreve o ODX em um dispositivo de armazenamento de duas camadas:

  • O servidor é o host do sistema de armazenamento em camadas. O LUN de origem é o dispositivo de armazenamento De camada 1 e o LUN de destino é o dispositivo de armazenamento De camada 2.
  • Todos os dispositivos de armazenamento em camadas são gerenciados pelo mesmo gerenciador de cópias.
  • No sistema de servidores, o aplicativo de migração de dados emite uma solicitação de leitura de descarregamento para o LUN de origem e recebe o token do LUN de origem e, em seguida, emite uma solicitação de gravação de descarregamento com o token para o LUN de destino. O gerenciador de cópia move os dados do LUN de origem para o LUN de destino em dois dispositivos de armazenamento de camadas diferentes.
  • Quando a tarefa de migração de dados é concluída, o aplicativo exclui os dados do dispositivo de armazenamento De camada 1 e recupera o espaço de armazenamento.