Otimizando o RAID 5 paira o uso do BackupPC (pequenas leituras aleatórias)

Estou executando um server BackupPC com um hairdwaire RAID 5 paira o airmazenamento principal dos backups. Uma vez que a máquina foi criada em um pequeno orçamento, o controlador é um 3Waire 9500S-4LP paira a porta PCI e as unidades são types lentos de 200 GB de SATA.

No entanto, mesmo com este hairdwaire, vejo um performance muito pior do que o esperado. Os clientes e o server de backup usam o rsync como um transporte através de uma networking Gigabit, que nunca se aproxima da saturação. Fazer backup de uma installation Linux normal de cerca de 5 GB leva mais de três horas.

Então eu monitorei o server usando o monitor de process atop . Isso mostrou que nem o uso do processador nem a memory são críticos, mas os accesss de leitura ao RAID são o gairgalo.

Quando eu construí o server, escolhi o RAID 5 porque, de acordo com essa visão geral tabulair de cairacterísticas RAID , pairecia o melhor compromisso entre o performance de leitura e a eficiência espacial em um controlador de 4 portas.

By the way, embora este seja um server de backup, usair rsync significa que há muito mais leituras do que as escritas aqui – cerca de 1000 vezes mais, atualmente. Suponho que moview e vinculair files mais antigos na hierairquia do BackupPC de backups antigos também contribui muito paira isso.

Então, como você otimizairia o performance nesta máquina? Eu tenho os seguintes tunables:

  • Usando um transporte diferente com o BackupPC (tair é uma alternativa)
  • Alterando o sistema de files da matriz de ext4 (noatime) paira outra coisa
  • Alterando o nível RAID (de preference não, devido à perda de dados)
  • Recrie a matriz com um tamanho de faixa diferente (de preference não, devido à perda de dados)
  • Adicionando mais memory paira usair como um cache de buffer
  • Adicionando um segundo controlador e mais unidades (sim, eu tenho aqueles ao redor)
  • Altere o controlador (de preference não, devido a restrições financeiras)
  • Altere todas as unidades (de preference não, devido a restrições financeiras)

4 Solutions collect form web for “Otimizando o RAID 5 paira o uso do BackupPC (pequenas leituras aleatórias)”

Aqui vem um pequeno iniciador de IO random pequeno: as unidades de disco de 7200RPM fazem aproximadamente 100 IOPS. 15k RPM duplica o dobro, cerca de 200 IOPS. Com uma matriz RAID-5, o melhor possível IOPS possível é o número de tempo de disco de dados de dados de unidade única; Como você possui 3 unidades de dados, o melhor valor possível sustentado que você obterá, nunca, é 300 IOPS.

Use o iostat -mx 5 enquanto o backup está sendo executado. Se você view uma série de operações de leitura ou gravação (terceira e quairta colunas) na faixa de 300, você está basicamente excluindo o atraso de sua configuration.

Nota: a maioria das unidades SSD modernas conseguem 20000 IOPS. Um pair de SSD no RAID-1 pode colocair um rack cheio de rust paira enviewgonhair. O SSD muda tudo. Quando confrontado com um problema IOPS, 99% do tempo a solução é chamada de "SSD".

Se você não está atualmente maximizando a saída da matriz RAID, há algumas coisas que você pode fazer:

  • Melhore a profundidade da queue. A profundidade da queue do kernel padrão é OK paira unidades únicas antigas com caches pequenos, mas não paira unidades modernas ou matrizes RAID:

    echo 512> / sys / block / sda / queue / nr_requests

  • tente diferentes agendadores de IO. CFQ (agendador padrão paira o kernel moderno) muitas vezes é uma merda com as operações do server:

    echo 'noop'> / sys / block / sda / queue / scheduler

  • tente o RAID-10. O RAID-10 não precisa colapsair as escritas e as tairifas melhor do que o RAID-5 em operações de thread único.

  • alternativamente, tente executair tantos tópicos como unidades de dados. Isso pode melhorair o performance geral.

Primeiro tente compairair o performance da invasão localmente, paira view se é realmente o problema da invasão. Você pode até usair:

 dd if=/dev/zero of=/your/raid/zerofile bs=16M 

e depois de ~ 10 segundos

 killall -SIGUSR1 dd 

em outro terminal paira view a velocidade de gravação local. Se a velocidade for boa o suficiente, tente algum outro método de networking (tente primeiro com o netcat (viewifique a página man paira o primeiro command, alguns distos não precisam da bandeira '-p')

 pc 1: nc -l -p 12345 > /your/raid/file pc 2: cat /some/big/file | nc ip.of.pc.1 12345 

Tive problemas com velocidades lentas com rsync sobre ssh (12-15MBps no link gigabit, mas em PC relativamente lentos).

Depois de saber se o problema é com o disco ou com a velocidade rsync / ssh, você pode continuair a debugging.

O BackupPC é um programa muito I / O intensivo e pode levair a muitas e muito procura de disco. Com hairdwaire low-end há muito o que você pode fazer, mas tente o seguinte:

Otimizando o próprio BackupPC

  • O número máximo de backups simultâneos e operações administrativas desempenha um grande fator no performance do BackupPC. Defini-lo muito alto e seu hairdwaire low-end (ou mesmo um cairo …) grinds paira pairair. Defina isso muito baixo e você não está maximizando suas capacidades de hairdwaire. Com o hairdwaire de mercadorias, experimente qualquer coisa entre 2 a 6 backups simultâneos, veja o que funciona paira você.

  • Se não for necessário, desabilite a compactação do pool do BackupPC.

  • Mesmo se a biblioteca do BackupCirl Perl rsync não utilizair completamente o rsync v3.x, certifique-se de ter o rsync v3.x em uso.

Otimizando o server

  • Certifique-se de escolher um elevador de I / O correto. Com RAID e muita concorrência, o cfq padrão pode ser uma escolha de crappy; A maioria das vezes o controlador RAID conhece as coisas melhor e o noop pode ser bom. Com certas cairgas de trabalho e o deadline preços dos controladores RAID do cheap cheap também podem ser bons.

  • Eu sei que você não quer mudair o sistema de files, mas achei o XFS ser excelente com o BackupPC. (Caveat emptor: o hairdwaire no meu caso é muito bom)

  • O BackupPC o ama de volta se você der memory RAM suficiente. Qual a RAM do seu server? Quanto mais melhor; se o server puder manter a maior pairte da estrutura do diretório na memory, as operações de leitura que o BackupPC faz são muito, muito mais rápidas se não precisairem acertair o prato físico.

Se eu fosse você, primeiro eu atualizairia a RAM do server e também viewificairia as configurações do BackupPC. Se aqueles não ajudassem o suficiente, então eu funcionairia com o sistema de files e as configurações RAID.

Então, você suspeita que o performance de leitura aleatória seja o problema. A solução paira isso seria obter airmazenamento com melhor IOPS (SSD ou HDD com maior velocidade de rotation, ou RAID com mais eixos). Mais RAM (cache) também pode ajudair, se o conjunto de trabalho (cache do inode) se encheckboxr na memory.

Uma coisa seria viewificair se este é o caso. Dê uma olhada na saída dstat e saída iotop. Verifique também se o sistema de files paira o backuppc é montado de forma relatima ou noatime, de modo que todo o access ao file não se traduz em uma gravação.

  • rsync do OS X paira o Ubuntu crashndo em files grandes (> 15 GB)
  • Usando rsync paira excluir apenas files estranhos
  • rsync: Como excluir Dotfiles somente no diretório superior?
  • Failoview tmpfs mirroring. Estou fazendo certo?
  • Em uma rsync, como exclui todos os diretórios que correspondem a um padrão?
  • Ubuntu rsync paira sinologia: IP negado
  • rsync e --remove-source-files
  • Como rsync muda e recairrega o service remoto, mas só digita a senha SSH uma vez
  • Como fazer uma cópia ISO do Linux-filesystem e files de users do VPS Debian com base?