Файловые системы и винда

Винда поддерживает 2 файловые системы (ФС): FAT и NTFS (грубо говоря, не будем вдаваться в подробности разновидностей FAT'а и ФС типа iso9660, я про файловые системы для винчестеров/флешек).

  • FAT[32] — древняя, устаревшая файловая система с кучей недостатков: начиная от сильной подверженности фрагментации и заканчивая ограничениями на максимальный размер файла (4 Гб, если кто не в курсе).
  • NTFS — продвинутая ФС, с ACL, сжатием, шифрованием, блекджеком и шлюхами. Все бы ничего, если бы не еще бо́льшая подверженность фрагментации (и не в последнюю очередь из-за виндового дефрагментатора, про которого можно сказать что он создает больше вреда чем пользы, и лучше на него даже не смотреть) и закрытость. Базируется на том же FAT'е.

Для виндузятников выбор на самом деле не стоит: FAT пригодна только для флешек, и то для маленьких. Но т.к. NTFS для флешек пригодна еще меньше, то мелкософт придумало vFAT — такое же как FAT, только другое. Пригодное для флешек покрупнее, но, как обычно для мелкософта, ни с чем не совместимое.

И собственно вот: для стационарных накопителей aka винчестеров в винде альтернативы NTFS нет. Для сменных же нет толком ничего, только FAT для маленьких. И вот рано или поздно хочется подключить большую-большую флешку или даже жесткий диск, и… все плохо, опять остается только NTFS. Для винчестеров оно еще подходит, а вот для флешек журналируемость убийственна (из-за файла журнала значительное число операций записи будет проходить по одному и тому же месту, что, в сочетании с ограниченным количеством циклов перезаписи для флеш памяти, быстро выведет отдельные блоки из строя. Просто выкинуть флешку и взять новую? Да, конечно. Только вот, перефразируя классика, беда не столько в том что флешки смертны, а в том что они внезапно смертны. Вы не узнаете о том что блок сдох до тех пор пока не сможете его прочитать. А т.к. сдохнет блок в области журнала, велика вероятность что вы не сможете прочитать вообще ничего).

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

К их преимуществам могу отнести следующее:

  • ограничение на максимальный размер файла: 2 Тб (2048 Гб) для 4х килобайтного блока данных (некоторый аналог FAT-ового кластера);
  • слабая подверженность фрагментации;
  • поддержка прав, ACL, символических ссылок (к сожалению в виндовых драйверах эти возможности часто не реализованы);
  • опциональная журналируемость (т.е. журнал можно и не использовать, в отличии от NTFS где так нельзя);
  • совместимость с линуксовыми машинами без плясок с бубном с той стороны (все-таки NTFS закрытый формат, и поддержка его в линухах хоть и есть, но не без изъянов), также без особых проблем можно использовать и с маками (тоже через отдельный драйвер).

Естественно не без недостатков:

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

Для флешек и внешних винчестеров, с учетом отсутствия ограничений FAT'а, самое то. Если бы конечно не одно маленькое но: винда по только баллмеру ведомой причине не может использовать на флешках разделы кроме первого. Поэтому решение «создать на флешке маленький раздел, на который записать драйвер, а все остальное отформатировать в ext2» не прокатывает: сделать то так можно, но в винде прочитать этот второй раздел будет нельзя. Поэтому драйвер придется ставить отдельно (ну благо интернет сейчас доступен практически везде).

Драйверов ext2 для винды мне известно два:

  • Ext2IFSExt2-IFS — на данный момент последняя 1.11a, и ей уже год:
    • поддерживает имена файлов в UTF-8;
    • поддерживает inode'ы размером 128 байт — создавать ФС надо с учетом этой особенности, т.к. современные версии линукса по умолчанию создают разделы с inode'ами в 256 байт;
    • поддерживает запись на диск, однако при установке эту возможность можно отключить;
    • бесплатный, но закрытый;
    • нет поддержки журналирования, прав доступа и специальных файлов;
    • нет инструментов для создания ФС;
    • при установке рекомендую не забыть поставить галочку автоматического назначения букв дисков.
  • Ext2FsdExt2Fsd — более свежий проект:
    • поддерживает большие inode'ы;
    • поддерживает имена файлов в UTF-8, однако по умолчанию ставит левую кодировку. Необходимо вручную в прилагаемом менеджере выставить нужную кодировку;
    • поддерживает запись на диск, однако по умолчанию это отключено. Аналогично, там же, нужно включить;
    • распространяется под GPL2;
    • нет поддержки журналирования, прав доступа и специальных файлов;
    • не всегда автоматически назначает буквы дисков, и в любом случае приходится лезть для включения записи/установки кодировки, что не очень удобно;
    • также нет инструментов создания ФС.

Драйвера и ставятся и удаляются без проблем. Оба драйвера довольно стабильны в работе. Создавать ФС можно загрузившись с Live CD/флешки с линуксом. Т.к. делается это однократно особых проблем тут быть не должно. Также, на сколько я помню, partition magic умеет создавать ext2 разделы.

Конечно если флешка используется не только в компах, то тут с ФС отличными от FAT могут быть проблемы. С другой стороны сейчас не редкость устройства, прошивка которых базируется на линухах, и поддержка ext2 не во всех из них выдрана.