Чому перевірка диска Ext4 настільки швидша, ніж NTFS?


12

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

Для порівняння, на моєму домашньому комп’ютері використовується Ext4 для всіх розділів, а перевірка диска (яка працює один раз на тиждень) займає лише пару секунд. Я пам'ятаю, як читав, що швидка перевірка диска була пріоритетною, але я не знаю, як вони могли це зробити.

Отже, як Ext4 так швидко перевіряє диск? Чи є якийсь великий прорив у здійсненні цього після виходу NTFS (~ 10 років тому)?

Примітка: Диск NTFS становить ~ 300 ГБ, а диск Ext4 - 500 ГБ. Обидва приблизно наполовину повні.


У мене не було Windows chkdsk том NTFS під час завантаження з 2008 року випущено R2. Навіть у CSV-кластері з декількома вузлами, що мають доступ до одного і того ж обсягу NTFS, блокуючи десятки тисяч файлів індексу люцена. Це досить вражаюче.
Brain2000

Chkdsk, що працює під час запуску, означає, що ОС зіткнулася з невідповідністю метаданих файлової системи, що є серйозною проблемою. Chkdsk, швидше за все, зателефонував прапором "перевірити кожен диск на предмет поганості та полагодити, якщо можливо", дуже трудомістка операція. Звичайні перевірки fsck, звичайно, цього не роблять.
kreemoweet

Відповіді:


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
@Brendan Long Якщо ви подивитесь на перше посилання моєї відповіді, деякі люди виявили, що зчитування файлів насправді швидше за допомогою диска, що використовує ext4 проти NTFS. Хоча цифрові дані, що містяться у файлі, однакові , вони не зберігаються однаково на диску. Однак якщо ви кажете, що NTFS займає години , то ви, можливо, перевіряєте кожен сектор на диску, тому ви можете пропустити деякі альтернативні перевірки файлової системи ext4 (пояснюючи велику різницю швидкості). Набагато швидше перевірити кожен файл, а не всю поверхню диска.
Прорив

1
Ця відповідь є лише списком розмовних файлів ext4 vs NTFS, що не стосуються питання. Журналізовані файлові системи ніколи не потрібно перевіряти в звичайній роботі. Автоматична перевірка означає, що щось серйозно не так. Не знаючи, що не так, неможливо дізнатися, чому перевірка настільки повільна. Порівнюючи це з тижневими перевірками ext4 - це порівняння яблук і апельсинів.
benrg

3

З мого розуміння, ext4 намагається записати дані у найбільший безперервний проміжок відкритих вузлів, де в даний час немає жодних даних. Це суттєво зменшує затримку, коли ці файли доводиться читати, здебільшого, весь вміст окремого файлу здебільшого лежить на одній безперервній доріжці, тому головка дисків буде менше шукати робити при пошуку кожного блоку, що містить дані що складає цей один файл.

Він (ext4) все ще може бути фрагментованим, але набагато менше, але не обов'язково таким чином, що сильно впливає на продуктивність читання / запису, як у випадку з NTFS. На NTFS дані записуються до перших відкритих блоків на шляху голови.

Тож де б голова лежала, і там є відкриті блоки, вона записує стільки цих даних, скільки може вміститися, тоді пише де б вона не потрапила в інше місце на диску, коли головка повинна переміститися, скажімо, до іншої частини диска, щоб отримати доступ до іншого файлу, який має бути відкрито в програмі, яку ви тільки що завантажили, поки цей інший файл ще писався.
Це означає, що якщо файл великий, то, швидше за все, він буде розкладений у блоки, відокремлені один від одного на окремих треках, і тому дефрагментація потрібна часто для NTFS.

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

Також я не впевнений, але якщо chkdskперевірятиметься цілісність кожного файлу (що я вважаю, що він і fsckробить), це також буде повільніше порівняно з тим, що я щойно описав про фрагментацію на NTFS.


Ні NTFS chkdsk, ні ext4 fsck не читають дані файлів. Це було б безглуздо, оскільки немає контрольної суми або будь-якого іншого способу перевірки її цілісності.
benrg

1

Windows ніколи не повинен перевіряти гучність NTFS при запуску. Якщо це станеться, щось пішло серйозно не так - щось набагато гірше, ніж просто BSOD або відключення електроенергії. Існує велика ймовірність, що деякі ваші дані також були пошкоджені будь-якими пошкодженими метаданими файлової системи. Перевірка диска не може цього виявити; єдина його мета - уникнути подальшої корупції.

KB2854570 перераховує деякі причини, що це може статися. Перший - це сплячий режим ОС із встановленим обсягом, зміна вмісту гучності, а потім відновлення після сплячки із додаванням гучності (пере). Якщо ви це зробите, велика ймовірність мовчазного пошкодження даних.

Я не знаю, чому ваша файлова система ext4 перевіряла себе один раз на тиждень, але, мабуть, (сподіваємось) це не було пов’язано із порівнянною кризою, що повторювалася щотижня. Ймовірно, це було просто звичайна перевірка здорової перевірки, а не повна перевірка узгодженості.


1
Протягом тривалого часу автоматична перевірка fsck кожного монтажу файлової системи Nth була стандартною у більшості дистрибутивів Linux. На сьогодні цей параметр зазвичай за умовчанням вимкнено.
kreemoweet

0

Оскільки технології UNIX / Linux Ext2 / Ext3 / Ext4 закладають набагато більш жорстку магнітну смугу бітів даних порівняно з NTFS, що встановлює магнітні біти даних, на відміну від балончика з фарбою. NTFS потребує регулярних "дефрагментів", де як Ext2 / 3/4 рідко потрібні дефрагменти. Це так просто. Якщо вам потрібне щось з вашого накопичувача UNIX / Linux - ОС точно знає, куди потрібно взяти накопичувачі щільно намагнічених бітів даних, тоді як NTFS повинен перебирати всі диски, щоб забрати їх. Система журналів NTFS працює дуже добре - але, голови грають в понг, щоб забрати магнітні шматочки, які були закладені. Подвійна файлова система FAT працює добре - але, коли вам доведеться бігати по всій акрі, щоб зібрати свої бушелі з одинарних біт - це набагато швидше, якщо вам не доведеться і можете забрати цілі рядки біт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.