AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 769942
Accepted
Craig Ringer
Craig Ringer
Asked: 2016-04-13 21:51:22 +0800 CST2016-04-13 21:51:22 +0800 CST 2016-04-13 21:51:22 +0800 CST

Melhorando as taxas de E/S para volumes com backup de snapshot do EBS

  • 772

Estou trabalhando com um sistema que obtém um conjunto de 42 instantâneos rotativos diários do EBS de cada um de seus numerosos (40) volumes para fins de recuperação de desastres. Os volumes EBS são agregados em um volume RAID. Um conjunto de instantâneos consistentes é obtido congelando o sistema de arquivos durante a obtenção dos instantâneos. Cada volume individual tem apenas 2 TiB.

Durante o teste de DR, descobriu-se que leva mais de 24 horas para copiar os mais de 20 TiB de dados do aplicativo (banco de dados PostgreSQL, muitas tabelas grandes) de volumes baseados em instantâneos do EBS criados a partir dos instantâneos e em novos não instantâneos. volumes de backup. Isso ocorre com um paralelismo considerável na cópia, graças a 8 rsyncs trabalhando ao mesmo tempo em diferentes subárvores.

Se os dados não forem copiados para novos volumes EBS, o aplicativo baseado em PostgreSQL será executado como uma mosca no mel por muitos dias, presumivelmente até que os blocos do volume EBS sejam sujos, de modo que agora eles estejam diretamente no volume EBS, não vindo de o instantâneo.

Por contast, uma cópia dos mesmos dados de um conjunto de volumes EBS sem backup de instantâneo para outro leva apenas algumas horas, e fazê-lo com hardware "real" de escala semelhante leva muito menos novamente.

Por que eu estaria vendo diferenças de desempenho tão extremas entre volumes com backup de instantâneo e volumes simples?

Minha hipótese é que ele está copiando na gravação, portanto, limpe os blocos que não foram alterados, pois o instantâneo deve ser buscado separadamente. Se houver uma pilha de 40 instantâneos fazendo backup do volume, presumivelmente ele está tendo alguma dificuldade em localizar rapidamente o bloco no instantâneo mais recente em que aparece e buscá-lo.

Existe alguma maneira de forçar a AWS a pré-preencher de forma eficiente e linear todo o novo volume do EBS a partir do instantâneo, em vez de fazer uma cópia preguiçosa na gravação, como realmente parece fazer?

Alguma outra ideia para contornar isso? Um conjunto de instantâneos para DR é muito menos útil se a recuperação demorar mais de um dia.

performance io snapshot amazon-web-services amazon-ebs
  • 1 1 respostas
  • 223 Views

1 respostas

  • Voted
  1. Best Answer
    Michael - sqlbot
    2016-04-14T03:49:33+08:002016-04-14T03:49:33+08:00

    A leitura do volume restaurado deve ser suficiente.

    Quando você cria um volume a partir de um instantâneo existente, ele carrega lentamente em segundo plano para que você possa começar a usá-lo imediatamente. Se você acessar um dado que ainda não foi carregado, o volume baixará imediatamente os dados solicitados do Amazon S3 e continuará carregando o restante dos dados do volume em segundo plano.

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html

    Curiosamente, parece que o uso sequencial de "leitura forçada" tem um dddesempenho melhor do que as leituras mais aleatórias que resultariam da leitura do sistema de arquivos, mas é claro que você pode fazer as duas coisas ao mesmo tempo - vá em frente, monte-o e comece a fazer o que quer que seja você precisa, mas também leia e descarte do dispositivo de bloco com dd.

    Essa aparente diferença faria sentido, principalmente se a infraestrutura de snapshot do EBS não armazenar realmente os blocos de snapshot em partes do tamanho de um "bloco" (4.096 bytes). Parece que seria um design bastante ineficiente, exigindo milhares de operações para cada megabyte.

    Pode melhorar ainda mais a restauração se você fizer várias leituras sequenciais começando em diferentes deslocamentos. Não testado, mas o gnu ddaparentemente pode "pular" blocos e começar a ler diferente do início.

    Mas você definitivamente não precisa criar volumes "novos". Depois que os blocos são carregados por uma leitura, eles estão "no" EBS e não no instantâneo.

    Se houver uma pilha de 40 instantâneos fazendo backup do volume, presumivelmente ele está tendo alguma dificuldade em localizar rapidamente o bloco no instantâneo mais recente em que aparece e buscá-lo.

    Realmente não deveria importar quantos instantâneos estavam fazendo o backup. Os dados não são armazenados "nos" instantâneos. Cada instantâneo contém o registro completo do que chamarei casualmente de "ponteiros" para todos os blocos de dados que o compõem (não apenas os alterados) e presumivelmente onde eles foram armazenados no armazenamento de apoio (S3) usado pela infraestrutura de instantâneo.

    Se você tiver instantâneos A, B e C obtidos em ordem do mesmo volume e excluir o instantâneo B, todos os blocos que mudaram de A para B, mas não de B para C, ainda estarão disponíveis para restaurar o instantâneo C, mas eles não são literalmente movidos de B para C quando você exclui o instantâneo B.

    Quando você exclui um snapshot, o EBS limpa o armazenamento de backup de blocos que não são mais necessários usando a contagem de referência. Os blocos que não são referenciados por nenhum instantâneo são tratados em segundo plano por um processo de várias etapas que primeiro os sinaliza como desnecessários, que para de cobrar por eles e, na verdade, os exclui alguns dias depois, quando o fato de que são genuinamente em refcount = 0 foi confirmado. Fonte.

    Por causa disso, o número de instantâneos que originalmente contribuíram com blocos para o volume restaurado não deve ter um motivo para afetar o desempenho.


    Informações adicionais possivelmente úteis: o seguinte não altera a precisão da resposta acima, mas pode ser útil em determinadas situações.

    No final de 2019, a EBS anunciou um novo recurso chamado Fast Snapshot Restore , que permite que os volumes criados em zonas de disponibilidade designadas a partir de snapshots designados sejam instantaneamente ativados sem a necessidade de aquecimento.

    Usando um depósito de crédito e com base no tamanho do instantâneo designado (ou seja, o tamanho do volume do disco do qual foi obtido) -- não no tamanho do volume de destino (que pode ser maior que o do instantâneo) -- isso O recurso permite criar volumes de 1024 G/tamanho por hora, portanto, um instantâneo de 128 GiB pode criar 8 volumes pré-aquecidos por hora. À medida que os instantâneos ficam menores, o número de volumes que você pode criar por hora, por instantâneo e por zona de disponibilidade é limitado a 10.

    O serviço também é surpreendentemente caro -- US$ 0,75 por hora, por snapshot, por zona de disponibilidade (!?) -- no entanto, isso pode não ser algo que você precisaria deixar rodando continuamente e, sob essa luz, parece ter algum valor potencial .

    Quando você ativa o recurso, a API do serviço pode informar quando ele está realmente pronto para uso e 60 minutos por TiB é o cronograma declarado para "otimizar um instantâneo" (o que, lendo nas entrelinhas, significa construir e aquecer um primário oculto volume dentro do EBS a partir do snapshot, que posteriormente será clonado pelo serviço para criar volumes EBS adicionais; o recurso parece ser realmente utilizável apenas após a conclusão desse estágio e os volumes criados a partir do mesmo snapshot antes desse ponto são apenas volumes comuns).

    Contanto que você tenha tempo para esperar pelo estágio de "otimização" e processos em vigor para encerrar o comportamento de restauração rápida quando não precisar mais dele (para evitar uma cobrança de cobrança inesperada muito grande), isso parece ter aplicabilidade em casos limitados casos de uso.

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve