Como particionar corretamente a unidade flash USB e qual sistema de arquivos escolher considerando o nível de desgaste?

13

Dois problemas Primeiro: como particionar a unidade flash?

Não preciso fazer isso, mas não tenho mais certeza se minha partição está alinhada corretamente, pois fui forçada a excluir e criar uma nova tabela de partições depois que o gparted reclamou quando tentei formatar a unidade do FAT para o ext4.

A resposta ingênua seria dizer "apenas use o padrão e tudo ficará bem". No entanto, se você ler os seguintes links, saberá que as coisas não são tão simples: https://lwn.net/Articles/428584/ e http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Depois, há também a questão dos cilindros, cabeças e setores. Atualmente eu recebo isso:

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

Então, do meu entendimento atual, devo alinhar partições em 4 MiB (atualmente é em 1 MiB). Mas ainda não sei como definir os cabeçotes e os setores corretamente para o meu dispositivo.

Segundo problema: sistema de arquivos.

A partir dos benchmarks que vi, o ext4 oferece o melhor desempenho, porém existe a questão do nivelamento do desgaste. Como posso saber que o microcontrolador do Transcend JetFlash 700 fornece nivelamento de desgaste? Ou apenas matarei minha unidade mais rápido?

Eu já vi muitas postagens na web dizendo: não se preocupe, as unidades mais recentes já cuidam disso. Mas nunca vi uma única evidência disso e, em algum momento, as pessoas começaram a misturar SSD com a tecnologia de drives flash USB. A opção segura seria ir para o ext2, no entanto, uma série de testes que eu executei mostrou um desempenho horrível !!!

Esses valores são de um cenário real e não de algum teste sintético:

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

Por favor, leia os links que eu postei acima antes de responder. Eu também estaria interessado em respostas com algumas referências, porque muito é dito e re-dito, mas falta fatos.

Obrigado pela ajuda.

random1
fonte
"no entanto, existe a questão do nivelamento do desgaste" - Você realmente não tem escolha no assunto. A unidade USB Flash ou o cartão SD que você compra fazem um trabalho satisfatório de nivelamento de desgaste ou não. Você não pode / não deve usar um sistema de arquivos com nível de desgaste (por exemplo, JFFS2). E você não pode instalar o gerenciamento de volume UBI (seria necessário instalar o MTD primeiro, mas isso é para dispositivos Flash não processados). Então você está confiante em confiar no controlador incorporado.
sawdust

Respostas:

8

Não se preocupe com cilindros, cabeçotes e setores e só trabalhe com setores. A maneira mais fácil de alinhar o sistema de arquivos é simplesmente não ter uma tabela de partição (por exemplo, criar o sistema de arquivos /dev/sdXdiretamente). A maioria dos sistemas Linux lida com isso muito bem, mas o Windows vai pirar e você também não poderá torná-lo inicializável. Se você precisar de uma tabela de partição, calcule quantos setores de 512 bytes compõem um bloco de apagamento. Os blocos de apagamento estão em torno de 128-512KiB; portanto, se você não conseguir descobrir o que a sua unidade flash usa, use 1024 setores. Verifique se as partições começam com um múltiplo desse número.

Você também deseja informar ao ext2 / 3/4 sobre o tamanho do bloco de apagamento para evitar modificações desnecessárias. Defina ambos stridee stripe-widtho número de blocos do sistema de arquivos que compõem um bloco de apagamento. Para trabalhar em um bloco de apagamento de 512KiB, use o seguinte:

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

Em termos de desempenho, não ter um diário deve melhorar o desempenho (mas aumentar a chance de corrupção de dados se a operação for interrompida). No entanto, as extensões do ext4 devem melhorar o desempenho, pois menos metadados precisam ser modificados para arquivos grandes. Eu provavelmente usaria ext4 com o diário desativado:

tune2fs -O ^has_journal
mgorven
fonte
Você pode usar cat /proc/mtdpara descobrir o tamanho dos blocos apagados dos dispositivos flash conectados.
amigos estão dizendo
As unidades flash sem tabela de partição devem funcionar bem no Windows, desde que o sistema de arquivos seja suportado. Os pendrives geralmente não têm a tabela de partição pronta para uso e funcionam bem.
gronostaj
A otimização do fs no cartão SD para Linux / Fedora no Dreamplug mostra como o ext4 "sabe" o tamanho dos blocos de apagamento e define seu tamanho de bloco e o valor "stride" de acordo. Também acredito que / proc / mtd não é relevante aqui, pois está disponível apenas para dispositivos flash brutos, como disse a serragem, não para dispositivos de memória flash SD / stick.
tuk0z
Tentei isso, foi um péssimo conselho. Não use esses parâmetros com uma unidade flash USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - esse cara tem parâmetros melhores, mas ainda é apenas marginalmente melhor, se é que é o que o gparted usa por padrão.
Zdenek
Esse é o mesmo link que forneci em setembro ^^ Correto sobre o AFAIK parted / Gparted.
tuk0z
4

Atualmente, a maioria das ferramentas de particionamento e criação de sistemas de arquivos do Linux padroniza valores que alinham dados nos limites de 4K e até usarão o tamanho do bloco subjacente se o disco o expor, para que as coisas não sejam tão ruins quanto no artigo LWN:

TLDR; Ao usar uma distribuição Linux moderna (por exemplo, 2013 ou posterior) com versões recentes de ferramentas para criar suas partições e sistemas de arquivos, o alinhamento melhor (mas não perfeito) ocorrerá automaticamente. Também tome cuidado - os melhores valores para um cartão SD podem ser diferentes dos de um pendrive (acredito que o Transcend JetFlash é um pendrive e não um cartão SD). Você precisaria fazer benchmark para deduzir o verdadeiro tamanho do bloco de apagamento subjacente em flash barato ...

Anon
fonte
1

Além disso, no seu fstab, certifique-se de usar a opção de montagem "noatime" para evitar gravações desnecessárias sempre que um arquivo for acessado.

docwebhead
fonte
Ainda é verdade até hoje e isso me lembrou que esta opção estava faltando XD Thx
HypeWolf