Привет, Гиктаймс! Большинство пользователей не задумываются о том, в какой файловой системе у них отформатирована флешка или карта памяти. И в самом деле, зачем вникать в такие тонкости — проще доверить форматирование фотоаппарату или согласиться с выбором десктопа. Под катом напомню о природе FAT32, NTFS и exFAT и буду разбираться как влияет (если влияет вовсе) файловая система на производительность накопителя.



Про файловые системы приведу краткую историческую справку в порядке появления ФС на свет.

Файловая система NTFS — прочитать подробнее в Wikipedia


Изначально стандартная файловая система для операционных систем Microsoft Windows NT. Представлена в июле 1993 года, вместе с операционной системой Windows NT 3.1. NTFS была призвана заменить файловую систему FAT и повысить производительность дисковой подсистемы.

Файловая система FAT32 — прочитать подробнее в Wikipedia


Она появилась чуть позже и стала наследницей широко используемой ФС FAT. Первой операционной системой с поддержкой FAT32 стала Windows 95 OSR2, которая появилась в августе 1996 года. Разработка новой файловой системы была вызвана необходимостью преодолеть ограничения на размер тома в FAT16, но при этом полностью сохранить возможность использования старого программного кода.
Существующий максимально возможный размер файла для тома FAT32 составляет 4 294 967 295 байт, то есть примерно 4 гигабайта, а это накладывает некоторые ограничения на использование флеш-накопителей.

Файловая система exFAT — прочитать подробнее в Wikipedia


Самая «свежая» файловая система из списка. Ее особенностью является то, что она разрабатывала специально для накопителей на флэш-памяти. Датой появления стал ноябрь 2006 года, момент выхода операционной системы Windows Embedded CE 6.0. Некоторые источники называют exFAT — FAT64. Самое важное новшество по сравнению с FAT32 — уменьшение количества перезаписей информации в один и тот же сектор (использование wear leveling), что позволяет продлить срок службы флэш-устройств.

Собственно к чему ведется разговор? Как я уже сказал во вступлении многие не задумываются, какую ФС выбрать, оставляя значение по умолчанию, а еще большее количество людей даже не знают — как отформатирована карточка памяти или флешка.
Выбор небольшой, но есть всегда, к примеру карта памяти Kingston SDXC на 256 гигабайт имеет всего две опции — exFAT и NTFS, причем дефолтной для Windows является exFAT, да и фотоаппарат Canon 6D при форматировании карточки в нем выбирает именно эту систему. Выбор в общем-то разумный и оправданный. Но вот флэш-накопитель Kingston DataTraveler Locker+ G3 32 Gb будет отформатирован операционной системой Windows 8.1 по умолчанию в FAT32, что неминуемо приведет к вопросам со стороны пользователя, как только ему потребуется перенести огромный образ DVD диска или BDRemux какого-нибудь фильма. Кроме того, теория говорит о разнице в производительности между файловыми системами.
Проверю это несложное предположение на практике, используя уже упомянутый накопитель Kingston DataTraveler Locker+ G3 32 Gb.

Тестовый стенд


  • Процессор: Intel Core i7-5960X
  • Материнская плата: ASUS Rampage V Extreme
  • Оперативная память: HyperX Fury DDR4-2133 32 Gb (4*8 Gb)
  • Системный SSD-накопитель: HyperX Predator PCI-E SSD 480 Gb
  • Видеокарта: ASUS Radeon R9 290X Matrix
  • Блок питания: Corsair AX1200i, 1200W
  • Операционная система: Windows 8.1 Профессиональная (64-bit)




Набор тестовых приложений:


  • ATTO disk benchmark 2.4.7
  • TeraCopy


ATTO disk benchmark 2.4.7


Синтетический тест для оценки корректности заявленных производителем скоростей. Собственно большинство данных, указанных на коробках флешек и SSD разных производителей, получены именно с помощью ATTO Disk Benchmark.

Скриншоты: exFAT , FAT32, NTFS



Если на чтение у всех файловых систем результат примерно одинаковый, то на запись разница между exFAT и NTFS составила около 17 процентов. FAT32 занимает положение посерединке, проигрывая exFAT больше, чем выигрывает у NTFS.

TeraCopy


Для оценки самой что ни на есть реальной производительности я записывал на флешку BDRemux фильма The Hobbit. Battle Of Five Armies (размер файла 28 851 025 килобайт) и фиксировал время, за которое фильм скопируется на накопитель.

Скриншоты: NTFS, exFAT



Разница по времени копирования между NTFS и exFAT составила около 45 секунд, в переводе в относительные значения — около 2,5%, небольшая, но все же разница. FAT32 по очевидным причинам в этом тесте участия не принимала.

Финальные размышления


Побуду немного капитаном Очевидность, и скажу, что самый разумный выбор для форматирования флэш-устройств — файловая система exFAT — она специально разрабатывалась для использования с флэш-памятью, она же наиболее производительная. Не поленитесь проверить свою флешку и сделать правильный выбор.

Спасибо за внимание, оставайтесь с Kingston на Geektimes.ru!


Наши предыдущие посты:

Комментарии (40)


  1. One_Touch
    23.07.2015 12:02
    +8

    Плюс при использовании exFAT становится неактуальной проблема совместимости флешки одновременно с Windows и OS X


    1. ASD2003ru
      23.07.2015 15:19
      +3

      А с XP? Вроде как на XP без бубна exFAT не читается? Или я ошибаюсь?


      1. One_Touch
        23.07.2015 15:38
        +1

        Все верно, с XP могут быть проблемы.
        Чтобы добавить поддержку exFAT необходимо установить апдейт KB955704
        При этом уже должен быть установлен SP2-SP3


      1. sashabeep
        24.07.2015 12:29
        -1

        С чем, простите? Даже уже в России столько лет на машинах не ездят


        1. ASD2003ru
          24.07.2015 12:40

          В корпоративной среде ездят и еще будут ездить пока железяка на которой она крутится не сдохнет (у самого парк 300+ машин из них под 100-150 XP).
          Вы еще про WinServer 2003 забываете, а он вроде только недавно с поддержки MS снят.


    1. Meklon
      24.07.2015 08:50

      Угу. А EXT4 забыли ( у меня на внешней флешке система стоит у медиа центра на intel NUC. Чтение нечасто — все в кэше. Запись видимо только логи. Чего ожидать от продолжительности жизни? Объём — 16 ГБ


  1. fshp
    23.07.2015 12:07
    +5

    А если на NTFS отключить журналирование?


    1. Kolegg
      23.07.2015 13:01
      +3

      Емнип, на съемных дисках оно отключено по умолчанию.


  1. AbyssMoon
    23.07.2015 13:00
    +7

    Плюс при использовании exFAT становится актуальной проблема совместимости флешки и многих телевизоров.


  1. susnake
    23.07.2015 13:02
    +3

    Извините за ньюфажество, но меня давно мучает вопрос — почему оборудование (телефизоры, телефоны, навигаторы и т.п.) поддерживают в основном только FAT (и его виды)? Только из-за отказоустойчивости? Но ведь есть же и другие отказоустойчивые ФС, причем открытые и с ними не нужно заморачиваться на счет лицензий, да и поддерживают они больше чем 4GB.


    1. VBKesha
      23.07.2015 13:12
      +10

      Потому что ему много лет он изучен вдоль и поперек и имеет кучу реализаций(испытанных и отлаженых) под огромную кучу платформ, от x86_64 до 8ми битных микроконтроллеров. Это просто удобно, просто и предсказуемо.


    1. fshp
      23.07.2015 13:17
      +5

      FAT? Отказоустойчивая? Да вы, видно, шутите.
      А почему? Да всё дело в Windows. Как Баба Маша будет с фотоаппарата фотографии на компьютер переносить? Через спец ПО? Тогда вообще подойдёт самая примитивная самописная фс, которая будет лишь внутри устройства использоваться. Но ПО еще и поддерживать нужно. Если пользователи на новой ОС не смогут копировать файлы со своего устройства, то на крендель они пошлют такого производителя в следующий раз. В итоге проще заплатить копейку, что бы везде всегда работало.

      UPD: ну и комментарий сверху тоже истинну глаголит. Почти любой системщик может структуру FAT наизусть как таблицу умножения рассказать, если его разбудить среди ночи после пьянки.


      1. edwardspec
        23.07.2015 14:07
        +6

        FAT? Отказоустойчивая? Да вы, видно, шутите.
        Всё правильно, ведь сказано именно отказоустойчивая, а не надёжная.

        FAT и есть отказоустойчивая ввиду атомарности операций удаления блока из списка свободных (и освобождения занятого блока). В силу чего невозможны такие виды нехорошей порчи ФС, как пересекающиеся файлы. Никаких транзакций для защиты от этого FAT не нужно.

        Более надёжные ФС, такие как Ext3, отказоустойчивыми НЕ являются. Они хорошо чинятся ввиду наличия журнала.


        1. ayakovlev
          23.07.2015 14:51
          +3

          Вы близки к тому, чтобы перевернуть мою картину мира.
          Я прекрасно помню, какая куча проблем возникала с FAT: стоит выдернуть флешку или выключить питание и в системе появляются потерянные блоки, разрушенные FAT-таблицы и проблемы с индикацией свободного места. Никакой атомарности и отказоустойчивости в ней не было.
          И только переход на NTFS избавил от этих проблем. Тут можно спорить, как это достигалось, но с утверждением, что FAT отказоустойчива я не могу согласиться.


          1. edwardspec
            23.07.2015 15:02
            +6

            Отказоустойчивость означает, что система как-то продолжает работать, несмотря на поломку.
            Надёжность означает, что нет поломок или они сразу чинятся.

            > потерянные блоки
            Неприятно, но ФС продолжает работать.

            > разрушенные FAT-таблицы
            Суперблок может разрушиться в любой ФС. И решается эта проблема так же, как в FAT — пишется N копий суперблока. Просто в FAT N=2 и они рядышком.

            > проблемы с индикацией свободного места
            Неприятно, но ФС продолжает работать.

            FAT является отказоустойчивой, но НЕ является надёжной.

            P.S. А понятие «атомарность» в моём комментарии относится к конкретному действию. В файловых системах с инодами нужно две операции, чтобы выделить файлу блок (1. добавить этот блок в список блоков данного инода, 2. удалить этот блок из списка свободных), а в FAT только одна (изменить таблицу FAT).


            1. NorthDakota
              23.07.2015 16:01

              >Суперблок может разрушиться в любой ФС. И решается эта проблема так же, как в FAT — пишется N копий суперблока. Просто в FAT N=2 и они рядышком.

              А не логичнее бы было хранить их в разных концах памяти например для HDD,
              а для флешек, SSD и прочего твердотельного, хранить по копии на каждом чипе памяти (естественно если их несколько)?


              1. edwardspec
                23.07.2015 16:25
                +2

                Логичнее, но немного мешало отсутствие машины времени.
                FAT 32 появилась в 1996 году, флешки на рынке с 1999-2000 годов.


            1. ayakovlev
              23.07.2015 16:03
              +1

              Даже под такое вольное определение отказоустойчивости FAT не попадает.
              При нарушении FAT таблиц система перестает работать. При повреждении папок (когда вместо файлов видно была куча произвольных имён), система переставала «работать», так как не отдавала данные и при попытке записать новые либо выдавала ошибку, либо вообще портила данные.
              Не вижу ни одного признака отказоустойчивости.


              1. edwardspec
                23.07.2015 16:36
                +2

                Хорошо, а давайте разбираться, почему у нас FAT таблица оказалась настолько серьёзно нарушена.

                FAT-таблица — это, извините за упрощение, массив чисел. По одному числу на каждый кластер. Число обозначает следующий кластер данного файла.
                Указатель на файл (например, из директории) — это номер его первого кластера (число).

                Единственная операция, которая производится над этим массивом — изменение одного числа.
                1) если файл расширяется и под него нужно больше места, то элемент массива с номером последнего кластера из 0 становится номером следующего кластера,
                2) если файл удаляется, относящиеся к нему элементы массива устанавливаются в 0.

                Если мы внезапно выключаем компьютер, то худшее, что может случиться — это одно число будет неправильным для какого-то файла. В результате потеряется «хвост» файла (последний кластер, если мы как раз дописывали что-то в конец файла, когда компьютер выключили) или, наоборот, потеряются свободные блоки (если не успели всё обнулить, когда файл удалялся).

                Порча одного числа в таблице FAT — это порча не более чем одного файла. Того, который записывался в момент выключения компьютера. На другие файлы это не влияет. Разве что показываемое количество свободного места может стать неправильным (а это неудобство, а не потеря данных).

                Нисколько не сомневаясь в ваших наблюдениях —
                какая операция над файловой системой FAT может теоретически попортить что-то глобально (т.е. в файлах, которые не изменяются прямо сейчас)? Дефрагментация, что ли?


                1. ayakovlev
                  23.07.2015 16:41

                  Вы уходите от ответа. FAT не является отказоустойчивой. Ибо в случае отказа прекращает работу. Если бы она теряла данные, но продолжала работать, она была бы ненадежной, но отказоустойчивой. Но она — никакая. Данные теряет, работать прекращает.
                  Операций, которые портят FAT — множество. Первая, очевидная — запись в FAT-таблицу. При расхождении копий FAT-таблиц она прекращает работать, т.е. не является отказоустойчивой.
                  Вторая, встречается так же часто — запись информации о папке. Папка — это тоже файл. Когда повреждается этот файл, система прекращает работать, так как теряются и повреждаются файлы.
                  Я настаиваю, FAT не является отказоустойчивой, ибо в случае отказа прекращает работу.


                  1. edwardspec
                    23.07.2015 17:01

                    При расхождении копий FAT-таблиц она прекращает работать
                    Она прекращает работать до запуска проверки, равно как и NTFS, Ext3 и другие (которые после сбоя тоже не будут работать без проверки, но прозрачно запускают проверку при каждом монтировании). Разница лишь в скорости проверки (для журналируемых ФС это быстро, для FAT медленно).

                    Проверка тупо перезапишет одну из копий FAT другой. И мы вернёмся к ситуации «повреждён только один файл».

                    > запись информации о папке

                    Папка изменяется только тогда, когда туда добавляется файл или оттуда удаляется файл.
                    Если внезапно выключить компьютер — или только что добавленный файл потеряется, или только что удалённый файл останется. Вот и всё.

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


                    1. ayakovlev
                      23.07.2015 17:20

                      Ну что ж, Вы либо не работали с FAT, либо не умеете признавать неправоту.
                      Внезапно выключенный компьютер может привести не только к потере файлов, но и к повреждению таблиц FAT, повреждению записей о папках и многих других. И система после этого неработоспособна, без дополнительного вмешательства не может продолжать работу. То есть не является отказоустойчивой.


                      1. edwardspec
                        23.07.2015 17:26

                        Мы пытаемся выяснить, почему он к этому приводит, а не меряемся годами опыта работы с FAT.
                        Вы выдвинули несколько гипотез (расхождение FAT и её копии, повреждение папки), но непохоже, что FAT повредило именно это.

                        Ну что ж, Вы либо не работали с FAT, либо не умеете признавать неправоту.
                        Вы предлагаете мне заткнуться с моими неудобными вопросами и уверовать, потому что мы пока не нашли объяснения, почему она повреждается таким образом, как наблюдалось вами на практике?

                        А моя цель — выяснить, почему она так повреждается.


                        1. edwardspec
                          23.07.2015 17:32
                          +1

                          А моя цель — выяснить, почему она так повреждается.
                          Т.к. иначе у нас беседа переходит из обсуждения технического вопроса в разряд религии.

                          — У меня было прозрение, я видел горящий куст глобальные повреждения таблицы FAT от выключения компьютера.
                          — Не ставлю ваши наблюдения под сомнение, но давайте всё-таки изучим, почему так получилось.
                          — Да вы, сударь, еретик неверующий, говорю же — своими глазами видел.

                          Там причин, не связанных с самой FAT, может быть вагон и маленькая тележка. Вплоть до глюков в каком-нибудь проприетарном драйвере ФС, по-железному битых блоков в первых секторах и т.п.


                          1. edwardspec
                            23.07.2015 17:43

                            Там причин, не связанных с самой FAT
                            Моя версия — дисковой write cache на уровне операционной системы.


                        1. ayakovlev
                          23.07.2015 18:01
                          -2

                          Вы не верите мне? Изучите вопрос теоретически.
                          Я рассматриваю не один конкретный случай повреждения, а особенности файловой системы.
                          Если Ваша цель выяснить, а не отстоять ошибочную точку зрения с помощью хамства, то прочитайте ещё раз:

                          — FAT неотказоустойчива, потому что при отключении питания\отказе при записи FAT таблиц, система переходит в неработоспособное состояние. Что здесь нужно доказать и что нужно объяснить?
                          — FAT неотказоусточива, потому что при отключении питания\сбое в момент обновления записей папки, система переходит в неработоспособное состояние. Обновление записи папки — довольно частая операция: добавление, удаление, перенос и переименование файла. Что здесь нужно объяснить.

                          Я привел два примера повреждения FAT, когда она проявляет свою неотказоустойчивость. Этих примеров больше, но для того, чтобы признать неправоту вашего утверждения, достаточно и одного.

                          И прекратите хамить.


                          1. edwardspec
                            23.07.2015 21:18
                            +1

                            Вы не верите мне? Изучите вопрос теоретически. [...] И прекратите хамить.
                            В комментариях выше я рассматриваю работу файловой системы FAT по существу.

                            Вы мне в ответ пишете «вы должны мне поверить на слово, а если не верите, то идите почитайте учебник», но хам, по вашей версии, почему-то я.

                            при записи FAT таблиц, система переходит в неработоспособное состояние. Что здесь нужно доказать и что нужно объяснить?
                            Например, необходимо показать, что порча ФС не была вызвана кривым дисковым кэшем на стороне операционной системы.

                            Отказоустойчивость ФС обуславливается тем, что никакая операция над ней не может испортить всю ФС (и вообще что-то кроме сейчас изменяющихся файлов).
                            Любая операция записи, которая требует изменения FAT-таблицы (т.е. расширение на 1 сектор или удаление файла), меняет одно число в FAT (4 байта). Если операционная система (и диск-носитель) переписывает всю FAT целиком в целях улучшения скорости, то это не проблема FAT.

                            То же самое с папкой. Папка, разумеется, может быть повреждена, но это не «приведёт систему в неработоспособное состояние», если заменить только одно 4-байтное число.

                            Эти операции уже я рассмотрел выше в комментариях. Вы мне говорите «ну и что, а у меня FAT вообще не монтировалась после выключения компьютера», хотя, может, это потому, что ОС минутами не делает sync().
                            И даже тогда повреждается не вся ФС, а только те файлы, из-за которых FAT должна была меняться с предыдущего sync() (плюс, может быть, соседние области не длиннее низкоуровневого блока жёсткого диска).

                            По расхождению двух таблиц FAT — ситуации «mount валится со словами „запустите fsck“, но если fsck запустить вручную, то потом mount работает ок» и «mount автоматически запускает fsck», по сути, идентичны. Единственный тут минус в том, что таблицы две, а не три (в коем случае можно было бы не спрашивать пользователя, какую какой перезаписать).


                            1. ayakovlev
                              23.07.2015 21:50

                              Я не писал Вам то, что написано в кавычках. Я предложил разобраться самостоятельно, если не верите. Разница есть. Не нужно передергивать. Приписывать мне грубости — это и есть хамство.
                              Вы оперируете совершенно неадекватными понятиями. Скатились до отказоустойчивость = «не может испортить всю ФС». Да, всю — не может. Привести её в состояние «отказ обслуживания» — может. Потерять данные — может. Проверено.
                              То, что Вы пишете про 4 байта очень наглядно показывает, насколько Вы далеки от понимания принципов работы ФС. Запись идёт блоками. Самый минимальный блок — это блок физического носителя. Фактический блок записи — это кластер фс, в обычной FAT по умолчанию он был 4Kb. Меньше 512 кластер вообще быть не может в FAT.
                              Всё, что пишетепро sync, про кеши физического уровня — это могут быть усугубляющие факторы.
                              Но проблема, которую я пытаюсь втолковать, в том, что FAT архитектурно не является отказоустойчивой файловой системой. Она не защищена от отказов при записи, в отличие от журналирующих систем, она не защищена от отказа носителя — например, корневая папка всегда располагается в одном и том же месте и не дублируется. Фактически, любой сбой, любой природы при записи корневой папки приводит систему в абсолютно неработоспособное состояние.
                              Ещё раз: любой сбой любой природы — программная ошибка, отказ носителя, отказ питания, могут привести FAT в неработоспособное состояние. Такая система не называется отказоустойчивой.


    1. immaculate
      23.07.2015 14:01
      +10

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

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


  1. Abyss777
    23.07.2015 13:56
    +1

    Добавьте пожалуйста в сравнение UDF


    1. ASD2003ru
      23.07.2015 15:18
      +1

      Но UDF это для CD/DVD. Как с ней сравнивать у нее задачи другие.


      1. Abyss777
        23.07.2015 15:23
        +1

        Зато она не нарушает патентов. Поддерживается всеми ОС и лишена ограничения в 4 Гб на файл.
        Я бы сам сравнил, но все мои флешки упираются в производительность. Т.е. нет разницы какая ФС.


        1. ASD2003ru
          23.07.2015 15:28
          +4

          Еще раз, она не для HDD/SSD/FLASH/etc. У нее принцип «записал — нужны изменения — дописал кусок с изменениями без стирания предыдущей информации». Это по сути костыльная FS, что бы решить проблемы файловой системы ISO для DVD-RW/CD-RW в которой есть проблема с дозаписью/изменением файлов.


          1. Abyss777
            24.07.2015 08:13

            Я не сильно разбираюсь в архитектуре UDF, но цитата с википедии:

            UDF allows files to be created, deleted and changed on-disc just as a general-purpose filesystem would on removable media like floppy disks and flash drives


            1. ASD2003ru
              24.07.2015 09:54

              Вы еще видимо и в английском не очень. Написано же, что «аля как на флопиках и флешках» а не для flash дисков.


        1. Kingston_Technology Автор
          23.07.2015 15:29
          +1

          ОК, запрос принят, я посмотрю, что можно сделать


        1. Kingston_Technology Автор
          25.07.2015 18:24

          Вот результаты для UDF:
          ATTO Disk benchmark, TeraCopy

          Графики обновил.


  1. SovGVD
    23.07.2015 15:19
    +1

    Ничего не понял.
    > карта памяти Kingston SDXC на 256 гигабайт имеет всего две опции — exFAT и NTFS
    Почему всего 2 опции, кто запрещает её формать во что угодно?

    И вторая непонятка, если я форману карту в NTFS, то какой фотик сможет с неё работать? Карты всегда форматирую на аппарате, где она будет применятся, флешки обычно в NTFS, просто чтобы заливать туда большие файлы, но бывает косяк — телевизор в курсе только про FAT, особенно странно это выглядит у телеков, которые предлагают с флешки играть 1080p.


    1. Kingston_Technology Автор
      23.07.2015 15:31
      +1

      Изначально речь идет о штатных средствах Windows, а так конечно ничего не будет мешать, кроме ограничений самой файловой системы.

      Карты не всегда используются в фотоаппаратах, а вот насчет больших файлов — exFAT прекрасно решает эту проблему.


    1. ASD2003ru
      23.07.2015 15:34
      +3

      2 опции — это чудность MS которые считают, что накопители больших размеров нужно форматировать в FS с поддержкой файлов больших размеров (ну и что бы потом пользователь не мучелся от непонимания «а что это у меня места на диске много а ОС при записи пишет что не хватает места»). С коммандной строки можно и в фат отформатировать.

      Фотики NTFS в большинстве своем не поддерживают. Так же некоторые устройства хоть и поддерживают чтение NTFS но не факт, что могут поддерживать запись.