ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ХАКЕР 04 /171/ 2013 Семь столпов Linux 115EXT2, EXT3, EXT4В первых версиях ядра Linux использовалась 16-битная файловаясистема Minix, разработанная Эндрю Таненбаумом как простойи наглядный пример ФС для студентов. Ее максимальныйразмер составлял 64 Мб, а длина имени файла не могла превышать14 символов. Вскоре для ее замены была разработанафайловая система ext (extended — расширенная), которая поднялаограничение на размер ФС до 2 Гб, а длину имен файлов —до 255 символов. Фактически ext была всего лишь продвинутымвариантом ФС Minix, в которой отсутствовала даже такая простаявещь, как поддержка дат модификации файлов, поэтомуона долго не прожила и была заменена на ext2.Новая ФС была создана с нуля на основе идей оригинальнойUFS из UNIX и унаследовала почти все преимущества последней.Общий размер файловой системы мог составлять 4 Тбс возможностью выбора размера блока для подгонки производительностипод определенные задачи. Благодаря продуманномудизайну, ext2 можно было с легкостью усовершенствовать,и вскоре для нее появились реализации ACL и расширенныхатрибутов файлов. На последнем этапе разработки драйверext2 оптимизировали, и она стала самой быстрой файловой системойсреди открытых никсов.Ext2 получилась настолько удачной, что долгое время о еезамене и не задумывались. Единственным ограничением былоотсутствие журналирования, что благополучно исправила компанияRed Hat, создав ext3, доработанный вариант ext2, — новогов нем было только наличие журнала, а также твики производительностии небольшие доработки. Во всем остальном ext3оставалась ext2, и ее можно было подключить с помощью драйверапоследней (потеряв журналирование) или преобразоватьext2 в ext3, просто задействовав журнал с помощью утилитыtune2fs.С развитием файловых систем стало ясно, что технологииext3 уже не могут обеспечить достаточную производительностьи функциональность в сравнении с конкурентами, и началасьразработка ext4. Задачи сохранения обратной совместимостина этот раз не стояло, поэтому разработчики смогли развернутьсяпо полной, применив при разработке ФС самые передовыетехники оптимизации.Наиболее значительным усовершенствованием ФС сталаидея так называемых экстентов. Они используются для представлениянепрерывных участков блоков файловой системы,закрепленных за файлом. В ext3 с этой целью использоваласьклассическая идея карт соответствия, то есть списков блоков,по которому драйверу ФС нужно было проходить каждый разпри чтении и записи файлов, что снижало производительность.Экстенты позволяют адресовать непрерывные последовательностиблоков, а потому вместо карты соответствия файла из тысячзаписей ext4 может использовать всего несколько экстентов,что существенно поднимает производительность ФС.InodeExtent-HeaderExtent-IndexExtent-HeaderExtent-IndexExtent-Index...Extent-HeaderExtentExtent...Extent-HeaderExtentExtent...Btrfs в ядре LinuxВ отличие от картысоответствия, экстентыадресуют сразунесколько блоковData block...Таким же образом хранится информация о свободных блокахФС. Вместо таблиц адресов блоков теперь применяются теже экстенты, что увеличивает скорость распределения блоковпри создании или модификации файлов. Сам механизм выделенияблоков был переработан. Теперь операция выделенияпроисходит не сразу при создании файла, а откладываетсявплоть до момента сброса его содержимого на диск. Как результат,процесс создания и модификации файлов теперь происходиточень быстро.Кроме того, было добавлено и большое количество другихоптимизаций и улучшений, таких как 48-битная адресация, позволившаярасширить размер ФС до одного эксбибайта, размещениерасширенных атрибутов прямо в inode для увеличенияскорости доступа к ним, резервирование inode для возможныхфайлов при создании каталога, технология предварительногораспределения блоков для файлов для таких приложений,как торрент-клиенты, контрольные суммы журнала и многоедругое. Особо стоит отметить поддержку онлайн-дефрагментациифайловой системы, которая позволяет сохранить высокуюпроизводительность, не отключая ФС и не производя дефрагментациювручную.Предварительная версия ext4 появилась в ядре Linux 2.6.19,допиливание файловой системы продолжалось больше года,и с выходом ядра версии 2.6.28 ext4 стала стабильной и рекомендованнойдля повсеместного тестирования. Сегодня ext4 —это стандарт в мире Linux и наиболее производительная журналируемаяфайловая система.BTRFSКак бы хороша ни была еxt4, ее узкие места отлично понимаюти прямо говорят, что она лишь переходный этап к файловым системамбудущего, которые будут иметь концептуально иной дизайни возможности. Наиболее близкий кандидат в такие ФС —это Btrfs, разрабатываемая под руководством компании Oracleв качестве альтернативы ZFS (разработка была начата ещедо приобретения компании Sun, владеющей правами на ZFS).Три основные фичи этой ОС — отличная масштабируемость,плотная интеграция с менеджером томов и расширяемость.Как и еxt4, Btrfs базируется на идее экстентов, которая позволяетсделать управление данными эффективным даже для оченьбольших объемов данных и размеров файлов. Выделение inodeв файловой системе происходит в полностью динамическомрежиме, что снимает ограничение на общий объем файлов.Мелкие файлы размещаются прямо в inode, так же как это сделанов Reizer4, поэтому производительность работы ФС с большимколичеством небольших файлов остается очень высокой.Как и в ZFS, размещение файлов производится по принципуcopy-on-write (COW), а это означает, что файл никогда не перезаписывается,вместо этого при его модификации происходитвыделение новых блоков данных для хранения измененныхчастей. Такой подход позволяет сделать процесс модификациифайлов более эффективным, идеально подходит для SSDнакопителейс их ограниченным количеством циклов перезаписи,а также делает возможной такую технологию, как снапшоты,когда пользователь в любой момент может откатиться к предыдущейверсии файловой системы или отдельных файлов.