Comment partitionner correctement le lecteur flash USB et quel système de fichiers choisir en tenant compte du nivellement par l'usure?

13

Deux problèmes. Premier point: comment partitionner le lecteur flash?

Je n’aurais pas besoin de le faire, mais je ne suis plus sûr que ma partition est correctement alignée, car j’ai été forcée de supprimer et de créer une nouvelle table de partitions après que gparted se soit plaint lorsque j’ai essayé de formater le lecteur de FAT à ext4.

La réponse naïve consisterait à dire "utilisez simplement les paramètres par défaut et tout ira bien". Cependant, si vous lisez les liens suivants, vous saurez que les choses ne sont pas si simples: https://lwn.net/Articles/428584/ et http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Il y a aussi la question des cylindres, des têtes et des secteurs. Actuellement, je reçois ceci:

$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

Donc, d’après mes connaissances actuelles, je devrais aligner les partitions à 4 Mio (c’est actuellement à 1 Mio). Mais je ne sais toujours pas comment définir correctement les têtes et les secteurs pour mon appareil.

Deuxième problème: le système de fichiers.

D'après les références que j'ai vues, ext4 fournit les meilleures performances, mais il existe un problème de nivellement par l'usure. Comment savoir si mon microcontrôleur Transcend JetFlash 700 assure le nivellement d'usure? Ou vais-je simplement tuer mon lecteur plus rapidement?

J'ai lu de nombreux articles sur le Web disant: ne vous inquiétez pas, les nouveaux lecteurs s'en chargent déjà. Mais je n’ai jamais vu la moindre preuve de cela et, à un moment donné, les gens commencent à mélanger la technologie SSD avec la technologie des clés USB. L'option sûre serait d'aller pour ext2, cependant une série de tests que j'ai effectués a montré une performance horrible !!!

Ces valeurs proviennent d'un scénario réel et non d'un test de synthèse:

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

S'il vous plaît lire les liens que j'ai posté ci-dessus avant de répondre. Je serais également intéressé par les réponses accompagnées de références car beaucoup de choses sont dites et redites, mais il manque alors des faits.

Merci pour l'aide.

random1
la source
"Cependant, il y a le problème du nivellement d'usure" - Vous n'avez vraiment pas le choix. Soit la clé USB flash ou la carte SD que vous achetez fait un travail de nivellement d'usure satisfaisant, soit ce n'est pas le cas. Vous ne pouvez pas / ne devriez pas utiliser un système de fichiers qui corrige l'usure (par exemple, JFFS2). Et vous ne pouvez pas installer la gestion de volume UBI (vous devez d'abord installer MTD, mais c'est pour les périphériques Flash bruts). Vous devez donc vous fier au contrôleur intégré.
sciure de bois

Réponses:

8

Ne vous inquiétez pas des cylindres, des têtes et des secteurs et travaillez uniquement avec les secteurs. Le moyen le plus simple d’aligner le système de fichiers est simplement de ne pas avoir de table de partition (c’est-à-dire de créer /dev/sdXdirectement le système de fichiers ). La plupart des systèmes Linux gèrent cela très bien, mais Windows va paniquer et vous ne pourrez pas le rendre amorçable. Si vous avez besoin d'une table de partition, déterminez combien de secteurs de 512 octets constituent un bloc d'effacement. Les blocs d'effacement se situent autour de 128-512 Ko, donc si vous ne pouvez pas savoir ce que votre clé USB utilise, utilisez 1024 secteurs. Assurez-vous que les partitions commencent sur un multiple de ce nombre.

Vous souhaitez également informer ext2 / 3/4 de la taille du bloc d'effacement afin d'éviter toute modification inutile des blocs. Définissez les deux strideet stripe-widthle nombre de blocs du système de fichiers qui constituent un bloc d'effacement. Pour travailler sur un bloc d'effacement de 512 Ko, utilisez ce qui suit:

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

En termes de performances, le fait de ne pas avoir de journal devrait améliorer les performances (mais augmenter le risque de corruption des données si le fonctionnement est interrompu). Cependant, les extensions de ext4 devraient améliorer les performances car moins de métadonnées doivent être modifiées pour les fichiers volumineux. J'utiliserais probablement ext4 avec le journal désactivé:

tune2fs -O ^has_journal
mgorven
la source
Vous pouvez utiliser cat /proc/mtdpour connaître la taille des blocs d'effacement pour les périphériques flash connectés.
Tomalak
Les lecteurs Flash sans table de partition devraient fonctionner correctement sous Windows tant que le système de fichiers est pris en charge. Les disques durs n'ont généralement pas de table de partition prête à l'emploi et fonctionnent parfaitement.
Gronostaj
L’optimisation de fs sur une carte SD pour Linux / Fedora sur Dreamplug montre comment laisser ext4 "connaître" la taille des blocs d’effacement et définir sa taille de bloc et sa valeur de "foulée" en conséquence. De plus, je pense que / proc / mtd n’est pas pertinent ici, car il n’est disponible que pour les périphériques flash bruts, comme l’a dit la sciure de bois, et non pour les périphériques de mémoire flash SD / Stick.
tuk0z
J'ai essayé, c'était un très mauvais conseil. N'utilisez pas ces paramètres avec un lecteur flash USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - ce gars-là a de meilleurs paramètres, mais il n'est que légèrement supérieur, voire pas du tout, à ce que gparted utilise par défaut.
Zdenek
C’est le même lien que j’avais donné en septembre ^^ Corrigez les faits selon ma connaissance.
tuk0z
4

De nos jours, la plupart des outils de partitionnement et de création de système de fichiers Linux utilisent par défaut des valeurs qui alignent les données sur des limites de 4 Ko et utilisent même la taille de bloc sous-jacente si le disque l'expose, de sorte que les choses ne sont pas aussi mauvaises que dans l'article de LWN:

TLDR; Lorsque vous utilisez une distribution Linux moderne (par exemple 2013 ou ultérieure) avec des versions récentes d'outils pour créer vos partitions et vos systèmes de fichiers, un meilleur alignement (mais pas parfait) se produira automatiquement. Faites également attention - les meilleures valeurs pour une carte SD peuvent être différentes de celles d’une clé USB (je crois que votre Transcend JetFlash est une clé USB et non une carte SD). Il vous faudrait comparer pour déduire la vraie taille de bloc d'effacement sous-jacente sur du flash bon marché ...

Anon
la source
0

En outre, dans votre fstab, veillez à utiliser l'option de montage "noatime" pour éviter les écritures inutiles à chaque accès au fichier.

docwebhead
la source