Как отформатировать SD-карту с использованием более надежной файловой системы, пригодной для использования в Linux, с определенным размером кластера для повышения производительности записи?

Как отформатировать SD-карту с использованием более надежной файловой системы, пригодной для использования в Linux, с определенным размером кластера для повышения производительности записи?

Цель: отформатировать карту microSD...

  • для лучшей производительности записи
  • для использования только со встроенным Linux
  • для большей надежности (могут происходить случайные сбои питания)
  • используя размер кластера 64 КБ

Я использую карту microSD объемом 8 ГБ для хранения данных внутри встроенного устройства Linux/ARM. Карта SD несъемная. Я использовал ext3 вместо предустановленной FAT32, потому что она, по-видимому, лучше справляется со случайными сбоями питания во время записи. Однако я постоянно замечал, что моя производительность записи всегда лучше с предустановленной FAT32 от Kingston. Если я переформатирую карту в FAT32, производительность все равно страдает. После просмотра Википедии я наткнулся на следующий комментарий, в котором говорилось, что некоторые карты оптимизированы для определенных размеров кластера. В моем случае Kingston поставляется предварительно отформатированной для размера кластера 64 КБ.

Риски переформатирования

Переформатирование SD-карты с другой файловой системой или даже с той же самой может сделать карту медленнее или сократить срок ее службы. Некоторые карты используют выравнивание износа, при котором часто изменяемые блоки сопоставляются с различными участками памяти в разное время, а некоторые алгоритмы выравнивания износа разработаны для шаблонов доступа, типичных для таблицы размещения файлов на устройстве FAT16 или FAT32.[60] Кроме того, предварительно отформатированная файловая система может использовать размер кластера, который соответствует области стирания физической памяти на карте; переформатирование может изменить размер кластера и сделать запись менее эффективной.

решение1

Большинство SD-карт (а также USB-накопителей) оптимизированы для использования с FAT32. Использование их с любой другой FS приведет к снижению производительности.

Дополнительная информация наЛВН.

решение2

Обратите вниманиеИнструмент форматирования ассоциации SD-картделает для вас следующее.

У меня пока нет полного ответа для всех устройств. Однако вот ответ для карт 8GiB с использованием FAT32.

Разбейте карту так, чтобы раздел FAT32 начинался с сектора 8192, что составляет 4 МБ от начала диска. Затем отформатируйте раздел FAT32 с кластерами по 32 КБ и установите количество «зарезервированных секторов» так, чтобы область данных, кластер 2, раздела FAT32 начиналась с логического сектора 8192 (или 8 МБ от начала диска (4 МБ от начала раздела)).

Use 32kiB clusters
| 4MiB      | 4MiB                                | remainder of disk    |  
| -------   | ---------------------------------   | ------------------   |  
| MBR       | First Partition Header + FAT tables | First Partition Data |  

Краткое обоснование: Ассоциация SD Card рекомендовала эти границы в 4 МБ в качестве оптимизированных зон и рекомендует FAT32 в качестве файловой системы для карт такого размера. Микросхема контроллера в карте оптимизирована для небольших операций чтения/записи в этой второй области в 4 МБ.

Есть еще много чего, но это быстрый и грубый ответ. Вышеуказанный метод работает только для дисков < 16GiB для кластеров 32kiB и < 32GiB для кластеров 64kiB. Я подозреваю, что при больших размерах дисков область данных вытесняется на логические 8MiB, но у меня нет диска больше 8GiB для использования.

Связанный контент