Сравнение файловых систем NTFS и FAT
В предлагаемой ниже статье
оценивается быстродействие файловых систем FAT (FAT32) и NTFS, но существуют и другие, не менее важные причины, побуждающие пользователя использовать ту или иную файловую систему и в частности файловую систему NTFS:
- она обеспечивает, в отличие от FAT, возможность гибкой настройки ограничения доступа к конкретным файлам и каталогам, как на локальном компьютере, так и на сетевом. То есть она позволяет указать, какие пользователи и группы имеют доступ к файлу или папке и указать тип доступа.
- она имеет встроенные средства восстановления данных. В случае краха системы, установленной на диске с файловой системой NTFS, имеется возможность автоматически восстановить данные, используя информацию контрольных точек и журнала транзакций.
- Оригинальная структура папок файловой системы NTFS позволяет существенно ускорить доступ к файлам в папкам большого объема по сравнению со скоростью доступа к папкам такого же объема на томах FAT. Кроме того NTFS позволяет осуществлять сжатие отдельных папок и файлов, и обращаться к ним, не вызывая программы, производящей декомпрессию.
- Имеется возможность шифрования данных.
- Поиск данных файла
Выяснение того, в каких областях диска хранится тот или иной фрагмент файла — процесс, который имеет принципиально разное воплощение в различных файловых системах. Имейте в виду, что это лишь поиск информации о местоположении файла — доступ к самим данным, фрагментированы они или нет, здесь уже не рассматривается, так как этот процесс совершенно одинаков для всех систем. Речь идет о тех "лишних" действиях, которые приходится выполнять системе перед доступом к реальным данным файлов.
На что влияет этот параметр: на скорость навигации по файлу (доступ к произвольному фрагменту файла). Любая работа с большими файлами данных и документов, если их размер — несколько мегабайт и более. Этот параметр показывает, насколько сильно сама файловая система страдает от фрагментации файлов.
- NTFS способна обеспечить быстрый поиск фрагментов, поскольку вся информация хранится в нескольких очень компактных записях (типичный размер — несколько килобайт). Если файл очень сильно фрагментирован (содержит большое число фрагментов) — NTFS придется использовать много записей, что часто заставит хранить их в разных местах. Лишние движения головок при поиске этих данных, в таком случае, приведут к сильному замедлению процесса поиска данных о местоположении файла.
- FAT32, из-за большой области самой таблицы размещения будет испытывать огромные трудности, если фрагменты файла разбросаны по всему диску. Дело в том, что FAT (File Allocation Table, таблица размещения файлов) представляет собой мини-образ диска, куда включен каждый его кластер. Для доступа к фрагменту файла в системе FAT16 и FAT32 приходится обращаться к соответствующей частичке FAT. Если файл, к примеру, расположен в трех фрагментах — в начале диска, в середине, и в конце — то в системе FAT нам придется обратиться к фрагменту FAT также в его начале, в середине и в конце. В системе FAT16, где максимальный размер области FAT составляет 128 Кбайт, это не составит проблемы — вся область FAT просто хранится в памяти, или же считывается с диска целиком за один проход и буферизируется. FAT32 же, напротив, имеет типичный размер области FAT порядка сотен килобайт, а на больших дисках — даже несколько мегабайт.
Если файл расположен в разных частях диска — это вынуждает систему совершать движения головок винчестера столько раз, сколько групп фрагментов в разных областях имеет файл, а это очень и очень сильно замедляет процесс поиска фрагментов файла.
Это возможно потому, что практически все объекты операционной системы, установленной на диске, использующем файловую систему NTFS, представляют собой файлы. Каждый занятый сектор в томе NTFS принадлежит какому-нибудь файлу. Частью файла являются даже метаданные файловой системы (информация, которая представляет собой описание самой файловой системы).
Кстати, в системах «Windows 2000» и «Windows XP» используется NTFS версии 5.0, на базе которой реализованы новые функциональные возможности: квоты диска, шифрование файлов и каталогов (EFS) и т.д. Подробнее — .
Эта файловая система несовместима с предыдущими версиями «Windows NT», поэтому если загрузить более раннюю версию операционной системы, то разделы NTFS 5.0 будут недоступны (для «Windows NT 4.0» нужно ставить «Service Pack 4»). При установке «Windows 2000» или «Windows XP» на уже существующий том с предыдущими версиями NTFS произойдет автоматическая конвертация до NTFS 5.0.
Статья, которая предлагается ниже, написана достаточно давно (когда далеко не каждый компьютер имел больше 64 Мб оперативной памяти), поэтому в ней упоминается только «Windows 2000», но и сейчас информация из этой статьи не потеряла актуальности и всё сказанное справедливо и для «Windows XP». Устарело, пожалуй, только начало предпоследнего абзаца. * * *
В этой статье я попытаюсь дать оценку быстродействию файловых систем, используемых в операционных системах «Windows95/98/ME», а также «Windows NT/2000». Статья не содержит графиков и результатов тестирований, так как эти результаты слишком сильно зависят от случая, методик тестирования и конкретных систем, и не имеют почти никакой связи с реальным положением дел. В этом материале я вместо этого постараюсь описать общие тенденции и соображения, связанные с производительностью файловых систем. Прочитав данный материал, вы получите информацию для размышлений и сможете сами сделать выводы, понять, какая система будет быстрее в ваших условиях, и почему. Возможно, некоторые факты помогут вам также оптимизировать быстродействие своей машины с точки зрения файловых систем, подскажут какие-то решения, которые приведут к повышению скорости работы всего компьютера. В данном обзоре упоминаются три системы — FAT16, FAT32 и NTFS, так как основной вопрос, стоящий перед пользователями «Windows2000» — это выбор между этими вариантами. Я приношу извинение пользователям других файловых систем, но проблема выбора между двумя, внешне совершенно равнозначными, вариантами со всей остротой стоит сейчас только в среде «Windows2000». Я надеюсь, всё же, что изложенные соображения покажутся вам любопытными, и вы сможете сделать какие-то выводы и о тех системах, с которыми вам приходится работать.
Данная статья состоит из множества разделов, каждый из которых посвящен какому-то одному вопросу быстродействия. Многие из этих разделов в определенных местах тесно переплетаются между собой. Тем не менее, чтобы не превращать статью в кашу, в соответствующем разделе я буду писать только о том, что имеет отношение к обсуждаемой в данный момент теме, и ни о чем более.
Если вы не нашли каких-то важных фактов в тексте — не спешите удивляться: скорее всего, вы встретите их позже. Прошу вас также не делать никаких поспешных выводов о недостатках и преимуществах той или иной системы, так как противоречий и подводных камней в этих рассуждениях очень и очень много. В конце я попытаюсь собрать воедино всё, что можно сказать о быстродействии систем в реальных условиях.
Самое фундаментальное свойство любой файловой системы, влияющее на быстродействие всех дисковых операций — структура организации и хранения информации, т.е. то, как, собственно, устроена сама файловая система. Первый раздел — попытка анализа именно этого аспекта работы, т.е. физической работы со структурами и данными файловой системы. Теоретические рассуждения, в принципе, могут быть пропущены — те, кто интересуется лишь чисто практическими аспектами быстродействия файловых систем, могут обратиться сразу ко второй части статьи.
Для начала хотелось бы заметить, что любая файловая система так или иначе хранит файлы. Доступ к данным файлов — основная и неотъемлемая часть работы с файловой системой, и поэтому, прежде всего, нужно сказать пару слов об этом. Любая файловая система хранит данные файлов в неких объемах — секторах, которые используются аппаратурой и драйвером как самая маленькая единица полезной информации диска. Размер сектора в подавляющем числе современных систем составляет 512 байт, и все файловые системы просто читают эту информацию и передают её без какой либо обработки приложениям. Есть ли тут какие-то исключения? Практически нет. Если файл хранится в сжатом или закодированном виде — как это возможно, к примеру, в системе NTFS — то, конечно, на восстановление или расшифровку информации тратится время и ресурсы процессора. В остальных случаях чтение и запись самих данных файла осуществляется с одинаковой скоростью, какую файловую систему вы не использовали бы.
Обратим внимание на основные процессы, осуществляемые системой для доступа к файлам:
Вывод: Абсолютный лидер — FAT16, он никогда не заставит систему делать лишние дисковые операции для данной цели. Затем идет NTFS — эта система также не требует чтения лишней информации, по крайней мере, до того момента, пока файл имеет разумное число фрагментов. FAT32 испытывает огромные трудности, вплоть до чтения лишних сотен килобайт из области FAT, если файл разбросан разным областям диска. Работа с внушительными по размеру файлами на FAT32 в любом случае сопряжена с огромными трудностями — понять, в каком месте на диске расположен тот или иной фрагмент файла, можно лишь изучив всю последовательность кластеров файла с самого начала, обрабатывая за один раз один кластер (через каждые 4 Кбайт файла в типичной системе). Стоит отметить, что если файл фрагментирован, но лежит компактной кучей фрагментов — FAT32 всё же не испытывает больших трудностей, так как физический доступ к области FAT будет также компактен и буферизован.
Данная операция производится в том случае, если файл нужно создать с нуля или скопировать на диск. Поиск места под физические данные файла зависит от того, как хранится информация о занятых участках диска.
На что влияет этот параметр: на скорость создания файлов, особенно больших. Сохранение или создание в реальном времени больших мультимедийных файлов (.wav, к примеру), копирование больших объемов информации, т.д. Этот параметр показывает, насколько быстро система сможет найти место для записи на диск новых данных, и какие операции ей придется для этого проделать.
Для поиска свободного места на диске может потребоваться просмотреть почти всего FAT — это 128 Кбайт (максимум) для FAT16 и до нескольких мегабайт (!) — в FAT32. Для того, чтобы не превращать поиск свободного места в катастрофу (для FAT32), операционной системе приходится идти на различные ухищрения.
Вывод: NTFS имеет наиболее эффективную систему нахождения свободного места. Стоит отметить, что действовать "в лоб" на FAT16 или FAT32 очень медленно, поэтому для нахождения свободного места в этих системах применяются различные методы оптимизации, в результате чего и там достигается приемлемая скорость. (Одно можно сказать наверняка — поиск свободного места при работе в DOS на FAT32 — катастрофический по скорости процесс, поскольку никакая оптимизация невозможна без поддержки хоть сколь серьезной операционной системы).
Каждая файловая система выполняет элементарные операции с файлами — доступ, удаление, создание, перемещение и т.д. Скорость работы этих операций зависит от принципов организации хранения данных об отдельных файлах и от устройства структур каталогов.
На что влияет этот параметр: на скорость осуществления любых операций с файлом, в том числе — на скорость любой операции доступа к файлу, особенно — в каталогах с большим числом файлов (тысячи).
Единственная проблема, которая может существенно понизить скорость работы каталогов FAT — большое количество файлов в одном каталоге (порядка тысячи или более). Система хранения данных — линейный массив — не позволяет организовать эффективный поиск файлов в таком каталоге, и для нахождения данного файла приходится перебирать большой объем данных (в среднем — половину файла каталога).
Стоит заметить, однако, что сам каталог NTFS представляет собой гораздо менее компактную структуру, нежели каталог FAT — это связано с гораздо большим (в несколько раз) размером одной записи каталога. Данное обстоятельство приводит к тому, что каталоги на томе NTFS в подавляющем числе случаев сильно фрагментированы. Размер типичного каталога на FAT-е укладывается в один кластер, тогда как сотня файлов (и даже меньше) в каталоге на NTFS уже приводит к размеру файла каталога, превышающему типичный размер одного кластера. Это, в свою очередь, почти гарантирует фрагментацию файла каталога, что, к сожалению, довольно часто сводит на нет все преимущества гораздо более эффективной организации самих данных.
Вывод: структура каталогов на NTFS теоретически гораздо эффективнее, но при размере каталога в несколько сотен файлов это практически не имеет значения. Фрагментация каталогов NTFS, однако, уверенно наступает уже при таком размере каталога. Для малых и средних каталогов NTFS, как это не печально, имеет на практике меньшее быстродействие.
Преимущества каталогов NTFS становятся реальными и неоспоримыми только в том случае, если в одно каталоге присутствуют тысячи файлов — в этом случае быстродействие компенсирует фрагментацию самого каталога и трудности с физическим обращением к данным (в первый раз — далее каталог кэшируется). Напряженная работа с каталогами, содержащими порядка тысячи и более файлов, проходит на NTFS буквально в несколько раз быстрее, а иногда выигрыш в скорости по сравнению с FAT и FAT32 достигает десятков раз.
К сожалению, как это часто бывает во всевозможных компьютерных вопросах, практика не очень хорошо согласуется с теорией. NTFS, имеющая, казалось бы, очевидные преимущества в структуре, показывает не настолько уж фантастические результаты, как можно было бы ожидать. Какие еще соображения влияют на быстродействие файловой системы? Каждый из рассматриваемых далее вопросов вносит свой вклад в итоговое быстродействие. Помните, однако, что реальное быстродействие — результат действия сразу всех факторов, поэтому и в этой части статьи не стоит делать поспешных выводов.
Очень многие данные современных файловых систем кэшируются или буферизируются в памяти компьютера, что позволяет избежать лишних операций физического чтения данных с диска. Для нормальной (высокопроизводительной) работы системы в кэше приходится хранить следующие типы информации:
В случае, если этот базовый объем информации не будет доступен прямо в оперативной памяти, системе придется совершать множество ненужных операций еще до того, как она начнет работу с реальными данными. Что входит в эти объемы в разных файловых системах? Или, вопрос в более практической плоскости, — каким объемом свободной оперативной памяти надо располагать, чтобы эффективно работать с той или иной файловой системой?
К сожалению, можно с уверенностью сказать: NTFS теряет огромное количество своего теоретического быстродействия из-за недостаточного кэширования. На системах, имеющих менее 64 Мбайт памяти, NTFS просто не может оказаться быстрее FAT16 или FAT32. Единственное исключение из этого правила — диски FAT32, имеющие объем десятки Гбайт (я бы лично серьезно опасался дисков FAT32 объемом свыше, скажем, 30 Гбайт). В остальных же случаях — системы с менее чем 64 мегабайтами памяти просто обязаны работать с FAT32 быстрее.
Типичный в настоящее время объем памяти в 64 Мбайта, к сожалению, также не дает возможности организовать эффективную работу с NTFS. На малых и средних дисках (до 10 Гбайт) в типичных системах FAT32 будет работать, пожалуй, немного быстрее. Единственное, что можно сказать по поводу быстродействия систем с таким объемом оперативной памяти — системы, работающие с FAT32, будут гораздо сильнее страдать от фрагментации, чем системы на NTFS. Но если хотя бы изредка дефрагментировать диски, то FAT32, с точки зрения быстродействия, является предпочтительным вариантом. Многие люди, тем не менее, выбирают в таких системах NTFS — просто из-за того, что это даст некоторые довольно важные преимущества, тогда как типичная потеря быстродействия не очень велика.
Системы с более чем 64 Мбайтами, а особенно — со 128 Мбайт и более памяти, смогут уверенно кэшировать абсолютно всё, что необходимо для работы систем, и вот на таких компьютерах NTFS, скорее всего, покажет более высокое быстродействие из-за более продуманной организации данных.
Влияют ли физические параметры жесткого диска на быстродействие файловой системы? Да, хоть и не сильно, но влияют. Можно выделить следующие параметры физической дисковой системы, которые по-разному влияют на разные типы файловых систем:
Гораздо большая фрагментация каталогов, возможность фрагментации системных областей — всё это делает диски NTFS гораздо более чувствительными к скорости считывания произвольных (случайных) областей диска. По этой причине использовать NTFS на медленных (старых) дисках не рекомендуется, так как высокое (худшее) время поиска дорожки дает еще один плюс в пользу систем FAT.
Подводя краткий итог влиянию быстродействия диска и контроллера на быстродействия системы в целом, можно сказать так: NTFS страдает от медленных дисков гораздо сильнее, чем FAT.
Хотелось бы сказать пару слов о размере кластера — тот параметр, который в файловых системах FAT32 и NTFS можно задавать при форматировании практически произвольно.
Прежде всего, надо сказать, что больший размер кластера — это практически всегда большее быстродействие. Размер кластера на томе NTFS, однако, имеет меньшее влияние на быстродействие, чем размер кластера для системы FAT32.
NTFS является достаточно сложной системой, поэтому, в отличие от FAT16 и FAT32, имеются и другие факторы, которые могут привести к существенному замедлению работы NTFS:
В данной заключительной части "одной строчкой" собраны ключевые особенности быстродействия этих трех файловых систем.
FAT — плюсы:
- Для эффективной работы требуется немного оперативной памяти.
- Быстрая работа с малыми и средними каталогами.
- Диск совершает в среднем меньшее количество движений головок (в сравнении с NTFS).
- Эффективная работа на медленных дисках.
- Катастрофическая потеря быстродействия с увеличением фрагментации, особенно для больших дисков (только FAT32).
- Сложности с произвольным доступом к большим (скажем, 10% и более от размера диска) файлам.
- Очень медленная работа с каталогами, содержащими большое количество файлов.
- Фрагментация файлов не имеет практически никаких последствий для самой файловой системы — работа фрагментированной системы ухудшается только с точки зрения доступа к самим данным файлов.
- Сложность структуры каталогов и число файлов в одном каталоге также не чинит особых препятствий быстродействию.
- Быстрый доступ к произвольному фрагменту файла (например, редактирование больших .wav файлов).
- Очень быстрый доступ к маленьким файлам (несколько сотен байт) — весь файл находится в том же месте, где и системные данные (запись MFT).
- Существенные требования к памяти системы (64 Мбайт — абсолютный минимум, лучше — больше).
- Медленные диски и контроллеры без Bus Mastering сильно снижают быстродействие NTFS.
- Работа с каталогами средних размеров затруднена тем, что они почти всегда фрагментированы.
- Диск, долго работающий в заполненном на 80% — 90% состоянии, будет показывать крайне низкое быстродействие.
Хотелось бы еще раз подчеркнуть, что на практике основной фактор, от которого зависит быстродействие файловой системы — это, как ни странно, объем памяти машины. Системы с памятью 64-96 Мбайт — некий рубеж, на котором быстродействие NTFS и FAT32 примерно эквивалентно. Обратите внимание также на сложность организации данных на вашей машине. Если вы не используете ничего, кроме простейших приложений и самой операционной системы — может случиться так, что FAT32 сможет показать более высокое быстродействие и на машинах с большим количеством памяти.
NTFS — система, которая закладывалась на будущее, и это будущее для большинства реальных применений сегодняшнего дня еще, к сожалению, видимо не наступило. На данный момент NTFS обеспечивает стабильное и равнодушное к целому ряду факторов, но, пожалуй, всё же невысокое — на типичной "игровой" домашней системе — быстродействие. Основное преимущество NTFS с точки зрения быстродействия заключается в том, что этой системе безразличны такие параметры, как сложность каталогов (число файлов в одном каталоге), размер диска, фрагментация и т.д. В системах FAT же, напротив, каждый из этих факторов приведет к существенному снижению скорости работы.
Только в сложных высокопроизводительных системах — например, на графических станциях или просто на серьезных офисных компьютерах с тысячами документов, или, тем более, на файл-серверах — преимущества структуры NTFS смогут дать реальный выигрыш быстродействия, который порой заметен невооруженным глазом. Пользователям, не имеющим большие диски, забитые информацией, и не пользующимся сложными программами, не стоит ждать от NTFS чудес скорости — с точки зрения быстродействия на простых домашних системах гораздо лучше покажет себя FAT32.