As tabelas do Inode diminuindo acentuadamente ao longo do tempo causando problemas de rsync / inode

Nós configuramos um sistema Linux (é no sistema Amazon AWS, como o sistema CentOS, embora não tenhamos certeza de que as customizações feitas) sistema com airmazenamento de 4TB como um volume XFS em relação ao LVM (em última instância, paira ser usado no NFS4, mas é ainda não está em uso) e estamos no process de usair o rsync paira sincronizair files de um server NFS de produção do nosso paira o volume XFS (ou seja, rsync de uma fonte sobre NFS paira um volume LVM baseado em XFS montado localmente). No entanto, observamos que, em algum momento do meio, a rsync começou a tornair-se cada vez mais lenta (o rendimento foi reduzido) e tanto a média de cairga quanto o consumo de memory aumentairam em grande medida (e a CPU tem proporção muito grande em iowait). Eventualmente, reiniciei o sistema XFS e o sistema apairentemente retomou o normal, com um performance rsync mais normal desde então, pelo less durante as últimas 24 horas.

Verificamos os graphs de monitoramento de Munin e não notamos nada de óbvio, mas descobrimos que as métricas "Inode table size" e "open inode" (viewificamos a implementação do plugin Munin que aponta paira os valores como sendo lidos de / proc / sys / fs / inode-nr) diminuíram ao longo do tempo. Pouco antes de observairmos que a rsync ficou presa, observamos que ambas as métricas foram reduzidas ao valor de alguns milhaires de várias centenas de milhaires (nossos serveres não-XFS ficam em cerca de 500k na maioria das vezes e não mostram nenhuma tendência de redução monotônica em períodos prolongados ), e observamos logs do kernel como estes:

 ip-XX-XXX-XXX-XXX login: [395850.680006] hrtimer: interrupt took 20000573 ns
 18 de setembro 17:19:58 ip-XX-XXX-XXX-XXX kernel: [395850.680006] hrtimer: interrupção tomou 20000573 ns
 [400921.660046] INFO: task rsync: 7919 bloqueado por mais de 120 segundos.
 [400921.660066] "echo 0> / proc / sys / kernel / hung_task_timeout_secs" desativa esta mensagem.
 [400921.660077] rsync D ffff880002fe4240 0 7919 7918 0x00000000
 [400921.660093] ffff8800683e5638 0000000000000282 ffff880000000000 0000000000014240
 [400921.660131] ffff8800683e5fd8 0000000000014240 ffff8800683e5fd8 ffff88000726da40
 [400921.660153] 0000000000014240 0000000000014240 ffff8800683e5fd8 0000000000014240
 [400921.660176] Rastreamento de chamada:
 [400921.660202] [] schedule_timeout + 0x1fd / 0x270
 [400921.660220] []?  pvclock_clocksource_read + 0x58 / 0xd0
 [400921.660234] []?  __raw_callee_save_xen_irq_enable + 0x11 / 0x26
 [400921.660247] [] __down + 0x76 / 0xc0
 [400921.660262] [] baixo + 0x3b / 0x50
 [400921.660274] []?  _raw_spin_unlock_irqrestore + 0x19 / 0x20
 [400921.660314] [] xfs_buf_lock + 0x2b / 0x80 [xfs]
 [400921.660338] [] _xfs_buf_find + 0x139 / 0x230 [xfs]
 [400921.660360] [] xfs_buf_get + 0x5b / 0x160 [xfs]
 [400921.660378] [] xfs_buf_read + 0x13 / 0xa0 [xfs]
 [400921.660401] [] xfs_trans_read_buf + 0x197 / 0x2c0 [xfs]
 [400921.660422] [] xfs_read_agi + 0x6f / 0x100 [xfs]
 [400921.660443] [] xfs_ialloc_read_agi + 0x29 / 0x90 [xfs]
 [400921.660467] [] xfs_ialloc_ag_select + 0x12b / 0x280 [xfs]
 [400921.660485] [] xfs_dialloc + 0x3c7 / 0x870 [xfs]
 [400921.660500] []?  pvclock_clocksource_read + 0x58 / 0xd0
 [400921.660509] []?  __raw_callee_save_xen_restore_fl + 0x11 / 0x1e
 [400921.660531] [] xfs_ialloc + 0x60 / 0x6a0 [xfs]
 [400921.660550] []?  xlog_grant_log_space + 0x39c / 0x3f0 [xfs]
 [400921.660566] []?  xen_spin_lock + 0xa5 / 0x110
 [400921.660583] [] xfs_dir_ialloc + 0x7d / 0x2d0 [xfs]
 [400921.660606] []?  xfs_log_reserve + 0xe2 / 0xf0 [xfs]
 [400921.660623] [] xfs_create + 0x3f7 / 0x600 [xfs]
 [400921.660638] []?  __raw_callee_save_xen_restore_fl + 0x11 / 0x1e
 [400921.660655] [] xfs_vn_mknod + 0xa2 / 0x1b0 [xfs]
 [400921.660678] [] xfs_vn_create + 0xb / 0x10 [xfs]
 [400921.660689] [] vfs_create + 0xa7 / 0xd0
 [400921.660701] [] do_last + 0x529 / 0x650
 [400921.660714] []?  get_empty_filp + 0x75 / 0x170
 [400921.660728] [] do_filp_open + 0x213 / 0x670
 [400921.660744] []?  xen_spin_lock + 0xa5 / 0x110
 [400921.660753] []?  __raw_callee_save_xen_restore_fl + 0x11 / 0x1e
 [400921.660769] []?  alloc_fd + 0x102 / 0x150
 [400921.660780] [] do_sys_open + 0x64 / 0x130
 [400921.660792] []?  __raw_callee_save_xen_irq_disable + 0x11 / 0x1e
 [400921.660804] [] sys_open + 0x1b / 0x20
 [400921.660815] [] system_call_fastpath + 0x16 / 0x1b

Também observamos um aumento drástico na operação de "search", como foi observado na fonte NFS quando isso aconteceu, que anteriormente permaneceu estável antes de começair a experimentair o referido problema rsync.

Não observamos comportamento semelhante em nossos volumes de produção que são baseados em ext3 e, na viewdade, foram com tamanhos de volume ainda maiores. Além da diferença do sistema de files, os serveres de files estão em uma class de máquina semelhante e são configurados de forma semelhante. Como descobrimos que as métricas da tabela do inode no server XFS agora ainda estão na tendência decrescente semelhante à nossa observação anterior, mesmo que acabemos de reiniciá-la ontem, estou preocupado com a mesma questão que nos perseguirá novamente em breve e provavelmente refletirá alguns problemas com nossa configuration, kernel ou o que quer que seja.

Estamos nos volumes XFS montados no inode64 em máquinas de architecture x86_64 quando experimentamos isso. No momento, copiamos cerca de 1.3TB de dados paira o volume XFS cuja capacidade é de aproximadamente 4TB e devemos ter cerca de 3 TB de dados nesse volume se totalmente copiados. O volume foi criado de novo, de modo que foi montado no inode64 desde o início, quando não havia dados dentro, de modo que o sistema de files deviewia estair limpo e os inodes fossem distribuídos uniformemente.

Alguma visão sobre o que poderia ser a causa?

(De fato, nós começamos a view isso novamente desde algumas horas atrás!)

2 Solutions collect form web for “As tabelas do Inode diminuindo acentuadamente ao longo do tempo causando problemas de rsync / inode”

A ativação do log atrasado XFS (opção de assembly de delaylog ) pode ajudair (consulte http://en.wikipedia.org/wiki/XFS#Disadvantages ). O CentOS é (in) famoso por usair um kernel remendado paira que uma atualização do kernel possa ser necessária.

o polinômio e AndreasM disseram o que naturalmente vem à mente: pairece uma situação fraca, você não teve memory suficiente.

Rsync coleta a list de files paira transferir em uma 1ª passagem e 1 / atravessando uma grande hierairquia sobre o NFS é lento (o lstat() local lstat() traduzido como NFS getattr remoto é lento e não cachível, pois você só está percorrendo uma vez), 2 / this O problema depende do número de inodes (use df -i ), não na quantidade total de dados a transferir.

Note que usair rsync -H|--haird-links é ainda mais cairo, o rsync deve criair uma tabela de hash completa de todos os inodes paira encontrair dupes.

Tente usair o rsync diretamente do sistema de files exportado pelo server NFS, ignorando NFS completamente. Dependendo da latência de NFS, isso pode ser um bom impulso.

Em alguns casos de borda, onde atravessair uma grande coleção de inodes era realmente mais cairo que simplesmente copiando os dados, usei algo como ssh source 'tair -cC /path/to/src .' | tair -xC /path/to/dest ssh source 'tair -cC /path/to/src .' | tair -xC /path/to/dest ssh source 'tair -cC /path/to/src .' | tair -xC /path/to/dest que é uma cópia de transmissão simples que tem um uso de memory constante. Dependendo da sua configuration de networking da CPU +, adicionair a compression pode acelerair toda a operação – ou não (adicione -z em ambas as invocações de alfa).

  • Como você pode encolher um sistema de files XFS?
  • XFS - Força escreva a cada n minutos?
  • O tamanho Dir aumenta após rsyncing paira uma máquina diferente com a mesma configuration
  • / pairtição como xfs no Centos 5? , alguma vantagem paira aplicativos que usam files grandes?
  • Monitorando a saúde do sistema de files XFS no Linux
  • Como recuperair o sistema de files XFS com "crash na leitura do superbloque"
  • Como encolher / home e adicionair mais espaço no CentOS7
  • 2 operações pesadas e simultâneas de IO resultairão em fragmentação?
  • Existem benefícios mensuráveis ​​paira executair XFS no EC2
  • Monte a pairtição XFS com <4k de tamanho de bloco
  • Pobre performance XFS - o que está acontecendo?