Si j'aligne une partition sur 24 Mo, cette partition est-elle également alignée sur un diviseur de cette taille?

5

Supposons que je souhaite commencer mes partitions avec un décalage sur les lecteurs flash à cause de:

Bien qu'il soit généralement possible d'écrire des pages individuelles, les données ne peuvent pas être plus écrites sans être effacé d' abord, et l' effacement est seulement possible dans des unités beaucoup plus grandes, généralement entre 128Ko et 2MB. Les contrôleurs regroupent ces blocs d’effacement en segments encore plus grands, appelés "groupes de blocs d’effacement", "unités d’allocation" ou simplement "segments". La taille la plus courante pour ces segments est de 4 Mo pour les lecteurs de la classe multi-gigaoctets, et toutes les opérations sur le lecteur ont lieu dans ces unités; en particulier, le lecteur n'effacera jamais une unité plus petite qu'un segment. Optimiser Linux avec des lecteurs flash bon marché

Je veux aligner chaque partition correspondant à ce qui précède, mais il n’est pas si facile de déterminer les nombres. 24 Mo est assez volumineux, mais selon la liste de diffusion flashbench, il existe des lecteurs flash avec des tailles de bloc d'effacement de 6 ou 12 Mo. Je veux m'assurer qu'au moins mes partitions sont alignées sans toujours effectuer un test avec flashbench.

Donc, si je commence ma première partition sur le 49152e + 1 (elle commence donc juste à la "seconde partie 24MiB") du secteur de 512 octets, alors que cette partition est également alignée sur 1,2,4,6,8 et 12 Mio ? (Et ainsi de suite, par exemple à 128k, car (24 * 1024) / 128 est un nombre entier)

dash17291
la source
1
On dirait que cela devrait fonctionner en fonction des mathématiques de base et de ce que je sais du partitionnement, mais je n’ai jamais réellement essayé cela; il peut donc y avoir une certaine complexité cachée.
David

Réponses:

5

Bien que je n’ai aucune connaissance pratique de l’électronique des cartes flash, laissez-moi essayer de détailler ma compréhension du sujet.

Premièrement , l'alignement sur 24 Mo s'aligne sur tous ses sous-multiples. Mais si cela est utile est une autre question.

Deuxièmement , aligner les partitions sur le bloc d'effacement peut vous rassurer, mais ce qui est important, c'est en réalité l'alignement des fichiers dans le système de fichiers. Comme le système de fichiers commence avec ses propres tables internes, il faut les forcer à prendre un multiple de la taille du bloc d'effacement, ce qui est loin d'être un exercice trivial. L'alignement du système de fichiers est donc votre prochaine tâche après l'alignement de la partition.

Par exemple, lisez la lutte de Theodore Ts'o pour y parvenir pour son disque SSD:
Aligner les systèmes de fichiers sur la taille du bloc d'effacement d'un SSD .

Troisièmement , le terme «bloc d'effacement» et son applicabilité à un lecteur flash particulier sont inversement proportionnels à l'intelligence du contrôleur de disque flash. Les contrôleurs de flash modernes deviennent de plus en plus intelligents et utilisent même la compression. L’idée que le système d’exploitation sait ce qui se passe sous le capot avec ce lecteur est peut-être une fiction qui pourrait plutôt s’appliquer aux lecteurs moins chers ou plus anciens.

Quatrièmement , la taille des blocs dépend de la technologie de fabrication. L'article d'AnandTech Micron annonce que les NDS et les SSD MLC MNA 128 Gb 16 nm sont dotés de ce tableau récapitulatif intéressant en 2014 , où la taille des blocs va de 512 Ko à 8 Mo:

image

Cinquièmement , certaines technologies de mémoire utilisent des "bits" à N états appelés cellules, de sorte qu'une cellule physique peut contenir au moins 1,5 ou 2 bits logiques. Le contrôleur, encore une fois, se charge de traduire cela en des termes que le système d'exploitation peut comprendre, ce qui est bien entendu de la pure fiction.

La conception de la carte mémoire flash article a ceci à dire:

Dans tous les flashs SLC et MLC, la taille du bloc d'effacement est une taille d'une puissance de deux. En mode Flash TLC (également connu sous le nom de MLC3, MLC à trois bits, 8LC ou cellule à huit niveaux), il existe deux configurations possibles: 1,5 Mo ou 3 Mo, ou il peut avoir un nombre de pages non puissant de deux pour chaque niveau, 43 + 43 + 42 pages pour un total de 128 pages par bloc d'effacement.

Lisez cet article pour en savoir plus sur la manière dont les disques flash rapportent au système d'exploitation des informations fondamentalement fausses.

Conclusion : dans la jungle actuelle des technologies en évolution, il n’existe aucun moyen de calculer de manière fiable la taille réelle du bloc d’effacement. Des outils tels que flashbench peuvent être le seul moyen fiable de calculer cette valeur, mais les résultats peuvent être faux pour des disques flash plus évolués. Imaginez par exemple flashbench en train d'écrire un bloc de 64 Mo de zéros que le contrôleur de flash compresse en quelques Ko. Flashbench mesure donc réellement le taux de transfert vers le périphérique.

À mon avis, l'alignement des partitions étant considéré comme une "bonne" chose à faire, 4 Mo suffisent (8 Mo peut-être mieux pour les nouveaux disques d'ici la fin de 2014), et je ne m'ennuierais pas davantage. En cas de doute, utilisez flashbench, mais gardez l'esprit ouvert quant à la validité des résultats. Les tailles étranges signalées par flashbench sont probablement le résultat de traductions et d'optimisations effectuées par le contrôleur flash sur le disque flash.

harrymc
la source
1

Oui, chaque nombre entier est un multiple entier de tous ses diviseurs.

24 MiB = 24 2 20 B = 2 4 3 * 2 24 B = 3 2 27 B = 3 2 18 ⋅ 512 B

Il existe vos diviseurs principaux pour 24 Mio répartis en unités de 512 octets. Plus précisément, chaque bloc commençant par un multiple de 24 Mio commencera également par un multiple de 12 Mio, 8 Mio, 6 Mio, 4 Mio, 2 Mib, 1 Mio et 512 Kio.

Maintenant pour votre question exemplaire: 49152 = 3 ⋅ 2 14 , qui divise 3 2 18 . Par conséquent, ma déclaration ci-dessus s'applique au 49152ème bloc de 512 octets.

Edit: J'ai seulement fait quelques maths ici. Comme vous pouvez le constater dans les autres réponses, l’aspect technique de votre problème est beaucoup plus compliqué.

David Foerster
la source