Вопрос или проблема
Шаги для воспроизведения:
- Используйте один USB HDD с LUKSv2 и отформатированный с настройками по умолчанию ext4 (за исключением только 10 зарезервированных блоков, а не 5%);
- Используйте Ubuntu или Debian с Gnome, который позволяет разблокировать HDD;
- Попытка открыть директорию, открыть файл или записать проходит очень медленно. Я слышу шум на HDD из-за случайного поиска;
- Команда
dstat
показывает около 3 МБ/с на чтение в течение около 3 минут при отсутствии взаимодействия с компьютером.
Ничего существенного не появляется в журнале ядра.
Возможно ли отключить это, что, похоже, является проверкой, и где?
Заранее спасибо.
Вы можете использовать “iotop” или “blktrace”, чтобы увидеть, что делает доступ к диску.
Это может быть lazyinit или подобная проверка, требуется ли какая-либо инициализация “первого монтирования”. В любом случае это не бесполезный ввод-вывод, поскольку выделение блоков/инодов требует чтения тех же метаданных с диска (и их расшифровки в случае LUKS).
Как только вы узнаете, что это такое, могут появиться опции для его отключения.
.
Ответ или решение
Когда вы сталкиваетесь с ситуацией, где после монтирования зашифрованного устройства LUKS и файловой системы EXT4 на жестком диске происходит случайное чтение, вызывающее существенное замедление в течение примерно трёх минут, важно понять теоретическую подоплёку этого явления, прежде чем предпринимать практические шаги для его решения.
Теория
При использовании зашифрованного устройства LUKSv2 и файловой системы EXT4, система должна выполнить ряд операций при первом монтировании. LUKS требует расшифровки заголовка и выполнения аутентификации, что может занять время. EXT4, в свою очередь, имеет механизм инициализации — lazyinit
, который фоново завершает форматирование структуры данных, таких как inode и журналы. Это похоже на необходимую "домашнюю работу", которую файловая система должна сделать, чтобы подготовиться к безопасной и эффективной записи и чтению данных.
Пример
Представьте себе книгу, которая после поступления из издательства проверяется библиотекарем: необходимо удостовериться в отсутствии дефектов печати, все страницы должны быть на месте, а название должно соответствовать открытому книжному каталогу. Это подобно тому, как EXT4 проводит дополнительное "структурное сканирование" за кадром.
Когда вы подключаете внешнее USB-устройство, операционная система, возможно, выполняет ряд проверок на уровне файловой системы и LUKS. Команда dstat
показывает вам, что считывание происходит со скоростью около 3 МБ/с, однако это не непроизводительная деятельность, а скорее целенаправленная работа с метаданными. В operate свет тоже не загорается без причины; так и система должна подтвердить целостность и консистентность.
Применение
Для начала, полезно понять источник интенсивного ввода-вывода. Используйте утилиты, такие как iotop
или blktrace
, чтобы отследить, какое именно приложение или системный процесс инициирует все эти вызовы. После этого можно принимать более четкие решения.
- Проверка процессов:
iotop
поможет увидеть активные процессы, могущие быть причиной интенсивных операций ввода-вывода. - Блок-трассировка:
blktrace
предоставляет детальные данные о том, какие блоки считываются или записываются и в каком порядке.
Если как результаты вы видите, что основной источник — это init-процедуры файловой системы, целесообразно изучить параметры монтирования или отправки команд для деактивации некоторых из них, например, lazy_itable_init
, которая может быть причиной отложенной инициализации таблицы inode. Можно попробовать отформатировать файловую систему с этой опцией:
mkfs.ext4 -E lazy_itable_init=0 /dev/sdX
Следует помнить, что отказ от некоторых init-процедур может привести к замедлениям при записи, так как эти процедуры выполняются для оптимизации работы файловой системы.
В качестве альтернативы, многие пользователи находят целесообразным перейти на более быстрые SSD для систем, где задержки из-за инициализации данных критичны. SSD-накопители не страдают от механических задержек, связанный с HDD, так как там нет подвижных частей.
Как видно, проблема значительно снижается до уровня обязательных инициализаций и проверки выравнивания метаданных. Программа дальнейших действий должна начинаться с диагностики, а затем касаться оптимизации монтируемых атрибутов, при соблюдении осторожности к компромиссам в безопасности и производительности.