Escolha do sistema de arquivos para GNU / Linux em um cartão SD


31

Eu sou um sistema embarcado baseado em ARM rodando em um cartão SD. Atualmente, é o Debian GNU / Linux usando ext3 como sistema de arquivos. Quando estou prestes a reinstalar o sistema, comecei a pensar em mudar para um sistema de arquivos mais compatível com flash. Ouvi falar de JFFS2, YAFFS2 e LogFS, e todos parecem adequados para o trabalho. Qual desses você recomendaria? Além disso, ouvi dizer que houve muitas melhorias no ext4 para melhor atender aos discos SSD; devo interpretar que a execução do ext4 deve estar bem? O que preciso pensar especialmente nesse caso?

Eu acho que o uso do sistema é importante. Mas, por uma questão de generalidade, imagine que ele faça coisas padrão na área de trabalho (mesmo que seja de fato um pequeno sistema baseado em ARM).

Obrigado por qualquer resposta.

Edit: A Wikipedia me diz (em uma declaração "necessária") que cartões de memória flash removíveis e unidades flash USB possuem controladores embutidos para executar o nivelamento de desgaste e a correção de erros, portanto, o uso de um sistema de arquivos flash específico não traz nenhum benefício . Portanto, estou inclinado a aderir a um sistema de arquivos ext.

Respostas:


18

Excelente artigo sobre sistemas de arquivos flash .

Uma pergunta importante ao falar sobre sistemas de arquivos flash é a seguinte: O que é o nivelamento de desgaste? Artigo da Wikipedia . Basicamente, em discos flash, você pode gravar um número limitado de vezes até que o bloco fique ruim. Depois disso, o sistema de arquivos (se não houver gerenciamento interno de nivelamento de desgaste no hardware, como no caso de SSDs geralmente existe) deve marcar esse bloco como inválido e evitar usá-lo mais.

Os sistemas de arquivos típicos (por exemplo, ReiserFS, NTFS, ext3 e assim por diante) são projetados para discos rígidos, que não têm essas limitações.

JFFS2

Inclui compressão e proteção elegante de nivelamento de desgaste.

YAFFS2

  • A única coisa que faz a diferença: tempos de montagem curtos, após uma quantidade bem-sucedida.
  • Implementa a propriedade write once: quando os dados são gravados em um bloco, não há necessidade de reescrevê-los. Isso é importante, pois reduz o desgaste.

LogFS

  • Não muito maduro, mas já incluído na árvore do kernel do Linux.
  • Suporta sistemas de arquivos maiores que o JFFS2 / YAFFS2 sem problemas.

UBIFS

  • Mais maduro que o LogFS
  • Suporte de gravação em cache
  • Sobre escalabilidade: artigo . Em discos grandes, melhor desempenho do que com o JFFS2

ext4

Se nenhum driver ou cartão (por exemplo, unidades SSD tiver nivelamento interno de desgaste, pelo menos geralmente) manipula o nivelamento de desgaste, o ext4 não é a melhor ideia, pois não se destina ao uso de flash bruto.

Qual é o melhor?

Obviamente, isso depende do uso e suporte. Pelo que li na Internet, eu recomendaria o UBIFS. Bom suporte para sistemas de arquivos grandes, fase madura de desenvolvimento, desempenho adequado e sem grandes desvantagens.


6
Obrigado, isso é muito informativo! No entanto, a "grande nota vermelha" do site UBIFS diz: "Uma coisa que as pessoas precisam entender ao lidar com o UBIFS é que o UBIFS é muito diferente de qualquer sistema de arquivos tradicional - ele não funciona em dispositivos de bloco (como discos rígidos). , Cartões MMC / SD, unidades flash USB, SSDs, etc.) O UBIFS foi projetado para funcionar com flash bruto, que não tem nada a ver com dispositivos de bloco. É por isso que o UBIFS não funciona com cartões MMC e similares - eles parecem dispositivos de bloco para o mundo exterior, porque eles implementam suporte a FTL (camada de tradução em Flash) no hardware ".
GSPR

3
Boa resposta, além disso, há o F2FS da Samsung, também sistema muito promissor, bastante novo.
Lzap 23/06

16
@gspr está correto: o SD possui uma camada de conversão de flash e JFFS2, YAFFS2, LOGFS e UBIFS foram projetados para flash não gerenciado . As opções para SD são sistemas de arquivos de dispositivos de bloco tradicionais, como ext2 / ext3 / ext4.
Robert Calhoun

@ Olli O NILFS2 é uma boa escolha para uma unidade SSD?
SebMa

12

Eu estava enfrentando o mesmo problema e fiz algumas pesquisas também. Eventualmente, eu decidi ir com o ext2.

Parece que alguns cartões SDHC implementam seu próprio nível de desgaste na camada de hardware. Se você conseguir se apossar de cartões SDHC com capacidade de adaptação ao desgaste.

Os sistemas de arquivos que fornecem nível de desgaste podem interferir no nível de desgaste no nível do Flash, de modo que pode ser ruim para o flash usá-los (o artigo da IBM citado acima fala sobre como o JFFS faz isso, é claro que isso não funcionará com nível de flash WL). Decidi que não precisava do registro no diário do ext3, pois não estou armazenando dados críticos e geralmente faço backup regularmente (cron).

Também montei / tmp e / var como tmpfs para acelerar as coisas. Se você tiver RAM suficiente, faça isso (mas não deixe de girar ou excluir seus logs regularmente)

DICA: Monte seus cartões SD ext com a opção "noatime"


Eu tive problemas com antigos cartões SD e ext2 (corrupção de dados) que desapareceram ao mudar para o XFS.
Alexander

1

Não sei se isso se encaixa no perfil do seu sistema, mas e quanto a usar um sistema de arquivos somente leitura e uma partição de leitura e gravação (ou um pendrive que pode ser substituído facilmente)? Dessa forma, você terá um disco rápido para o seu sistema operacional e poderá substituir facilmente o seu armazenamento rw quando se desgastar.

E depois há os unions. Pelo que entendi, ele "empilha" diferentes sistemas de arquivos (ou seja, um ro fs em cima de um rw fs). Se houver um acesso de leitura, o unionfs procurará na pilha até atingir o FS que contém o arquivo que procuramos. Ao escrever, o unionfs procura o primeiro FS gravável na pilha e o usa.

Também achei esses artigos que podem ser interessantes: http://www.linux-mag.com/id/7357/ http://www.linux-mag.com/id/7345/

E dois artigos com dicas para usar SSDs: http://danweinreb.org/blog/using-solid-state-disks-on-linux http://www.zdnet.com/blog/perlow/geek-sheet-a- tweakers-guide-to-solid-drives-ssds-e-linux / 9190


1
Note que não fui eu quem votou negativamente nesta resposta. Ele contém informações úteis em geral, mas não está relacionado ao que eu preciso. Obrigado mesmo assim :)
gspr

0

Selecionar (e dimensionar) o sistema de arquivos correto é mais importante do que qualquer outra coisa, não apenas por segurança, mas por vários outros motivos que as pessoas geralmente não reconhecem. Sem um sistema de arquivos, todo o processamento seria nulo.

Resposta muito bem colocada por Olli, e o OP é muito antigo, mas os sistemas de arquivos são o meu ponto de partida que eu não poderia ficar de fora. superuser.com não é algo que visitei antes, não sou administrador, mas me inscrevi e vou visitar mais.

As coisas mudaram muito desde 2011, mas mesmo naquela época eu formatei os cartões USB FAT e usei drives USB para transportar arquivos 4Gb +. O motivo, é claro, era a compatibilidade, não a segurança (tanto para S no SD, mas eu uso senhas no meu 7z), e eu nunca carreguei nada maior que um ISO de CD, eles eram principalmente para scripts SQL e diferenças diárias de hora em hora. instantâneos de banco de dados criptografados espremidos até quase a morte pelo 7-Zip.

Hoje em dia eu uso qualquer SD mais rápido do que qualquer um que eu conheça. Eu tenho um pendrive em algumas máquinas de produção no meu empregador para backup automatizado por hora, FAT formatado. Eu fico de olho neles todos os dias e - você adivinhou - faça backup deles religiosamente à mão (eles são seguros para a construção de itens ITAR). O SSD nivelou parte do campo de jogo, mas ainda não confio neles tanto quanto no HD comum e o SD é pior que o óptico. Eles vão mal em um instante e a perda é total.

Qualquer sistema de arquivos que convida o sistema operacional host a gravar aleatoriamente nele (NTFS, Lixeira) é uma má notícia para um SD. Além disso, desmontar ajuda muito, nenhum sistema operacional tentará acessar o armazenamento desmontado; portanto, qualquer sistema de arquivos funcionará desde que o SD inclua um script para desmontar a si próprio (um dos arquivos padrão em todos os SDs do meu).

A leitura de um SD ainda é lenta hoje, então eu recomendaria algo como despejo de disco (dd) para capturar a imagem inteira ao espelhar, em vez de arquivo por arquivo. O dd também avisa quando há algo errado, para que o seu gerenciador de arquivos não funcione no kaboom.

Obviamente, se seu objetivo principal é prolongar a vida útil de alguns centavos, você está tratando seus negócios da maneira errada. Faço o que não faço para prolongar a vida de um SD, mas para evitar que ele fique ruim quando não estou assistindo, e há a diferença.

Evito ext4 ou qualquer FS de registro no diário em SD porque não me importo quando eles escrevem mal para eles, mas com certeza dói quando um dia depois eu não consigo lê-los!


2
Desculpe, mas isso realmente não responde à pergunta. É um ensaio interessante sobre o uso de mídia removível, mas não sobre a escolha do sistema de arquivos.
Suspeito #

Eu queria comentar, mas não podia. O post é um pouco detalhado, o que eu recomendei não era que o OP estivesse considerando, eu recomendei o FAT. Eu deveria ter composto com mais foco e clareza, com certeza.
arco-abit

Por que Any file system which invites the host OS to write randomly to it (NTFS, Recycle Bin) is bad news for an SD.? Não consiste em discos rotativos, portanto, onde quer que você leia / escreva, não importa, eu acho. E, NTFS escreve contíguo - o que leva à fragmentação. «Armazéns aleatórios de arquivos» é, por exemplo, sobre EXTα.
Hi-Angel

0

Como resposta à recomendação para usar o fat (32?): Fiz alguns testes de desempenho e descobri que o fat32 tem um tempo muito previsível para gravar um arquivo (2 GB precisa de duas vezes de 1 GB + deslocamento, 3 GB precisa de tempos de árvore de 1 GB + deslocamento). O desempenho do ext4 é um pouco melhor que o ext3. O ext3 e o ext4 às vezes são rápidos, mas às vezes precisam de algum tempo extra para gravar os arquivos de diário no disco (sem comportamento linear no tempo de gravação). Todos os testes foram feitos com fsync () para garantir que o arquivo seja realmente gravado no disco. Eu realizei alguns testes com sync (). Eles resultam em um desempenho de gravação muito ruim. Então, voltei para fsync (). Eu verifiquei se fsync () é suficiente. Portanto, liguei o dispositivo sem desligar o sistema ou removi o cartão SD sem desmontar. Em nenhum caso, os arquivos gravados ou a estrutura de diretórios foram danificados.

Atenciosamente, Thomas


1
A comparação é injusta. Você comparou o FAT sem registro no diário com o registro no diário EXT3 / 4. Você deve comparar FAT vs EXT2. E apenas a FYI, o sistema de arquivos que foi pré-formatado pelo fabricante geralmente possui os tamanhos / compensações de blocos mais ideais. Ou seja, depois de reformatar o sistema de arquivos, existe a possibilidade de o IO levar mais tempo do que o original.
Hi-Angel

0

se você quiser cartão SD sem perda, sugiro usar BTRFSporque:

BTRFS é um novo sistema de arquivos comparado ao EXT criado originalmente pela Oracle em 2007.

Traz novos recursos para os sistemas de arquivos tradicionais:

  • Clonagem / instantâneos
  • Diferenças (envio / recebimento)
  • Quotat
  • União
  • Auto-recuperação (com períodos de confirmação padrão de 30 anos)

para mais explicações e comparações, consulte este pdf

para novas comparações, consulte este site

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.