Como criar um drive virtual, usando o comando dd no Linux

Drives virtuais podem ter várias utilidades.
Podem funcionar como partições separadas ou simples pastas — só que apartadas do sistema de arquivos hospedeiro ou host.
Um uso comum para um sistema de arquivos virtual é fazer dele um espaço de troca ou SWAP.
Você também pode clonar ou transferir o conteúdo de um drive físico para um drive virtual, como backup ou um armazenamento intermediário a ser transferido para outro drive físico.
Como ferramenta, o comando dd é muito flexível e pode ter uma gama variada de aplicações.
Se você fizer uma busca por “comando dd”, vai encontrar vários artigos mencionando alguma tarefa a ser realizada com ele. Se quiser, você também pode clicar na tag dd, para dar uma olhada no que a gente já andou falando sobre o assunto.

Crie um drive virtual com um tamanho determinado

Vamos começar por criar um espaço (arquivo), dentro do qual vamos inserir o nosso sistema de arquivos mais tarde.
No meu exemplo, vou mostrar como criar um arquivo com 700 MB (mais ou menos o tamanho de um CD de dados):


dd if=/dev/zero of=meudrive700 bs=4K count=175000

175000+0 records in                                                 
175000+0 records out                                                
716800000 bytes (717 MB, 684 MiB) copied, 4,84865 s, 148 MB/s

Note que o tamanho final do arquivo é mostrado em MB (megabytes) e MiB (mibibytes).
Veja o que foi feito:

  • if=/dev/zero — abreviatura de input file (ou arquivo fonte), pega caracteres 0x00 para preencher o espaço do novo drive.
  • of=meudrive700 — abreviatura de output file (ou arquivo de destino), nomeia o arquivo que vai receber o novo drive virtual. Use o nome que vocẽ quiser aqui.
  • bs=4K — abreviatura de block size (ou tamanho de cada bloco de dados), fornece o tamanho a ser usado para cada bloco. No nosso caso, 4096 bytes.
  • count=175000 — conta cada inserção de blocos 175000 vezes e encerra o comando.
    Para chegar a este número fizemos um cálculo: 700.000 Kb / 4 Kb (blocksize)

O /dev/zero é um arquivo especial, que provê caracteres ‘null’ (0x00).
Uma de suas funções é prover uma string de caracteres “neutros” para inicializar um sistema de armazenamento

Com o comando ls, já é possível observar o nosso novo arquivo:


ls -lh meudrive*

-rw-rw-r-- 1 justincase justincase 684M Mai 30 18:22 meudrive700 

Como criar um sistema de arquivos dentro do drive virtual

Para poder ser visto como “verdadeiro drive”, ele precisa comportar um sistema de arquivos.
Para isto, vamos usar o comando mkfs (make filesystem), que também aceita várias configurações e parâmetros de execução.
Se você deseja um sistema de arquivos swap, use o mkfs assim:


mkfs.btrfs --label="meudrive700" meudrive700

btrfs-progs v4.4                                                    
See http://btrfs.wiki.kernel.org for more information.              
                                                                    
Label:              meudrive700                                     
UUID:               8acf7d75-935c-4713-b211-aeeb0c7597ce            
Node size:          16384                                           
Sector size:        4096                                            
Filesystem size:    683.59MiB                                       
Block group profiles:                                               
  Data:             single            8.00MiB                       
  Metadata:         DUP              42.12MiB                       
  System:           DUP              12.00MiB                       
SSD detected:       no                                              
Incompat features:  extref, skinny-metadata                         
Number of devices:  1                                               
Devices:                                                            
   ID        SIZE  PATH                                             
    1   683.59MiB  meudrive700

Se você prefere o sistema de arquivos padrão de muitas distribuições, o ext4, use o comando assim:


mkfs.ext4 -L="meudrive700" meudrive700

mke2fs 1.42.13 (17-May-2015)                                        
meudrive700 contains a btrfs file system labelled 'meudrive700'     
Proceed anyway? (y,n) y                                             
fs_types for mke2fs.conf resolution: 'ext4'                         
Discarding device blocks: done 
Creating filesystem with 175000 4k blocks and 43776 inodes          
Filesystem UUID: 52117614-5508-4e8e-866a-1f9684410582               
Superblock backups stored on blocks:                                
        32768, 98304, 163840                                        
                                                                    
Allocating group tables: done                                       
Writing inode tables: done                                          
Creating journal (4096 blocks): done                                
Writing superblocks and filesystem accounting information: done    

Como já havia um sistema de arquivos habitando aquele espaço, o mkfs faz uma advertência e pede confirmação (y/n) para continuar.
Há várias outras possibilidades de formatação, com o mkfs. Leia mais sobre sistemas de arquivos no Linux para descobrir mais.
Leia também sobre as diferenças entre os sistemas de arquivos BTRFS e EXT4.

Como montar o meu novo drive virtual


sudo mount -t ext4 meudrive700 /mnt/
ls -lah /mnt/                         

total 20K                                                           
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .                          
drwxr-xr-x 1 root root  258 Mai 28 10:05 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

O Linux enxerga este arquivo como um dispositivo físico. Você pode gravar o que quiser dentro deste drive.

Para o UNIX (e o Linux também, claro), tudo é arquivo.

Como automatizar a montagem do meu drive virtual

Se você reiniciar a máquina, neste momento, não vai perder os eventuais dados que tiver gravado lá.
Contudo, vai precisar montar o drive, novamente, toda vez que bootar a máquina — caso queira usá-lo.
Se vocẽ acha incômodo fazer o procedimento manualmente, talvez prefira automatizá-lo. Para isso, basta inscrever o comando de montagem no fstab.
Abra o arquivo /etc/fstab e adicione as linhas


# montando o meu drive virtual
/home/justincase/meudrive700    /mnt/meudrive700        ext4    default     0     2

Acima, é necessário informar no fstab o caminho completo do arquivo que contém o meu drive (/home/justincase/meudrive700).
Optei também por criar um subdiretório dentro do /mnt para abrigar um ponto de montagem para o meu drive virtal (/mnt/meudrive700) — apenas achei que ficaria mais organizado assim.
O restante dos parâmetros na linha de comando, foram copiados da linha que monta o meu diretório /home: ext4 default 0 2.
Grave as alterações feitas no fstab e saia do editor.
Use o comando mount -a (para montar todas entradas do fstab, que ainda não estejam montadas):


sudo mount -a

[sudo] password for justincase:                                     

Ao rodar o ls, no drive, é possível notar que os arquivos dele pertencem ao root e, portanto, não será possível gravar nada lá dentro.


ls -lah /mnt/meudrive700/

total 20K
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .
drwxr-xr-x 1 root root   22 Mai 31 09:38 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

Use o chown para atribuir o drive ao seu usuário:


sudo chown justincase:justincase /mnt/meudrive700/
# agora, crie um arquivo em branco, só para testar:
touch /mnt/meudrive700/apague.me

Liste os arquivos do diretório, para ver se houve sucesso:


ls -lah /mnt/meudrive700/


total 20K
drwxr-xr-x 3 justincase justincase 4,0K Mai 31 10:24 .
drwxr-xr-x 1 root       root         22 Mai 31 09:38 ..
-rw-rw-r-- 1 justincase justincase    0 Mai 31 10:24 apague.me
drwx------ 2 root       root        16K Mai 30 18:37 lost+found

Se quiser entender melhor o funcionamento da ferramenta de criação de arquivos de sistemas, leia o post Como formatar drives com o mkfs.

Como converter uma partição EXT4 para BTRFS

É possível converter partições EXT4 para o mais novo padrão BTRFS fazendo uso de um kit de ferramentas, presente no pacote btrfs-tools.
O EXT4 é um sistema de arquivos que vem de uma longa linhagem, no Linux.
Ele é estável, confiável, seguro e ainda é moderno.

Eu uso o BTRFS há aproximadamente 3 anos, em meus laptops de trabalho — ainda assim, continuo recomendando o EXT4 para quem precisa de mais segurança para seus arquivos.
Minha opinião é de que o sistema é estável o suficiente para qualquer aplicação, que não seja ambiente de servidores — ao mesmo tempo mantenho a minha política de fazer backups o tempo todo.

O fato é que novas tecnologias de armazenamento estão se consolidando e, como não existiam na época da criação do EXT, os desenvolvedores têm feito adaptações para dar suporte aos novos recursos de hardware.
As possibilidades de fazer adaptações estão se esgotando, contudo.
É muito improvável que desenvolvedores invistam tempo no EXT5.
Existem outros sistemas de arquivos, em processo avançado de desenvolvimento que concorrem para ocupar o seu lugar. O BTRFS é um deles.
Leia mais sobre as diferenças entre o EXT4 e o BTRFS.

Quando você não deve converter o sistema de arquivos EXT4 para BTRFS

Quem está com o backup “pendente”, obviamente, deveria priorizar este procedimento, antes de ir “brincar” no sistema de arquivos.
A wiki oficial do kernel Linux avisa que nas séries 4.0 de kernels este recurso não é mais tão usado e é muito pouco testado.
A página avisa, ainda, que há relatos de conversões que não deram resultados confiáveis.
Tudo bem. Acidentes acontecem.
Se você está resolvido a fazer a conversão, certifique-se de ter feito seus backups antes.
A melhor alternativa, quando possível, é formatar o dispositivo e começar a usar o novo sistema de arquivos do zero, de um ambiente limpo.

Como instalar o btrfs-tools

O pacote pode ser encontrado nos repositórios da maioria das distribuições GNU/Linux.
Use o apt show, no Debian e no Ubuntu, para obter mais informações sobre o pacote:

apt show btrfs-tools

Para instalar, use o install:

sudo apt install btrfs-tools

Como fazer a conversão para BTRFS

Depois da instalação do pacote btrfs-tools, a ferramenta de conversão – btrfs-convert – já estará disponível:
A sugestão é começar com uma verificação de rotina do dispositivo a ser convertido — afinal, a gente não quer que possíveis erros existentes danifiquem todo o processo, não é?

sudo fsck.ext4 -f /dev/xxx

Em seguida, faça a conversão:

sudo btrfs-convert /dev/xxx

Espero que tudo funcione bem para você.
Caso tenha problemas ou queira comentar sobre o assunto, use a sessão de comentários.

Como formatar um drive no Linux

Qualquer distro GNU/Linux provê uma gama de métodos para formatar seus dispositivos de armazenamento, tanto os externos (USB, p. ex.) quanto os internos.
Neste post, vou mostrar um método bastante comum, no ambiente gráfico, com o utilitário de discos.
Sei que as ferramentas gŕaficas são mais cômodas para alguns usuários. Caso você queira conhecer o mkfs, uma ferramenta CLI para formatar drives, clique aqui.
dispositivos de armazenamento de massa padrão
Antes de começar a fazer qualquer coisa, fica a advertência para o fato de que o processo de formatação apaga definitivamente todos os arquivos do dispositivo em que for aplicado.
Portanto, faça tudo com atenção redobrada, para evitar acidentes e aproveite para verificar se os seus backups estão todos em dia.
Os procedimentos foram testados em uma máquina Ubuntu 14.04 LTS Trusty Tahr, rodando sob o ambiente gráfico Unity e Debian 9 Stretch sob o GNOME.

Como formatar um dispositivo usando o utilitário gráfico

Nestas duas distros a ferramenta padrão para lidar com a formatação é o Disks ou Gnome-disk-utility.
Use o Dash para encontrar o aplicativo — pressione a tecla Super (que tem o logo Windows) e digite “discos” ou “disk” para fazer a busca.
gnome dash disk utility
O aplicativo possui uma série de opções para dispositivos de armazenamento. Entre as principais:

  • ele pode montar e desmontar qualquer dispositivo anexado — alguns podem precisar de privilégios administrativos
  • ele pode ser usado para particionar ou editar as partições existentes
  • criar ou recuperar uma imagem do seu disco

Há outras funções possíveis. Neste artigo, contudo, vamos tratar apenas de como formatar um drive.
Na janela, à esquerda, selecione o dispositivo sobre o qual deseja trabalhar — seja cuidadoso(a).
Logo abaixo da seção Volume, há um set de botões.
Através destes botões, é possível parar/desmontar um drive, excluir uma partição, formatar etc.
gnome-disk-utility drive selection
Selecione o botão para formatar.
system run high contrast icon
É possível entrar no painel de formatação também através do botão Mais ações, no canto superior direito da tela do aplicativo — a partir do qual é possível selecionar quase todas as mesmas ações.
A opção de Formatar é a primeira do menu Mais ações.
gnome disk utilities format menu
Vamos falar um pouco sobre cada um dos itens deste painel:

  • Apagar — você pode sobrescrever dados ou não.
    A primeira opção (não sobrescrever) é a mais rápida e, na verdade, em vez de “apagar” os dados contidos na mídia de armazenamento, apenas marca seu espaço como disponível para novas gravações.
    A segunda opção (sobrescrever) é a mais segura e garante que, por exemplo, seja mais difícil a alguém com conhecimento recuperar e acessar informações no dispositivo.
    Se trata-se de um pendrive ou cartão de memória, no qual você costuma armazenar dados sensíveis e você deseja entregá-lo a outra pessoa, é recomendado usar esta opção. Ela é mais demorada, por que, além de apagar, escreve um monte de dados aleatórios sobre o espaço vazio, para tornar mais difícil a recuperação dos dados anteriores.
  • Tipo — No Linux você não está restrito a menos de meia dúzia de possibilidades de sistemas de arquivos.
    linux format disk vfat filesystem

    1. A opção FAT (ou VFAT) é a mais “fraca” e insegura. É um sistema de arquivos velho e ultrapassado.
      Por outro lado, se você está formatando um dispositivo de baixa capacidade de armazenamento, para gravar músicas, fotos e vídeos e ser lido em qualquer equipamento, o FAT é, atualmente, o único sistema de arquivos que você irá poder usar.
      Com esta opção de formatação, o seu pendrive ou cartão de memória poderá ser lido em outros computadores, em smartTVs, no Playstation 3, em aparelhos de som (inclusive o do carro) etc.
    2. A opção NTFS tem uma universalidade reduzida, mas permite que você possa ler o dispositivo em computadores Windows.
    3. A opção Ext4 faz uso de um sistema de arquivos avançado e muito estável. Se você pretende fazer seus backups e precisa de um sistema de arquivos confiável, este é o melhor.
    4. A opção com criptografia LUKS é a mais indicada para quem irá armazenar dados sensíveis, pessoais ou profissionais. Neste caso, a criptografia LUKS oferece um nível de segurança elevado.
    5. Para finalizar, se nenhuma das opções anteriores satisfizer, personalize a sua escolha.
      Veja aqui uma relação detalhada de sistemas de arquivos específicos para mídias flash, SSD, NAND etc.
  • Nome — escolha um nome para identificar a sua unidade e ficar mais fácil saber seu conteúdo. Note que há limites de caracteres, dependendo do sistema de arquivos escolhido. O FAT permite nomes com até 8 caracteres, por exemplo.

Depois de escolher o nome do volume, inicie o processo de formatação, clicando no botão Formatar.
Há inúmeras outras formas para formatar dispositivos de armazenamento no Linux. Neste texto, apresentei uma das mais simples.
É possível usar a linha de comando para formatar, com maior número de opções de formatação. Mas isto já renderia outro artigo.

Ative o Internal Mode para aumentar a memória interna no Android

O Android 6.0 Marshmallow introduziu uma nova maneira de usar cartões de memória SD externos.
Escolher o recurso Internal Mode significa permitir que o sistema operacional mova seus apps, bem como os dados dos aplicativos, fotos, vídeos para o cartão de memória SD externo.
Em outras palavras, o Internal Mode, fará do seu cartão de memória uma extensão da memória interna do aparelho, dando-lhe os benefícios que você teria se pudesse ampliá-la.
Quem tem aparelho com menos de 8 Gigabytes de memória interna, pode se beneficiar muito, se usar um cartão de alta velocidade, como extensão — onde vai poder instalar inclusive seus aplicativos.
Se você tiver algum problema, no decurso deste procedimento, recomendo verificar a autenticidade do seu cartão de memória SD — no mínimo, para eliminar a possibilidade de você ter sido enganado pelo vendedor.

Antes de se decidir pelo processo, sugiro ler o post Perguntas e respostas sobre o Armazenamento Interno no Android — onde tiramos várias dúvidas de leitores sobre o assunto.


Android armazenamento interno ou externo
Este recurso extingue virtualmente a limitação do espaço à instalação de novos aplicativos no seu aparelho.
Fazendo as contas: Se você tem 8 Gb de memória interna e incorporar um cartão SD com capacidade de 16 GB, vai passar a contar com 24 Gb.
Por mais rápido que o seu cartão de memória seja, ele não irá alcançar a velocidade dos chips de memória interna, contudo.
Portanto, à medida em que este espaço de armazenamento for sendo preenchido, espere por uma degradação no carregamento dos aplicativos.

Mesmo que você opte por instalar primeiro os seus principais apps, na esperança de que sejam colocados no espaço correspondente à memória interna real, em algum momento o caching e os dados dos apps irão ser guardados no espaço correspondente ao cartão.

A solução só é boa para quem não pode adquirir um aparelho com mais de 8 Gb de memória de armazenamento interna — e se puder instalar um cartão de alto desempenho.
Pelo fato de que o cartão SD será formatado com o sistema de arquivos Ext4 e, ainda, criptografado, não será possível tirá-lo para usar em outro lugar.

O Ext4 é um sistema de arquivos avançado e é padrão em muitas distribuições Linux.

Ao aplicar este método, o seu cartão só servirá dentro do seu aparelho.
Ele precisará ser formatado novamente para poder ser usado em outro lugar.


Use a caixa de busca do site para encontrar artigos sobre criptografia

Como aplicar o recurso de armazenamento Internal ao seu cartão SD

Ao inserir um cartão de memória pela primeira vez, você será apresentado ao recurso — o Android irá perguntar o que você deseja fazer com ele.
Se você tirar o cartão atual e o inserir de volta, este menu também será apresentado — neste caso, não esqueça de desmontar o cartão ou desligar o aparelho, antes de remover a mídia.
Um outro caminho, para chegar a este painel é através do menu de configurações/Armazenamento e USB.
Screenshot_20160107-140233
Se você tiver arquivos importantes dentro do cartão, faça backup deles, antes de iniciar o procedimento.
Se preferir, o artigo Passo a passo para formatar o cartão de memória como interno, contém instruções mais detalhadas (para iniciantes) sobre a tarefa, em si. Além disto, explica como você pode facilmente reverter o processo.
Ao optar pelo Armazenamento interno, não será mais possível usar os dados contidos no cartão fora do seu aparelho.
Ele será formatado, criptografado e passará a integrar a memória interna do seu smartphone ou tablet — tal como já explicamos.


Leia mais sobre como lidar com cartões de memória SD em smartphones e tablets Android.

Comparação entre o Portable Mode e o Internal Mode

Com o uso do Internal Mode, naturalmente, você perderá o acesso independente à mídia de armazenamento externa.
Como você pode ver, na imagem abaixo, o sistema passa a contar com toda a memória, de todas as mídias, do aparelho.

Android Marshmallow Portable Mode
Clique na imagem, para ver detalhes.

Já no caso do Portable Mode trata-se do uso tradicional do cartão de memória. Ou seja, é como o Android 5 ou anteriores já tratavam os cartões de memória externos — separados do restante.
Como você pode ver na imagem abaixo, a contagem da memória interna, neste caso, não inclui o espaço disponível no cartão SD.
Clique nas imagens, para ver mais detalhes.
Android 6.0 Marshmallow SD Card in Portable Mode
Clique para ver detalhes

A primeira figura, lá no início do artigo, mostra uma comparação entre as duas situações:

  • Internal Mode
  • Portable Mode

Em ambas, o cenário é de um aparelho com 16 Gb de memória interna e um cartão de memória de 16 Gb.
Ainda tem dúvidas? Então leia o post Perguntas e respostas sobre o armazenamento interno no Android.

Sistemas de arquivos otimizados para mídias flash, cartões de memória, SSD, NAND

Mídias em estado sólido têm problemas diferentes das tradicionais mídias magnéticas rígidas ou flexíveis, embora possuam interfaces similares.
Cartões de memória flash, pendrives, unidades SSD etc. requerem tratamento especial e possuem processos de detecção e correção de erros de gravação/leitura diferentes —, além de técnicas para prolongamento do tempo de vida útil (wear leveling).
pen-drive-sandisk
Tipicamente, dispositivos como as unidades SSD realizam estas operações internamente, o que permite que um sistema de arquivos comum possa ser usado nelas.

Os meios de armazenamento flash sofrem de duas grandes limitações em relação às mídias magnéticas tradicionais.
— Os bits só podem ser apagados, removendo um grande bloco da memória.
— Cada bit suporta passar por um número limitado de processos de remoção — após o que, já não pode mais armazenar dados de maneira confiável.
Em função destas limitações, são requeridas outras estruturas de dados e algoritmos para fazer uso efetivo destes meios de armazenagem.

Contudo, em alguns casos específicos, sistemas de arquivos otimizados para memória flash podem ser necessários ou recomendados.
Você provavelmente nunca ouvir falar da maioria dos sistemas, que seguem. Muitos deles foram projetados por empresas para serem usados internamente, em seus próprios dispositivos. Alguns deles sequer são acessíveis ao público.
Se você tem algum projeto em mente e pensa em qual sistema de arquivos seria o mais adequado, espero que este artigo te ajude a encontrar algumas respostas.

CASL

É um sistema de arquivos desenvolvido pela Nimble Storage, que usa os dispositivos SSD para fazer o tradicional cache dos discos rígidos usados nos produtos da empresa.

ETFS

Corresponde a Embedded Transactional File System projetado pela QNX Software Systems para ser usado em dispositivos NAND.

exFAT

Criado pela Microsoft, otimizado para drives flash e amplamente difundido. Como já era de se supor, é proprietário.
A sugestão de uso é nos dispositivos flash, onde o NTFS não for a solução mais razoável (como a sobrecarga na estrutura de dados), ou onde o limite do tamanho de arquivo seja incompatível com os padrões do FAT32.
Tem sido adotado pela SD Card Association como padrão para cartões SDXC maiores que 32 GiB.

ExtremeFFS

Sistema de arquivos interno para dispositos de estado sólido (SSD) — desenvolvido pela SanDisk, que permite uma melhora na performance de escrita aleatória na memória flash, se comparado aos sistemas tradicionais, como o TrueFFS (veja abaixo).
A SanDisk alega que a tecnologia incrementa a velocidade de acesso randômico em drives de estado sólido em 100 vezes.
A empresa planeja usar o ExtremeFFS nas próximas implementações de memória flash NAND, de células multinível.

F2FS

O Flash-Friendly File System é um sistema de arquivos de código aberto, introduzido pela Samsung em 2012.
A empresa desenvolveu o F2FS do zero, levando em conta as características dos dispositivos de armazenamento baseados em memória flash NAND — tais como unidades SSD, eMMC e cartões SD, que são largamente usados em sistemas computacionais, desde dispositivos móveis (smartphones) a grandes servidores.
A Samsung escolheu a abordagem estruturada por logs, para desenvolver o projeto do F2FS.
O projeto foi adaptado para atender a novas formas de armazenagem de dados e ajuda a remediar alguns problemas conhecidos entre outros sistemas de arquivos log-structured.
Leia mais sobre o F2FS, aqui.
O sistema resolve o efeito bola de neve causado por um problema chamado wandering tree, que causa sobrecarga durante o processo de limpeza.

Como usar o sistema de arquivos F2FS no Linux

Se quiser experimentar o sistema de arquivos em algum dispositivo de memória flash, que você tenha disponível, use o comando mkfs:

mkfs.f2fs /dev/sdb1
mount -t f2fs /dev/sdb1 /mnt/f2fs 

Não se esqueça de substituir /dev/sdb1 pelo nome endereço real do seu dispositivo.
Usuários do Ubuntu, precisam instalar o pacote de aplicativos F2FS-tools, para poder realizar o procedimento acima:

sudo apt-get install f2fs-tools

Enfim, a Samsung adicionou uma série de parâmetros para configurar o layout do dispositivo, selecionar alocações e melhorar os algoritmos de limpeza.

Como usar o sistema de arquivos F2FS no Android

A maneira mais fácil é baixar um aplicativo no Google Play que faça a conversão do atual sistema de arquivos para F2FS.

FFS2

Este sistema provavelmente substitui o FFS1, também da Microsoft, e é um dos primeiros desenvolvido pela empresa, para uso em mídias flash.

JFFS

Sistema de arquivos estruturado por log, para Linux, desenvolvido para uso em mídias flash NOR.
Substituído pelo JFFS2 (veja o próximo item).

JFFS2

Sucessor do JFFS, que inclui suporte a mídias flash NOR e NAND.
O Journaling Flash File System version 2 é um sistema de arquivos estruturado por log, projetado para uso em dispositivos flash em sistemas embutidos.
Se diferencia de outros sistemas de arquivos antigos por não usar uma camada de tradução nos dispositivos flash, para simular um disco rígido.
Ele põe o sistema de arquivos direto nos chips dos dispositivos flash.
O sistema foi desenvolvido pela Red Hat, baseado no trabalho anterioraa empresa sueca, Axis Communications, conhecida pelos seus produtos na área de vigilância.
Se você tem interesse em estudar e usar este sistema de arquivos no Linux, pode encontrar mais informações neste site.
No Ubuntu, você precisará instalar alguns pacotes para poder criar um sistema de arquivos JFFS2 em dispositivos flash. Use o comando apt-cache, para saber quais:

apt-cache search jffs2
logfs-tools - Tools to manage logfs filesystems
logfs-tools-dbg - Tools to manage logfs filesystems (debug)
mtd-utils - Memory Technology Device Utilities

Por sorte, as ferramentas logfs-tools são as mesmas a ser usadas pro próximo sistema de arquivos, descrito abaixo.

LogFS

O LogFS é um sistema de arquivos relativamente novo, também desenvolvido para Linux e que tem a intenção de, futuramente, substituir o JFFS2.
Uma de suas vantagens, em relação ao seu antecessor, é a melhor escalabilidade.
O LogFS é também um sistema de arquivos estruturado por logs (log-structured), concebido para mídias flash de grande capacidade.
O sistema foi desenvolvido inicialmente por Jörn Engel, em 2008, inspirado em outro sistema de arquivos do NetBSD e é suportado desde a versão 2.6.34 do kernel Linux (2010).

O que faz o LogFS se destacar: snapshots

Um dos destaques do LogFS é a possibilidade de tirar snapshots do sistema de arquivos — atualmente, nenhum sistema de arquivos tradicional para Linux faz isto.
Algumas pessoas chamam os snapshots de versões.
O recurso equivale a “tirar fotos” ou criar imagens de todo o sistema de arquivos em dados momentos.
Imagine a possibilidade de ter removido acidentalmente todo o seu diretório /home. Com este recurso, é possível voltar no tempo — analisar os diversos snapshots tirados e escolher para qual deles voltar.
É como se o acidente não tivesse acontecido.
Outra forma de ver o processo é como se o sistema de arquivos oferecesse vários backups de si mesmo, em vários momentos. Ele não consome muito espaço para fazer isto.
Se você usa o Ubuntu e deseja experimentar o LogFS, instale os pacotes relacionados a ele:

sudo apt-get update
sudo apt-get install logfs-tools

O tamanho do pacote não é monstruoso — pelo contrário, ocupou pouco mais de 64 Kb no meu sistema.
Uma vez instalado, para formatar um dispositivo com este sistema de arquivos, basta usar o comando mkfs.

NVFS

O nome Non-Volatile File System corresponde a, em português, “sistema de arquivos não volátil” e foi introduzido pela fabricante de dispositivos móveis Palm.
O último dispositivo a fazer uso deste sistema, feito pela Palm, foi o Treo 650.

OneFS

Este sistema foi desenvolvido pela Isolon para atender seus projetos de sistemas de armazenamento em clusters.
A Isolon foi adquirida pela EMC Corp, em 2010.
O sistema OneFS suporta alocação seletiva de metadados diretamente no dispositivo flash SSD.

RFS

O Robust File System é desenvolvido pela Samsung e usado em suas TV’s, no espaço reservado às aplicações dos usuários.
O RFS é baseado no sistema de arquivos da Microsoft FAT 16/32, com uma espécie de journaling incluído.
O seu código é proprietário e ele só é usado em equipamentos da Samsung, tais como smartTVs, reprodutores BluRay e alguns celulares.
O site SamyGo tem um tutorial (em inglês) que descreve como usar este sistema para:

  • alterar o firmware da sua TV
  • e criar novos kernels para a sua TV ou outros dispositivos Samsung.

Segger Microcontroller Systems emFile

Este sistema de arquivos é usado em aplicações “profundamente” embutidas, com suporte a mídias flash NAND e NOR.
Tem recursos de wear leveling, escrita e leitura rápida e consumo muito baixo de memória RAM.

SafeFLASH

Sistema de arquivos HCC-embedded, seguro contra falhas, que provê suporte a mídias flash NAND e NOR, com integração a wear-leveling e manipulação de blocos defeituosos (bad blocks).

TFAT

Uma versão transacional do sistema de arquivos FAT.

TrueFFS

Apesar do nome, o TrueFFS não é exatamente um sistema de arquivos — ele não provê uma interface de sistema de arquivos, mas uma interface de disco.
O termo mais correto é camada de tradução flash — flash translation layer.
O sistema foi projetado para rodar em drives de estado sólido raw —. Atualmente, a maioria dos SSDs vendidos ao consumidor não são deste tipo.
O projeto implementa correção de erros, remapeamento de blocos defeituosos e wear leveling.
A função de uma camada de tradução flash é adaptar um sistema de arquivos pleno às limitações e restrições impostas pelos dispositivos de memória flash.

UBIFS

Este sistema de arquivos pretende suceder o JFFS2 e concorre com o LogFS, otimizado para uso de memória DRAM não volátil.
O nome quer dizer Unsorted Block Image File System.
Seu desenvolvimento iniciou-se em 2008 e ele já integra o kernel do Linux, desde a versao 2.6.27.
O sistema está sob desenvolvimento dos engenheiros da Nokia, com a ajuda da Universidade de Szeged, na Hungria.

UFFS

O Ultra low cost flash — ou sistema de arquivos de ultra baixo custo para sistemas embutidos foi concebido, de acordo com a página oficial, para as seguintes situações:

  • quando os recursos de hardware são muito limitados (capacidade de memória RAM entre 64 Kb e 512 Kb) mas, ainda assim, você precisa de um sistema de arquivos confiável para dispositivos de armazenamento flash
  • quando o JFFS/JFFS2 são lentos e consomem muita memoria
  • quando o YAFFS/YAFFS2 se encaixa perfeitamente, mas consome muita memória
  • quando você precisa que o projeto seja livre e de código aberto

O UFFS2, segundo os desenvolvedores, terá as seguintes melhorias:

  1. menor fome de memória, com a redução de 25-50% da necessidade atual;
  2. possibilidade de abrigar um ou mais arquivos/diretórios em um único bloco, o que melhora significativamente o uso do espaço, para arquivos pequenos;
  3. suporte a links simbólicos e outros arquivos especiais;
  4. wear-leveling estático e
  5. suporte a mais chips flash NAND.

Unison RTOS

Este sistema de arquivos é voltado a sistemas embutidos com mídias flash de baixo custo NAND ou NOR.
O Unison RTOS oferece um sistema de arquivos para Linux 32 bits compatível com o POSIX.
O sistema de arquivos é muito leve e pode ocupar um espaço muito pequeno (1 Kb, em algumas arquiteturas).
É de código aberto e segue padrões abertos — e isto sempre conta pontos a favor.

WAFL

O WAFL – Write Anywhere File Layout – é um sistema de arquivos interno utilizado pela NetApp em seus dispositivos DataONTAP OS, originalmente otimizado para uso de memória DRAM não volátil.

XCFiles

Trata-se de uma implementação exFAT, pela DataLight para sistemas operacionais embarcados Wind River VxWorks.

YAFFS

Um sistema de arquivos estruturado por logs, projetado para mídias flash NAND — mas também adequado a flash NOR.
O nome dele é um acrônimo para mais um sistema de arquivos flash — ou Yet Another Flash File System.
O projeto foi inicialmente desenvolvido por Charles Manning
O sistema de arquivos é disponibilizado pela licença GPLv2 e pode ser embarcado em vários sistemas operacionais, como:

  • Android
  • Firefox OS
  • Linux
  • Windows CE, pSOS, eCos, ThreadX etc.

O YAFFS é robusto e mantém a integridade dos dados como prioridade.
O objetivo secundário do YAFFS é a alta performance.
Em situações onde não há um sistema operacional, é possível usar uma variante: YAFFS/Direct — que tem o mesmo sistema de arquivos central, contudo com um interfaceamento simplificado.

ZFS

Um sistema de arquivos combinado e gerenciador de volumes lógico, projetado pela Sun Microsystems.
Os recursos do ZFS inclui proteção contra corrupção de dados, suporte a altas capacidades de armazenamento, compressão de dados eficiente, integração dos conceitos de sistema de arquivos e gestão de volumes, snapshots e clones de cópia-na-escrita.
A lista de recursos segue com verificação de integridade contínua e reparo automático, RAID-Z e NFSv4 ACLs nativos.
O projetos começou como software de código aberto e seguiu com a licença CDDL — Common Development and Distribution License.
Leia mais sobre esta tecnologia em Introdução ao sistema de arquivos ZFS.
O nome ZFS é marca registrada da Oracle Corporation.

OTFS

Segundo a InformationWeek, o OmniTraak File System é um sistema de arquivos extensível do “estado da arte”.
O OTFS é um componente de software que organiza o conteúdo do disco em arquivos, provê controle de acesso e segurança e oferece métodos de nomenclatura de arquivos.

Referências

Além dos vários links espalhados pelo texto, você pode também conferir as seguintes páginas na Wikipedia:
http://en.wikipedia.org/wiki/List_of_file_systems#File_systems_optimized_for_flash_memory.2C_solid_state_media
http://en.wikipedia.org/wiki/Flash_file_system