Поддержка NTFS в Linux, работа с большими разреженными файлами, влияние на производительность
Фон:
Я попытался восстановить данные с неисправного жесткого диска, используя ddrescue в недавней среде Knoppix. Сначала я сохранял выходные данные в разделе NTFS, но в какой-то момент скорость копирования стала очень низкой (~600 КБ / с), и я прочитал в руководстве на французском для этого инструмента, что восстановление в NTFS не рекомендуется, особенно для большой объем, как сообщалось, приведет к значительному замедлению. Затем я переключился на ext4, и производительность, казалось, значительно улучшилась. (См. Этот вопрос.)
Я заметил, что "размер на диске" для файлов выходных изображений, сгенерированных ddrescue, был намного ниже их фактического размера, что означает, что ddrescue каким-то образом только распределяет данные, которые были успешно прочитаны из ввода, что приводит к "частично разреженному" выводу, даже когда ключ -S ("разреженные записи") не используется. В этом случае использование ключа -S приводит к тому, что пустые сектора, которые фактически считываются с входа, также нераспределяются на выходе, что делает его "полностью" разреженным. (Смотрите этот другой вопрос.)
Вопрос:
Как объяснить этот разрыв в производительности между NTFS и ext4? Это действительно связано с разреженностью? Известно ли, что в драйвере Linux NTFS возникают проблемы при работе с большими разреженными файлами?
1 ответ
Для начала вы, вероятно, использовали NTFS-3G, которая реализована в пользовательском пространстве, а не в ядре. Это само по себе означает, что при использовании NTFS вы по крайней мере удвоили переключение контекста по сравнению с ext4.
Кроме того, я не могу особо комментировать, в чем может быть проблема, кроме упоминания о том, что, основываясь на моем собственном тестировании, NTFS, по-видимому, не очень эффективно обрабатывает разреженные файлы на LInux, либо с использованием NTFS-3G, либо с использованием ядра родной драйвер (который почти никто не использует, потому что NTFS-3G имеет гораздо лучшую общую поддержку).