5

Давайте предположим, что я хочу начать свои разделы со смещения на флешках из-за:

Несмотря на то, что, как правило , можно написать отдельные страницы, данные не могут быть перезаписаны без стирания первой, и стирание возможно только в гораздо больших блоков, как правило , между 128 Кбайт и 2 Мбайт. Контроллеры группируют эти блоки стирания в еще более крупные сегменты, называемые "группами стирания блоков", "единицами выделения" или просто "сегментами". Наиболее распространенный размер для этих сегментов составляет 4 МБ для дисков в классе мультигигабайта, и все операции с диском происходят в этих устройствах; в частности, накопитель никогда не сотрет ни один блок, меньший сегмента.Оптимизация Linux с дешевыми флешками

Я хочу выровнять каждый отдельный раздел, соответствующий приведенному выше, но определить цифры не так просто. 24MiB довольно большой, но, согласно списку рассылки flashbench, существуют флэш-накопители с размерами стираемых блоков 6 или 12 MiB . Я хочу убедиться, что по крайней мере мои разделы выровнены, не выполняя тестирование с помощью flashbench.

Итак, если я начну свой первый раздел с 49152-го + 1 (поэтому он начинается прямо со «второй 24-мегабайтной части») сектора с 512 байтами, то этот раздел также выровняется по 1,2,4,6,8 и 12 МБ ? (И так далее, например, до 128k, потому что (24 * 1024)/128 - целое число)

2 ответа2

5

Хотя я не знаю из первых рук об электронике флэш-карт, позвольте мне попытаться уточнить мое понимание предмета.

Во-первых, выравнивание по 24 МБ выравнивает по всем подмножениям. Но полезно ли это - другой вопрос.

Во-вторых, выравнивание разделов по блоку стирания может заставить вас чувствовать себя лучше, но на самом деле важно выравнивание файлов в файловой системе. Поскольку файловая система начинается со своих собственных внутренних таблиц, необходимо заставить их принять размер, кратный размеру блока стирания, что далеко от тривиального упражнения. Поэтому выравнивание файловой системы - ваша следующая задача после выравнивания раздела.

Например, прочитайте борьбу Теодора Цо, чтобы добиться этого для своего диска SSD:
Выравнивание файловых систем по размеру стираемого блока SSD.

В-третьих, термин "блок стирания" и его применимость к любому конкретному флэш-накопителю обратно пропорционален интеллектуальным характеристикам контроллера флэш-диска. Современные контроллеры флэш-памяти становятся умнее и даже используют сжатие, поэтому идея о том, что операционная система знает, что происходит с этим диском, может быть всего лишь выдумкой, которая, скорее, применима к более дешевым или старым дискам.

В-четвертых, размеры блоков зависят от технологии изготовления. В статье AnandTech Micron анонсирует 16-нм 128-гигабайтные MLC NAND, твердотельные накопители 2014 года, и вот эта интересная сводная таблица, где размер блока составляет от 512 КБ до 8 МБ:

образ

В-пятых, некоторые технологии памяти используют "биты" N-состояний, называемые ячейками, так что одна физическая ячейка может содержать 1,5 или 2 логических бита или более. Контроллер, опять же, выполняет работу по переводу этого термина в термины, которые операционная система может понять, что, конечно, является чистой выдумкой.

В статье о дизайне карты флэш-памяти сказано следующее:

Во всех SLC и MLC флэш-памяти размер стираемого блока равен степени двойки. Во флэш-памяти TLC (также известной как MLC3, трехбитный MLC, 8LC или восьмиуровневая ячейка) возможны два варианта размещения. Блок стирания может иметь три секции с степенью двойки, в результате чего общий размер 1,5 МБ или 3 МБ, или он может иметь число страниц, не равное двум степеням, для каждого уровня, 43+43+42 страницы, всего 128 страниц на блок стирания.

Прочтите эту статью, чтобы узнать больше о том, как флэш-диски передают информацию об операционной системе, которая в основном ложна.

Вывод: в современных джунглях развивающихся технологий нет способа надежно рассчитать реальный размер блока стирания. Такие инструменты, как flashbench, могут быть единственным надежным способом вычисления этого значения, но результаты могут быть ложными для более развитых флэш-дисков. Представьте, например, flashbench, записывающий блок нулей 64 МБ, который контроллер флэш-памяти сжимает в несколько килобайт, поэтому flashbench действительно измеряет скорость передачи на устройство.

По моему мнению, поскольку выравнивание разделов считается "хорошим" делом, достаточно 4 МБ (8 МБ может быть лучше для новых дисков к концу 2014 года), и я не стал бы беспокоиться о большем. Если вы сомневаетесь, используйте flashbench, но не сомневайтесь в достоверности результатов. Странные размеры, о которых сообщает flashbench, вероятно, являются результатом переводов и оптимизаций, выполненных контроллером флэш-памяти на флэш-диске.

1

Да, каждое целое число кратно целому числу делителей.

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

Есть ваши основные делители на 24 МиБ, разделенные на блоки по 512 байт. Более конкретно, каждый блок, начинающийся с кратного 24 МБ, также начинается с кратного 12 МБ, 8 МБ, 6 МБ, 4 МБ, 2 МБ, 1 МБ и 512 КБ.

Теперь для вашего примерного вопроса: 49152 = 3 14 2 14, который делит 3 ⋅ 2 18. Поэтому мое вышеупомянутое утверждение относится к 49152-му блоку из 512 байтов.

Редактировать: я только сделал немного математики здесь. Как вы можете видеть из других ответов, техническая сторона вашей проблемы намного сложнее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .