Como posso reduzir a utilização de inodes em um sistema de arquivos ext4?

3

Resumo da minha necessidade

Colocamos uma grande quantidade de arquivos em um sistema de arquivos para análise posterior. Não podemos controlar quantos arquivos teremos e essa caixa precisa de acesso a todos eles.

Limitações inalteráveis

  1. Eu não posso alterar o limite do inode. É ext4, e é o padrão 4 bilionésio
  2. Sempre haverá muitos arquivos. A questão não é como reduzir o número de arquivos; é como contornar o limite de inodes de 4Bn.
  3. Não consigo usar o armazenamento de rede. Essa caixa reside em um data center e, devido à incrível quantidade de dados existentes, o armazenamento em rede não é uma opção.

Minhas ideias

  1. Eu poderia montar um arquivo como um dispositivo de loopback no local em que estamos colocando esses arquivos.
    • Pro: Simples de implementar
    • Con: Outra camada de complexidade, mas bem fina.
  2. XFS. Nenhum limite de inode
    • Pro: Isso obviamente apaga o problema.
    • Con: Não tenho certeza da flexibilidade que terei para fazer essa alteração em um sistema de produção.

Minha pergunta

Quais são alguns outros obstáculos para contornar essa difícil limitação? Existem outros benefícios / desvantagens para as abordagens que mencionei?

    
por Justin Force 19.09.2012 / 19:56

4 respostas

1

Eu sugiro que você use um servidor de rede com um sistema de arquivos projetado para lidar com o que você precisa. A primeira coisa que vem à mente seria algo que suporta zfs (freenas e nexenta, embora a versão gratuita do último tenha algumas limitações) ou se você puder comprá-lo, pode comprar algo como o netapp.

Estou menos familiarizado com o UFS disponível no freebsd etc., mas ouvi que isso também funcionaria.

    
por 19.09.2012 / 20:04
1

As informações estão faltando ...

  • Distribuição e versão do Linux.
  • Layout de disco (compartimentos de disco, controlador RAID, etc.).

ext4 não parece que faz o que você quer. Então não use ...

O XFS deve lidar bem com a sua situação. Está no kernel do Linux, mas a implantação depende muito da flexibilidade do seu disco. Há também alguns tuners XFS que ajudarão com sua carga ... Fora da caixa, ele não funcionará particularmente bem. Você vai querer as opções corretas de criação e montagem do sistema de arquivos . O resto depende da sua distro, se você estiver usando um controlador e sua carga de trabalho específica.

    
por 20.09.2012 / 04:12
0

Eu acho que você respondeu sua própria pergunta, a opção XFS parece ser a melhor (eu acho que você ainda tem um aumento de desempenho). A parte mais complexa deve ser, como converter EXT3 / 4 em XFS?

Se o seu armazenamento não é um RAID VD físico exclusivo (e você não fez o fs diretamente no BlockDevice - mkfs.ext4 / dev / sdb), então eu sugiro que você particione sua árvore fs em blocos menores e monte -los em conformidade, configurando seu software para gravar simultaneamente em ambos os locais e dividir as gravações, se possível. Ex.

  • / alotofsmallfiles / part1 - > / dev / ext4fs1
  • / alotofsmallfiles / part2 - > / dev / ext4fs2

Se não for possível dividir as gravações do aplicativo, você poderá criar um cron que mova os arquivos da partição ext4 para o novo XFS a cada n minutos

    
por 20.09.2012 / 01:54
0

Opções adicionais:

  • Crie sistemas de arquivos sob demanda conforme necessário. Particionar com o LVM em vez de anexar seus sistemas de arquivos diretamente ao MBR. Você pode montar um FS em qualquer lugar da sua árvore, assim você pode adicionar um novo sistema de arquivos quando e onde você precisar. Além disso, o LVM pode abranger partes de vários discos se você quiser, o que significa que limites físicos médios são menos significativos.

  • Loopback FSs não são uma idéia terrível , mas realmente por que você não usaria o LVM? Todas as vantagens, nenhuma das desvantagens.

  • Se você está apenas arquivando arquivos (ou seja, sem acesso aleatório), salvá-los diretamente em um arquivo .tar.gz não é uma má idéia. Eu também vi sistemas onde os arquivos são "temporariamente" temporariamente instalados em um SSD enquanto a estrutura está sendo construída, então são descarregados em um tar.gz em uma unidade giratória para armazenamento a longo prazo.

  • O XFS não é uma opção ruim, embora tenha suas próprias dificuldades também. Não é tão indulgente com as paradas impuras, por exemplo. Não que você espere perda de dados, mas às vezes requer mais intervenção prática.

De tudo isso, o envio automático de arquivos para arquivos .tar.gz é o meu favorito. Ele economiza espaço e inodes, e é simplesmente arrumado. Um grande número de arquivos pequenos torna os filsystems muito menos eficientes que o esperado.

    
por 20.09.2012 / 05:36