Почему проверка диска Ext4 намного быстрее, чем NTFS?

12

У меня сегодня была ситуация, когда я перезагружал свой компьютер, и он сказал, что мне нужно проверить диск на предмет целостности. Примерно через 10 минут (при завершении «1%») я сдался и решил дать ему поработать, когда я вернусь домой.

Для сравнения, мой домашний компьютер использует Ext4 для всех разделов, а проверка диска (которая выполняется примерно раз в неделю) занимает всего пару секунд. Я помню, что читал, что быстрые проверки диска были приоритетом, но я не знаю, как они могли это сделать.

Итак, как Ext4 выполняет проверку диска так быстро? Есть ли огромный прорыв в этом после выхода NTFS (~ 10 лет назад)?

Примечание. Диск NTFS составляет ~ 300 ГБ, а диск Ext4 - ~ 500 ГБ. Оба наполовину полны.

Брендан Лонг
источник
У меня не было Windows chkdsk NTFS тома при загрузке с 2008 года выпуска R2. Даже в кластере CSV с несколькими узлами, обращающимися к одному и тому же NTFS-файлу, блокируются десятки тысяч индексных файлов Lucene. Это довольно впечатляюще.
Brain2000

Ответы:

11

Существует две основные причины разницы в производительности и две возможные причины. Во-первых, основные причины:


Увеличение производительности ext4 по сравнению с NTFS

Различные тесты пришли к выводу, что настоящая файловая система ext4 может выполнять различные операции чтения-записи быстрее, чем раздел NTFS. Обратите внимание, что хотя эти тесты не указывают на реальную производительность, мы можем экстраполировать эти результаты и использовать это в качестве одной из причин.

Что касается того, почему ext4 на самом деле работает лучше, чем NTFS, то это можно объяснить множеством причин. Например, ext4 напрямую поддерживает отложенное размещение. Опять же, прирост производительности зависит строго от используемого вами оборудования (и в некоторых случаях может быть полностью сведен на нет).

Уменьшенные требования проверки файловой системы

Файловая система ext4 также способна выполнять более быстрые проверки файловой системы, чем другие эквивалентные файловые системы журналирования (например, NTFS). Согласно странице Википедии:

В ext4 нераспределенные группы блоков и разделы таблицы inode помечаются как таковые. Это позволяет e2fsck полностью пропустить их при проверке и значительно сокращает время проверки файловой системы, поддерживаемой ext4. Эта функция реализована в версии 2.6.24 ядра Linux.


А теперь две возможные причины:


Сами файловые системы проверяют утилиты

Некоторые приложения могут запускать различные процедуры в файловых системах для фактической проверки работоспособности. Это легко увидеть, если вы используете утилиту fsck, установленную в Linux, или утилиту chkdsk в Windows. Эти приложения написаны на разных операционных системах для разных файловых систем. Причина, по которой я привожу это в качестве возможной причины, заключается в том, что системные вызовы низкого уровня в каждой операционной системе различны, и поэтому вы не сможете напрямую сравнивать утилиты с использованием двух разных операционных систем.

Фрагментация диска

Это легко понять, а также помогает нам понять различия между файловыми системами. Хотя все цифровые данные, хранящиеся в файле, одинаковы, способ их хранения на жестком диске сильно отличается от файловой системы к файловой системе. Фрагментация файлов, очевидно, может увеличить скорость доступа, что объясняется большей разницей в скорости.

Прорвать
источник
1
Что меня смущает, так это то, что ваша вторая точка изначально кажется, что она будет иметь самый большой эффект, но мой раздел Ext4 занимает примерно столько же места, сколько мой NTFS-раздел, - вместо того, чтобы быть намного быстрее, они должны быть примерно с той же скоростью. Я предполагаю , что это, скорее всего, повышение производительности ext4 делают это быстрее , чтобы проверить , как хорошо, но Ext4 не что намного быстрее , чем NTFS (конечно , не на несколько порядков величины разницы , которые я вижу в проверках файловой системы).
Брендан Лонг
Я не уверен, что вы имеете в виду ... В общем, содержимое файла занимает гораздо больше места, чем индексы в большинстве современных файловых систем (включая ext4 и NTFS). Файловые системы просто хранят содержимое по-разному, что (как я уже говорил, в некоторых случаях) обеспечивает более высокую производительность.
Прорыв
Что меня смущает, так это то, что фактически проверенная часть должна быть примерно одинакового размера на обоих (так как мой раздел Ext4 имеет примерно столько же места, сколько имеет раздел NTFS), но раздел Ext4 выполняет свою проверку за считанные секунды, в то время как NTFS один занимает часы.
Брендан Лонг
1
@ Брендан Долго, если вы посмотрите на первую ссылку в моем ответе, некоторые люди обнаружили, что чтение файлов на самом деле быстрее на диске, использующем ext4 по сравнению с NTFS. Даже если цифровые данные, хранящиеся в файле, одинаковы , они не сохраняются на диске. Однако, если вы говорите, что NTFS занимает несколько часов , вы, возможно, проверяете каждый сектор на диске, поэтому вы можете пропустить некоторые альтернативные проверки в проверке файловой системы ext4 (объясняя большую разницу в скорости). Проверять каждый файл намного быстрее, чем всю поверхность диска.
Прорыв
Этот ответ - просто список тем для разговоров ext4 и NTFS, не имеющих отношения к вопросу. Журнализированные файловые системы никогда не нужно проверять в обычной работе. Автоматическая проверка означает, что что-то серьезно не так. Не зная, что не так, невозможно понять, почему проверка такая медленная. Сравнение с еженедельными проверками ext4 - это сравнение яблок и апельсинов.
benrg
3

Насколько я понимаю, ext4 пытается записать данные в самый большой непрерывный промежуток открытых inode, где в настоящее время нет данных. Это значительно уменьшает задержку, когда эти файлы должны быть прочитаны, поскольку, по большей части, все содержимое отдельного файла в основном будет лежать на одной непрерывной дорожке, поэтому при поиске каждого блока, содержащего данные, головка диска будет меньше искать. это составляет тот один файл.

Он (ext4) может все еще стать фрагментированным, но гораздо менее, и не обязательно таким образом, который сильно влияет на производительность чтения / записи, как в NTFS. В NTFS данные записываются в первые открытые блоки по пути головы.

Поэтому, где бы ни находилась головка и есть открытые блоки, она записывает столько данных, сколько может уместиться, затем записывает туда, куда она попадает в другое место на диске, когда головка должна перемещаться, скажем, в другую часть диска, чтобы получить доступ к другому файлу, который должен быть открыт в программе, которую вы только что загрузили, пока этот другой файл еще записывался.
Это означает, что если файл большой, он, вероятно, будет разбит на блоки, отделенные друг от друга на отдельных дорожках, и поэтому для NTFS часто требуется дефрагментация.

Кроме того, почему серверы обычно не используют его, поскольку на сервере, где данные постоянно записываются и читаются с диска 24/7, происходит более интенсивный ввод-вывод.

Кроме того, я не уверен, но если chkdskпроверяет целостность каждого файла (что я считаю, и это и fsckделает), то это также будет медленнее по сравнению с тем, что я только что описал о фрагментации в NTFS.

Джесси Джеймс
источник
Ни NTFS chkdsk, ни ext4 fsck не читают данные файла. Это было бы бессмысленно, потому что нет контрольной суммы или какого-либо другого способа проверить ее целостность.
Бенг
0

Windows никогда не должна проверять том NTFS при запуске. Если это так, то что-то пошло не так - что-то намного хуже, чем просто BSOD или отключение питания. Существует значительная вероятность того, что некоторые из ваших данных также были повреждены какими-либо поврежденными метаданными файловой системы. Проверка диска не может обнаружить это; его единственная цель - избежать дальнейшей коррупции.

В KB2854570 перечислены некоторые причины, по которым это может произойти. Одним из них является переход в спящий режим с подключенным томом, изменение содержимого тома, а затем выход из режима гибернации с подключенным томом (пере). Если вы это сделаете, существует высокая вероятность повреждения данных без вывода сообщений.

Я не знаю, почему ваша файловая система ext4 проверяла себя один раз в неделю, но, вероятно, (надеюсь) это произошло не из-за сопоставимого кризиса, который повторялся еженедельно. Вероятно, это была просто обычная проверка работоспособности, а не полная проверка согласованности.

benrg
источник