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

Я могу представить несколько причин, почему это может быть, существует ли конкретная информация, чтобы объяснить это?

Мысли:

  1. Обновление таблицы файлов требует изменения ранних частей диска, требующих существенной перезаписи данных в соответствии с перезаписью SMR.
  2. Для связанных файлов требуются обновления счетчика ссылок, которые изменяют таблицу файлов, опять же, требуя значительной перезаписи данных.

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

Особенности: Диск: Seagate Archive 6 ТБ ОС: ядро CentOS 7 3.10.0 Файловая система: BTRFS Использование диска: 66%

1 ответ1

1

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

Скорее всего, каждый сектор, который подвергается модификации, влияет на единичную единицу, и это объясняет, почему вы видите ужасную производительность: вы пишете, например, 10 блоков данных (10x4 = 40 КиБ)? из-за нехватки локальности вы можете прочитать 10x 10 МБ (40 МБ), а затем написать еще 40 МБ. Добавьте тот факт, что на разных этапах процесса наблюдается задержка поиска, и производительность убивается.

Вероятно, нет решения, кроме как переключиться на не-SMR диск или файловую систему не-CoW.

Редактировать: дополнительная информация https://lwn.net/Articles/637035/ (SMR-осведомленные файловые системы)

http://www.tomsitpro.com/articles/shingled-magn-recoding-smr-101-basics,2-933.html#p3 "HGST использует полосы 256 МБ в своих первых предложениях. Seagate указывает, что размеры полос настраиваются для пользовательских рабочих нагрузок дисков и приложений ", поэтому вы читаете И записываете потенциально 256 МБ на каждый сектор (4 КБ), который вы изменяете.

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