Questão Como corretamente partição usb flash drive e qual sistema de arquivos para escolher considerando o desgaste de nivelamento?


Dois problemas. Primeiro um: como particionar o pen drive?

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

A resposta ingênua seria dizer "basta usar o padrão e tudo vai ficar bem". No entanto, se você ler os links a seguir, 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, a partir do meu entendimento atual, devo alinhar as partições em 4 MiB (atualmente está em 1 MiB). Mas eu ainda não sei como definir as cabeças e setores corretamente para o meu dispositivo.

Segundo problema: sistema de arquivos.

Dos benchmarks vi ext4 fornece o melhor desempenho, no entanto, há a questão do nivelamento de desgaste. Como posso saber que o microcontrolador do meu Transcend JetFlash 700 oferece um nivelamento de desgaste? Ou vou apenas matar meu caminho mais rápido?

Eu vi um monte de posts na web dizendo não se preocupe, os novos drives já cuidam disso. Mas eu nunca vi uma única prova apoiada e, em algum momento, as pessoas começam a misturar SSD com a tecnologia USB flash drives. A opção segura seria ir para ext2, no entanto, uma série de testes que realizei 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 então falta fatos.

Obrigado pela ajuda.


13


origem


"no entanto, há a questão do nivelamento de desgaste" - Você realmente não tem escolha no assunto. O pen drive USB ou o cartão SD que você compra faz um trabalho satisfatório de nivelamento de desgaste ou não. Você não pode / não deve usar um sistema de arquivos que use nivelamento (por exemplo, JFFS2). E você não pode instalar o gerenciamento de volume UBI (você precisaria instalar o MTD primeiro, mas isso é para dispositivos Flash brutos). Então você está preso a confiar no controlador incorporado. - sawdust


Respostas:


Não se preocupe com cilindros, cabeças 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 (isto é, criar o sistema de arquivos /dev/sdX diretamente). A maioria dos sistemas Linux lidará bem com isso, 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 formam um bloco de apagamento. Os blocos de exclusão estão em torno de 128 a 512 KiB, portanto, se você não conseguir descobrir o que o seu pendrive usa, vá para 1024 setores. Certifique-se de que as partições iniciem em um múltiplo desse número.

Você também quer dizer ao ext2 / 3/4 sobre o tamanho do bloco de apagamento para evitar a modificação desnecessária de blocos. Definir ambos stride e stripe-width para o número de blocos do sistema de arquivos que compõem um bloco de apagamento, portanto, trabalhar em um bloco de apagamento de 512KiB usa 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 porque menos metadados precisam ser modificados para arquivos grandes. Eu provavelmente usaria ext4 com o diário desativado:

tune2fs -O ^has_journal

8



Você pode usar cat /proc/mtd para descobrir apagar tamanhos de bloco para dispositivos flash conectados. - Tomalak
Flash drives sem tabela de partição devem funcionar bem no Windows, desde que o sistema de arquivos seja suportado. Pendrives geralmente não têm mesa de partição fora da caixa e eles funcionam bem. - gronostaj
Otimizando o fs no cartão SD para Linux / Fedora no Dreamplug mostra como deixar ext4 "conhecer" o apagar blocos tamanho e definir o seu tamanho do bloco e "Passo" valor em conformidade. Também acredito / proc / mtd não é relevante aqui, uma vez que está disponível apenas para dispositivos flash brutos como serragem disse, não para dispositivos de memória flash SD / stick. - tuk0z
Tentei isso, foi um conselho terrivelmente ruim. 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 for o caso, do que o gparted usa por padrão. - Zdenek
Esse é o mesmo link que eu dei em setembro ^^ Correto sobre parted / Gparted AFAIK. - tuk0z


Atualmente, a maioria das ferramentas de criação de partições e de sistema de arquivos Linux padroniza valores que alinham dados em limites de 4K e até usam o tamanho de bloco subjacente se o disco o expuser, então as coisas não são tão ruins quanto no artigo do LWN:

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


3





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


0