Come partizionare correttamente la chiavetta USB e quale filesystem scegliere considerando il livellamento dell'usura?


13

Due problemi. Primo: come partizionare l'unità flash?

Non dovrei aver bisogno di farlo, ma non sono più sicuro che la mia partizione sia correttamente allineata poiché sono stata costretta a cancellare e creare una nuova tabella delle partizioni dopo che gparted si è lamentato quando ho provato a formattare l'unità da FAT a ext4.

La risposta ingenua sarebbe dire "usa solo il default e tutto andrà bene". Tuttavia, se leggi i seguenti collegamenti, saprai che le cose non sono così semplici: https://lwn.net/Articles/428584/ e http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Poi c'è anche il problema di cilindri, teste e settori. Attualmente ottengo questo:

$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

Quindi, dalla mia attuale comprensione, dovrei allineare le partizioni a 4 MiB (attualmente è a 1 MiB). Ma non so ancora come impostare correttamente le testine e i settori per il mio dispositivo.

Secondo problema: file system.

Dai benchmark che ho visto ext4 offre le migliori prestazioni, tuttavia c'è il problema del livellamento dell'usura. Come posso sapere che il mio microcontrollore Transcend JetFlash 700 provvede al livellamento dell'usura? O ucciderò il mio disco più velocemente?

Ho visto molti post sul Web che dicono che non preoccuparti che le unità più recenti si occupino già di questo. Ma non ho mai visto un singolo pezzo di prova a sostegno di ciò e ad un certo punto le persone iniziano a mescolare SSD con la tecnologia delle unità flash USB. L'opzione sicura sarebbe quella di optare per ext2, tuttavia una serie di test che ho eseguito ha mostrato prestazioni orribili !!!

Questi valori provengono da uno scenario reale e non da alcuni test sintetici:

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

Si prega di leggere i collegamenti che ho pubblicato sopra prima di rispondere. Sarei anche interessato a risposte sostenute da alcuni riferimenti perché molte cose vengono dette e ripetute, ma poi mancano i fatti.

Grazie per l'aiuto.


"comunque c'è il problema del livellamento dell'usura" - Non hai davvero scelta. L'unità flash USB o la scheda SD che acquisti fa un buon lavoro di livellamento dell'usura o no. Non puoi / non dovresti usare un filesystem che permetta il livellamento dell'usura (es. JFFS2). E non è possibile installare la gestione del volume UBI (è necessario installare prima MTD, ma questo è per i dispositivi Flash non elaborati). Quindi sei bloccato con l'affidamento al controller incorporato.
segatura,

Risposte:


8

Non preoccuparti di cilindri, testine e settori e lavora sempre e solo con settori. Il modo più semplice per allineare il filesystem è semplicemente non avere una tabella delle partizioni (cioè creare /dev/sdXdirettamente il filesystem ). La maggior parte dei sistemi Linux gestirà questo bene, ma Windows impazzirà e anche tu non sarai in grado di renderlo avviabile. Se hai bisogno di una tabella delle partizioni, scopri quanti settori a 512 byte compongono un blocco di cancellazione. I blocchi di cancellazione sono di circa 128-512 KiB, quindi se non riesci a scoprire cosa utilizza la tua unità flash vai con 1024 settori. Assicurarsi che le partizioni inizino su un multiplo di questo numero.

Volete anche dire a ext2 / 3/4 della dimensione del blocco di cancellazione in modo che possa evitare di modificare inutilmente i blocchi. Impostare entrambi stridee stripe-widthil numero di blocchi del filesystem che compongono un blocco di cancellazione, quindi lavorando su un blocco di cancellazione da 512 KiB utilizzare quanto segue:

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

In termini di prestazioni, non avere un giornale dovrebbe migliorare le prestazioni (ma aumentare la possibilità di corruzione dei dati se l'operazione viene interrotta). Tuttavia, l'estensione ext4 dovrebbe migliorare le prestazioni perché è necessario modificare meno metadati per file di grandi dimensioni. Probabilmente userei ext4 con il journal disabilitato:

tune2fs -O ^has_journal

È possibile utilizzare cat /proc/mtdper scoprire le dimensioni del blocco di cancellazione per i dispositivi flash collegati.
Tomalak,

Le unità flash senza tabella delle partizioni dovrebbero funzionare correttamente su Windows purché il file system sia supportato. I pendrive di solito non hanno una tabella delle partizioni pronta all'uso e funzionano bene.
Gronostaj,

L'ottimizzazione di fs su sd-card per Linux / Fedora su Dreamplug mostra come far sapere a ext4 la dimensione dei blocchi di cancellazione e impostarne le dimensioni e il valore di “falcata” di conseguenza. Inoltre credo che / proc / mtd non sia rilevante qui poiché è disponibile solo per dispositivi flash grezzi, come diceva segatura, non per dispositivi di memoria flash SD / stick.
tuk0z,

Ci ho provato, è stato un consiglio terribilmente negativo. Non utilizzare questi parametri con un'unità flash USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - questo ragazzo ha parametri migliori, ma è ancora solo leggermente migliore, se non del tutto, di quello che gparted usa di default.
Zdenek,

Questo è lo stesso link che ho dato a settembre ^^ Corretto su AFAIK parted / Gparted.
tuk0z,

4

Al giorno d'oggi la maggior parte degli strumenti di partizionamento e creazione di filesystem di Linux sono impostati su valori che allineano i dati sui confini 4K e useranno anche la dimensione del blocco sottostante se il disco lo espone, quindi le cose non sono così brutte come nell'articolo LWN:

TLDR; Quando si utilizza una moderna distribuzione Linux (diciamo 2013 o successive) con versioni recenti di strumenti per creare partizioni e filesystem, un migliore (ma non perfetto) allineamento avverrà automaticamente. Inoltre, fai attenzione: i valori migliori per una scheda SD potrebbero essere diversi da quelli per una chiavetta USB (credo che Transcend JetFlash sia una chiavetta USB e non una scheda SD). Dovresti fare un benchmark per dedurre la vera dimensione del blocco di cancellazione sottostante su un flash economico ...


1

Inoltre, nel tuo fstab, assicurati di usare l'opzione mount "noatime" per evitare scritture non necessarie ogni volta che si accede a un file.


Ancora vero fino ad oggi e questo mi ha ricordato che questa opzione mancava XD Thx
HypeWolf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.