O que são F2FS e UBIFS?

F2FS e UBIFS são sistemas de arquivos projetados para dispositivos de memória flash baseados em NAND. Eles diferem na forma como lidam com a distribuição de escrita e a camada de tradução de flash (FTL).

F2FS (Flash-Friendly File System) é um sistema de arquivos que depende da FTL para gerenciar a distribuição de escrita. Ele é suportado pelo kernel Linux desde a versão 3.8. Ele oferece alguns recursos avançados, como compressão, criptografia nativa, verificação de integridade e recuperação de falhas .

UBIFS (Unsorted Block Image File System) é um sistema de arquivos que não usa FTL, mas sim opera diretamente sobre o dispositivo flash. Ele é suportado pelo kernel Linux desde a versão 2.6.27. Ele é projetado para lidar com falhas de energia, desgaste do flash e atualizações atômicas .

Neste post, vamos comparar os dois sistemas de arquivos em termos de desempenho, confiabilidade e uso de espaço. Também vamos mostrar como criar e montar partições F2FS e UBIFS em um dispositivo flash.

Desempenho

O desempenho de um sistema de arquivos depende de vários fatores, como o tipo e o tamanho do dispositivo flash, o tipo e o tamanho dos arquivos, o padrão de acesso e a carga de trabalho. Portanto, não há uma resposta definitiva sobre qual sistema de arquivos é mais rápido ou mais lento.

No entanto, alguns estudos comparativos foram realizados para avaliar o desempenho de F2FS e UBIFS sob diferentes cenários. Um desses estudos foi realizado por Lee et al. , que usaram um cartão SD eMMC como dispositivo flash e mediram o tempo de inicialização, o tempo de cópia, o tempo de compilação e o tempo de execução do benchmark IOzone.

Os resultados mostraram que F2FS teve um desempenho melhor do que UBIFS na maioria dos casos, exceto no tempo de cópia, onde UBIFS foi mais rápido. Os autores atribuíram essa vantagem ao fato de que UBIFS usa um algoritmo mais eficiente para alocar blocos livres no flash.

Outro estudo foi realizado por Kim et al. , que usaram um SSD SATA como dispositivo flash e mediram o tempo de inicialização, o tempo de cópia, o tempo de compilação e o tempo de execução dos benchmarks FIO e Postmark.

Os resultados mostraram que F2FS teve um desempenho melhor do que UBIFS em todos os casos, exceto no tempo de inicialização, onde UBIFS foi mais rápido. Os autores atribuíram essa vantagem ao fato de que UBIFS usa uma estrutura mais simples para armazenar os metadados do sistema de arquivos.

Confiabilidade

A confiabilidade de um sistema de arquivos está relacionada à sua capacidade de preservar a integridade dos dados e recuperar-se de falhas ou corrupções. Isso é especialmente importante para dispositivos flash, que estão sujeitos a falhas físicas, desgaste e perda súbita de energia.

Tanto F2FS quanto UBIFS implementam mecanismos para garantir a confiabilidade do sistema de arquivos. Alguns desses mecanismos são:

  • Jornalização: ambos os sistemas de arquivos usam um jornal para registrar as operações pendentes antes de aplicá-las ao flash. Isso permite que eles revertam as operações incompletas ou inconsistentes em caso de falha.
  • Checkpointing: ambos os sistemas de arquivos usam um ponto de verificação para armazenar o estado atual do sistema de arquivos em intervalos regulares. Isso permite que eles restaurem o sistema de arquivos para um estado consistente em caso de corrupção.
  • Garbage collection: ambos os sistemas de arquivos usam uma coleta de lixo para reutilizar os blocos inválidos ou obsoletos no flash. Isso permite que eles otimizem o uso do espaço e reduzam o desgaste do flash.
  • Bad block management: ambos os sistemas de arquivos usam um gerenciamento de blocos ruins para detectar e isolar os blocos defeituosos no flash. Isso permite que eles evitem a perda de dados e aumentem a vida útil do flash.

Além desses mecanismos, F2FS oferece alguns recursos adicionais para melhorar a confiabilidade do sistema de arquivos, como:

  • Verificação de soma: F2FS usa uma verificação de soma para verificar a integridade dos dados e dos metadados no flash. Isso permite que ele detecte e corrija erros de leitura ou gravação no flash.
  • Recuperação de falhas: F2FS usa uma recuperação de falhas para reparar o sistema de arquivos em caso de corrupção. Isso permite que ele recupere os dados perdidos ou danificados no flash.

Uso de espaço

O uso de espaço de um sistema de arquivos está relacionado à sua eficiência na alocação e liberação do espaço no flash. Isso é especialmente importante para dispositivos flash, que têm uma capacidade limitada e um custo elevado por unidade de armazenamento.

Tanto F2FS quanto UBIFS usam uma estrutura baseada em segmentos para organizar o espaço no flash. Um segmento é uma unidade lógica de alocação que consiste em vários blocos físicos. Cada segmento pode conter dados ou metadados do sistema de arquivos.

A principal diferença entre F2FS e UBIFS é que F2FS usa segmentos fixos, enquanto UBIFS usa segmentos variáveis. Isso significa que F2FS aloca e libera o espaço no flash em unidades fixas, enquanto UBIFS aloca e libera o espaço no flash em unidades variáveis.

Essa diferença tem implicações no uso de espaço do sistema de arquivos. Por um lado, F2FS pode ter um desperdício de espaço maior do que UBIFS, pois ele pode alocar mais espaço do que o necessário ou deixar espaço não utilizado dentro dos segmentos. Por outro lado, UBIFS pode ter uma fragmentação de espaço maior do que F2FS, pois ele pode alocar menos espaço do que o necessário ou deixar espaço não contíguo entre os segmentos.

A escolha entre segmentos fixos ou variáveis depende do tipo e do tamanho dos arquivos, do padrão de acesso e da carga de trabalho. Portanto, não há uma resposta definitiva sobre qual sistema de arquivos é mais eficiente ou mais desperdiçador.

Criação e montagem

Para criar e montar uma partição F2FS ou UBIFS em um dispositivo flash, é necessário instalar os pacotes f2fs-tools ou ubifs-utils, respectivamente. Esses pacotes fornecem as ferramentas necessárias para formatar e verificar o sistema de arquivos.

Para criar uma partição F2FS, use o comando mkfs.f2fs com as opções desejadas. Por exemplo:

mkfs.f2fs -l minhaetiqueta -O extra_attr,inode_checksum,sb_checksum /dev/sdxY

Nota: O exemplo acima é um conjunto mínimo recomendado de opções que ajudam o f2fs.fsck a detectar e corrigir alguns tipos de corrupção do sistema de arquivos. Consulte mkfs.f2fs (8) para todas as opções disponíveis.

Para criar uma partição UBIFS, use o comando mkfs.ubifs com as opções desejadas. Por exemplo:

mkfs.ubifs -m 4096 -e 252KiB -c 1000 -r /path/to/root/dir /dev/ubi0_0

Nota: O exemplo acima requer que o dispositivo flash seja previamente particionado com o comando ubiformat e anexado com o comando ubiattach . Consulte mkfs.ubifs (8) para todas as opções disponíveis.

Para montar uma partição F2FS ou UBIFS, use o comando mount com as opções desejadas. Por exemplo:

mount -t f2fs -o rw,noatime /dev/sdxY /mnt/f2fs
mount -t ubifs -o rw,noatime /dev/ubi0_0 /mnt/ubifs

Nota: O exemplo acima usa as opções rw e noatime para montar o sistema de arquivos com permissão de leitura e escrita e sem atualizar os tempos de acesso dos arquivos. Consulte mount (8) para todas as opções disponíveis.

Acesse a versão completa
Sair da versão mobile