Удивительно большие накладные расходы при создании небольшого тома ubifs

Если команды завершено ; вы можете:

 awk -v RS=";" '/from/' file

Если вам нужны только имена таблиц после "from", вы можете попробовать

 perl -0nE 'say join(";", /from\s+(\w+)/ig)' file
4
14.07.2016, 11:29
1 ответ

Почему числа не совпадают

Предупреждение «как минимум 17 стираемых блоков» подсчитывает блоки, необходимые для самой файловой системы UBIFS. Из этих 17 блоков стирания 14 являются накладными расходами UBIFS, а 3 — используемым пространством файловой системы. Нижележащий слой UBI также использует 5 блоков стирания служебных данных.

Получение большего пространства

Невозможно сделать так, чтобы один раздел UBI с одной файловой системой UBIFS использовал меньше накладных расходов.

Однако, если на одном устройстве MTD имеется несколько разделов UBI, я рекомендую их объединить. Это не только освободит 5 блоков стирания, но также улучшит выравнивание износа и обработку поврежденных блоков, потому что UBI будет иметь больше возможностей для сопоставления физических блоков стирания с блоками логического стирания по мере необходимости.

(Игнорируя накладные расходы, представьте себе два раздела по два блока в каждом, один из которых неисправен. Теперь на одном разделе остался только один блок, и сделать выравнивание износа невозможно. Но если вы объедините их, у вас останется три хороших блока, которые можно будет разделить между двумя файловыми системами по мере необходимости.)

Объединение двух смежных разделов UBI:

  • Обновите таблицу разделов MTD, заменив два раздела одним большим.
  • Запустите ubiformatна этом одном большом разделе.
  • Запустите ubimkvolдважды, указав соответствующие имена разделов и указав размеры вручную с помощью -sили -S.

Учет накладных расходов UBI+UBIFS

Во-первых, уровень UBI занимает 5 блоков стирания служебных данных:

  • 2 для таблицы объемов
  • 1 зарезервировано для алгоритма выравнивания износа
  • 1 зарезервировано для функции "атомарного изменения LEB", которая обеспечивает надежное обновление -места логического блока стирания
  • 1 (в идеале больше, как вы упомянули, )зарезервировано для обработки плохих блоков физического стирания.

Далее,уровень UBIFS имеет минимальное количество блоков стирания для метаданных файловой системы:

  • 1 для суперблока файловой системы, который идентифицирует том как действительный UBIFS и хранит параметры файловой системы
  • 2 для области главного узла (избыточные копии ), которые являются корнями дерева, используемого для поиска в файловой системе
  • 2 или более для области журнала (, которая учитывается в полезном пространстве)
  • 2 для дерева свойств LEB, которое отслеживает использование каждого блока логического стирания
  • 1 или более для потерянной области (для отслеживания удаленных файлов, чтобы они правильно очищались после нечистого размонтирования)
  • 8 зарезервировано для метаданных файловой системы (сборка мусора, удаления, почки, индекс)
  • 1 или более для зафиксированных данных, отсутствующих в журнале (полезное пространство ).

Ссылки

Что касается служебной информации UBI, на сайте linux -mtd есть простое описание .

Что касается накладных расходов UBIFS, мне пришлось немного покопаться. Исходный код mtd -utils подсчитывает абсолютное минимальное количество блоков стирания и упоминает, для чего предназначен каждый блок. Чтобы понять это, полезно использовать технический документ UBIFS .

4
27.01.2020, 20:59

Теги

Похожие вопросы