Файловые системы ближайшего будущего. Часть 1
В мае 2011 года, в расширенном докладе Майкла Рубина (Michael Rubin), занимающегося системами хранения данных в Google, прозвучал подробный сравнительный обзор современных файловых систем, в котором, кроме перечисления их преимуществ и недостатков, были даны и некоторые прогнозы о будущем развитии и потребностях информационной индустрии в этой сфере. В частности, была рассмотрена способность существующих файловых систем (ФС) адаптироваться к вызовам уже ближайшего будущего, в связи с чем из всех были выделены четыре ведущие файловые системы “новой школы”, изначально спроектированные с учетом удовлетворения самых взыскательных требований и запросов.
Майкл Рубин отдельно подчеркнул, что Google умышленно не рассматривал среди числа этих перспективных ФС такие некогда популярные проекты, как JFS, ReiserFS, а также инновационную Tux3 – из-за их хронических проблем с графиком разработки и недостаточной поддержкой кодовой базы. Поэтому они, будучи скорее “мертвыми”, чем “живыми”, не позволяют рассматривать их как реальные варианты для будущей миграции. Среди всех рассмотренных вариантов, в том числе отчасти мифических (например, таких как WinFS), были тщательно отобраны лучшие претенденты, которые уже сегодня (или в ближайшем будущем) смогут стать успешным решением для больших информационных хранилищ. Сегодня мы рассмотрим и сравним основные плюсы и минусы каждого из этих четырех претендентов, чтобы помочь вам сделать выбор своей файловой системы будущего.
ZFS
www.opensolaris.org/os/community/zfs
ZFS (Zettabyte File System) - одна из самых известных файловых систем, изначально созданная в Sun Microsystems для операционной системы Solaris, портирование которой на другие платформы вызвало всплеск диаметрально разных эмоций у разработчиков: от бурного восхищения и ликования до прямо противоположного – раздражения и ярости. Попробуем ознакомиться с точкой зрения каждой из сторон, а также разобраться в причинах существования столь полярных оценок этой файловой системы. Но прежде чем мы это сделаем, давайте хотя бы в общих чертах пройдемся по ее главным отличительным особенностям и свойствам.
. 128-битная файловая система, что дает возможность хранения практически неограниченных объемов информации. На практике это значит, что ZFS теоретически может хранить объемы информации, которые превышают сегодняшние технологические возможности, при условии использования текущего подхода к организации хранения данных.
. Очень большое внимание уделяется целостности и надежности хранения как пользовательских данных, так и метаданных ФС. Для этого используются продвинутые алгоритмы хэширования всей хранящейся информации.
. Поддержка снапшотов (snapshot) и пулов хранения (storage pools), благодаря чему ZFS сочетает в себе возможности файловой системы и системы управления томами (новая концепция storage-пулов).
. Отсутствие необходимости в выполнении fsck благодаря использованию другого подхода к организации хранения данных.
. Традиционно считается, что ZFS – это достаточно производительная файловая система. Это утверждение иногда ставится под сомнение, как минимум, конкретные цифры очень сильно зависят типа задачи, на которой производится подобное сравнительное тестирование производительности. . Прозрачные возможности избирательного сжатия и шифрования файлов.
. Поддержка автоматического распознавания и объединения (исключения) файлов-дубликатов.
. ZFS не поддерживает квоты. Вернее сказать, ее поддержка квот несколько своеобразна: понятие “выделение квоты” значит в терминологии ZFS то, что вы ограничиваете размер создаваемой файловой системы. Дизайн системы таков, что каждому пользователю ZFS следует выделять свою
собственную файловую систему со всеми сопутствующими ограничениями.
. Определенные проблемы создает нетехническая особенность ФС - несовместимая с GPL лицензия на код.
. И многое-многое другое, так как, повторюсь – ZFS чрезвычайно велика в своих возможностях и особенностях, и перечислить всех их здесь просто не представляется возможным.
Конечно, если смотреть на эти возможности по отдельности, то они во многом не новы и встречаются в том или ином виде в различных других файловых системах, но такой единый комплекс из приведенных возможностей впервые представлен только в ZFS, что и делает ее столь уникальной и интересной на данный момент. Если добавить ее относительно зрелый возраст и очень хорошее состояние в плане стабильности кода – становятся понятны те бури эмоций, которые она вызывает в широких кругах юниксоидов.
Что касается резко отрицательных откликов на эту, вне всяких сомнений, уже знаменитую файловую систему, то они сводятся в основном к следующим тезисам. Один из ведущих разработчиков Linux, кстати, ответственный за поддержку ее дисковой подсистемы, Андрей Мортан (Andrew Morton), разразился гневными обличениями ZFS в “чудовищном нарушении уровней реализации”. Группа других разработчиков Linux присоединилась к его обвинениям в “жутком дизайне” ZFS, и на данный момент можно констатировать, что язвительные выражения Андрея Мортана в адрес ZFS - “rampant layering violation” и “unmaintainable mess” - стали уже своего рода интернет-мемами, на которые заочно уже попытались ответить многие разработчики из Oracle, Linux, RedHat, FreeBSD и других известных проектов.
В качества ответа на эти выпады процитирую только ведущего разработчика ZFS Джефа Бонвика (Jeff Bonwick): “Все эти обвинения в нарушении дизайна уровней реализации оттого, что ZFS комбинирует в себе сразу функциональность файловой системы, менеджера томов и RAID-контроллера. Я полагаю, что ответ на эту претензию зависит от того, что понимать под обвинением “нарушает дизайн”. В процессе разработки ZFS мы установили, что стандартный дизайн абстрагированных уровней дискового стека провоцирует удивительное количество ненужной сложности и избыточной логики. В процессе рефакторинга мы пришли к мнению, что решение проблемы – это пересмотр границ слоев и их отношений, - что делает все сразу намного более простым”. Какую бы позицию в отношении ZFS не занимали лично вы, следует признать как минимум одно: ZFS - это принципиально новая технология в индустрии файловых систем.
На сегодняшний день просто не существует другой такой файловой системы, которая одновременно включала бы в себя такое фантастическое нагромождение возможностей, которое уже реализовано в ZFS. Этот подход прямо противоречит хорошо известному принципу KISS (http://en.wikipedia.org/wiki/KISS_principle), и создание подобных крупных комплексных систем характерно, скорее, для мира Windows, но никак не является проявлением принципов знаменитого unixway, где деление всего и вся на атомарные и независимые функции и операции является священным.
Ссылки по теме ZFS:
http://en.wikipedia.org/wiki/ZFS
http://zfsonlinux.org/faq.html
http://wiki.freebsd.org/ZFS
http://code.google.com/p/maczfs/wiki/FAQ
http://filesystems.nm.ru/my/zfs_arch.pdf
Btrfs
oss.oracle.com/projects/btrfs
Новейшая файловая система, которая в данный момент очень активно развивается, и, несмотря на еще несколько незрелый вид, уже интегрирована в ядро ОС Linux. В целом, говоря предельно кратко, Btrfs – это файловая система, созданная специально для Linux, основанная на структурах B- деревьев и работающая по принципу “копирование при записи” (copy-on-write).
Мне кажется, что для понимания необходимости создания этой файловой системы необходимо хотя бы вкратце показать исторический фон, на котором она создавалась. В связи с этим стало уже стереотипным мнением воспринимать Btrfs как прямой ответ на файловую систему ZFS, которую было запрещено включать в состав ядра Linux из-за лицензионной несовместимости с ним. Феномен появления столь масштабного решения, как ZFS, ряд возможностей которой отсутствовал в традиционных файловых системах Linux, нельзя было оставить незамеченным, поэтому Крис Мэйсон (Chris Mason), директор управления Linux Kernel Engineering в Oracle, инициировал разработку новой, не менее масштабной и амбициозной ФС, основанной c прицелом специально под ОС Linux.
В заключение нашего небольшого исторического экскурса следует сообщить о переломном моменте в развитии Btrfs, который произошел в конце 2007 года, когда на совместном совещании ведущих разработчиков Linux из компаний Oracle, Red Hat, Novell, IBM, HP, Intel, посвященного созданию файловой системы нового поколения для Linux (Next Generation FileSystem, NGFS), было принято решение сделать ставку на совместное развитие Btrfs, как наиболее универсальную и отвечающую всем современным вызовам ФС. После этого решения Btrfs получила уже официальный статус NGFS для Linux, что усилило ее дальнейшее развитие, превратив в эпицентр инноваций в этой области.
Прежде чем привести список основных технических возможностей этой файловой системы, следует еще раз подчеркнуть, что разработка этой ФС еще в самом разгаре, и несмотря на то, что немало уже сделано – многие возможности еще далеки от совершенства и логического завершения. Как пример такой незавершенности, можно привести то, что до сих пор не создан инструмент для проверки файловой системы и исправления ее ошибок. Вот ее основные особенности:
. Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes). Иначе говоря, в этой ФС нет максимального количества обслуживаемых файлов.
. Снимки файловой системы (snapshots), а также возможности делать снимки снимков и записываемые снимки (writeable snapshots).
. Для продвинутого контроля целостности применяются хэши на все данные и метаданные (тут нужно сразу заметить, так как от сравнения Btrfs и ZFS никак не уйти, что на данный момент в Btrfs применяется CRC-32C, что существенно хуже, чем в ZFS).
. Очень полезная возможность миграции с традиционных файловых систем ext3/ext4, что дает возможность очень прозрачного перехода на новую ФС.
. Завершаются работы над поддержкой автоматического распознавания и объединения дубликатов (дедупликация).
. Проверка файловой системы в рабочем режиме (online) и очень быстрая проверка в нерабочем режиме (offline).
. Прозрачные возможности избирательного сжатия файлов.
. Поддержка режима работы как RAID-массива (одна файловая система на нескольких томах).
. Подтома (subvolumes) и эффективное клонирование файловой системы, быстрое создание инкрементальных архивов.
. Прямая поддержка Device-mapper - важного компонента ядра Linux, с помощью которого организуется расширенное управление логическими томами.
. И многое другое.
И хотя эта ФС пока активно развивается, в качестве иллюстрации точек ее будущего роста и масштабности общей задумки для примера можно привести решение компании Oracle реализовать сетевой протокол файловой системы CRFS (фактически заменяющий устаревшие NFS и CIFS), который будет спроектирован и оптимизирован полностью под Btrfs. Второй похожий пример: после долгого анализа существующих ФС консорциум Intel и Nokia выбрал для своей будущей совместной мобильной Linux-платформы MeeGo как раз Btrfs, которая в сравнении с другими аналогами оказалась наиболее перспективной.
Ссылки по теме Btrfs:
http://en.wikipedia.org/wiki/Btrfs
http://lwn.net/Articles/342892/
https://btrfs.wiki.kernel.org/index.php/FAQ
http://filesystems.nm.ru/my/btrfs.pdf
http://db.usenix.org/publications/login/2012-02/openpdfs/Bacik.pdf
Окончание следует
Игорь Савчук
Майкл Рубин отдельно подчеркнул, что Google умышленно не рассматривал среди числа этих перспективных ФС такие некогда популярные проекты, как JFS, ReiserFS, а также инновационную Tux3 – из-за их хронических проблем с графиком разработки и недостаточной поддержкой кодовой базы. Поэтому они, будучи скорее “мертвыми”, чем “живыми”, не позволяют рассматривать их как реальные варианты для будущей миграции. Среди всех рассмотренных вариантов, в том числе отчасти мифических (например, таких как WinFS), были тщательно отобраны лучшие претенденты, которые уже сегодня (или в ближайшем будущем) смогут стать успешным решением для больших информационных хранилищ. Сегодня мы рассмотрим и сравним основные плюсы и минусы каждого из этих четырех претендентов, чтобы помочь вам сделать выбор своей файловой системы будущего.
ZFS
www.opensolaris.org/os/community/zfs
ZFS (Zettabyte File System) - одна из самых известных файловых систем, изначально созданная в Sun Microsystems для операционной системы Solaris, портирование которой на другие платформы вызвало всплеск диаметрально разных эмоций у разработчиков: от бурного восхищения и ликования до прямо противоположного – раздражения и ярости. Попробуем ознакомиться с точкой зрения каждой из сторон, а также разобраться в причинах существования столь полярных оценок этой файловой системы. Но прежде чем мы это сделаем, давайте хотя бы в общих чертах пройдемся по ее главным отличительным особенностям и свойствам.
. 128-битная файловая система, что дает возможность хранения практически неограниченных объемов информации. На практике это значит, что ZFS теоретически может хранить объемы информации, которые превышают сегодняшние технологические возможности, при условии использования текущего подхода к организации хранения данных.
. Очень большое внимание уделяется целостности и надежности хранения как пользовательских данных, так и метаданных ФС. Для этого используются продвинутые алгоритмы хэширования всей хранящейся информации.
. Поддержка снапшотов (snapshot) и пулов хранения (storage pools), благодаря чему ZFS сочетает в себе возможности файловой системы и системы управления томами (новая концепция storage-пулов).
. Отсутствие необходимости в выполнении fsck благодаря использованию другого подхода к организации хранения данных.
. Традиционно считается, что ZFS – это достаточно производительная файловая система. Это утверждение иногда ставится под сомнение, как минимум, конкретные цифры очень сильно зависят типа задачи, на которой производится подобное сравнительное тестирование производительности. . Прозрачные возможности избирательного сжатия и шифрования файлов.
. Поддержка автоматического распознавания и объединения (исключения) файлов-дубликатов.
. ZFS не поддерживает квоты. Вернее сказать, ее поддержка квот несколько своеобразна: понятие “выделение квоты” значит в терминологии ZFS то, что вы ограничиваете размер создаваемой файловой системы. Дизайн системы таков, что каждому пользователю ZFS следует выделять свою
собственную файловую систему со всеми сопутствующими ограничениями.
. Определенные проблемы создает нетехническая особенность ФС - несовместимая с GPL лицензия на код.
. И многое-многое другое, так как, повторюсь – ZFS чрезвычайно велика в своих возможностях и особенностях, и перечислить всех их здесь просто не представляется возможным.
Конечно, если смотреть на эти возможности по отдельности, то они во многом не новы и встречаются в том или ином виде в различных других файловых системах, но такой единый комплекс из приведенных возможностей впервые представлен только в ZFS, что и делает ее столь уникальной и интересной на данный момент. Если добавить ее относительно зрелый возраст и очень хорошее состояние в плане стабильности кода – становятся понятны те бури эмоций, которые она вызывает в широких кругах юниксоидов.
Что касается резко отрицательных откликов на эту, вне всяких сомнений, уже знаменитую файловую систему, то они сводятся в основном к следующим тезисам. Один из ведущих разработчиков Linux, кстати, ответственный за поддержку ее дисковой подсистемы, Андрей Мортан (Andrew Morton), разразился гневными обличениями ZFS в “чудовищном нарушении уровней реализации”. Группа других разработчиков Linux присоединилась к его обвинениям в “жутком дизайне” ZFS, и на данный момент можно констатировать, что язвительные выражения Андрея Мортана в адрес ZFS - “rampant layering violation” и “unmaintainable mess” - стали уже своего рода интернет-мемами, на которые заочно уже попытались ответить многие разработчики из Oracle, Linux, RedHat, FreeBSD и других известных проектов.
В качества ответа на эти выпады процитирую только ведущего разработчика ZFS Джефа Бонвика (Jeff Bonwick): “Все эти обвинения в нарушении дизайна уровней реализации оттого, что ZFS комбинирует в себе сразу функциональность файловой системы, менеджера томов и RAID-контроллера. Я полагаю, что ответ на эту претензию зависит от того, что понимать под обвинением “нарушает дизайн”. В процессе разработки ZFS мы установили, что стандартный дизайн абстрагированных уровней дискового стека провоцирует удивительное количество ненужной сложности и избыточной логики. В процессе рефакторинга мы пришли к мнению, что решение проблемы – это пересмотр границ слоев и их отношений, - что делает все сразу намного более простым”. Какую бы позицию в отношении ZFS не занимали лично вы, следует признать как минимум одно: ZFS - это принципиально новая технология в индустрии файловых систем.
На сегодняшний день просто не существует другой такой файловой системы, которая одновременно включала бы в себя такое фантастическое нагромождение возможностей, которое уже реализовано в ZFS. Этот подход прямо противоречит хорошо известному принципу KISS (http://en.wikipedia.org/wiki/KISS_principle), и создание подобных крупных комплексных систем характерно, скорее, для мира Windows, но никак не является проявлением принципов знаменитого unixway, где деление всего и вся на атомарные и независимые функции и операции является священным.
Ссылки по теме ZFS:
http://en.wikipedia.org/wiki/ZFS
http://zfsonlinux.org/faq.html
http://wiki.freebsd.org/ZFS
http://code.google.com/p/maczfs/wiki/FAQ
http://filesystems.nm.ru/my/zfs_arch.pdf
Btrfs
oss.oracle.com/projects/btrfs
Новейшая файловая система, которая в данный момент очень активно развивается, и, несмотря на еще несколько незрелый вид, уже интегрирована в ядро ОС Linux. В целом, говоря предельно кратко, Btrfs – это файловая система, созданная специально для Linux, основанная на структурах B- деревьев и работающая по принципу “копирование при записи” (copy-on-write).
Мне кажется, что для понимания необходимости создания этой файловой системы необходимо хотя бы вкратце показать исторический фон, на котором она создавалась. В связи с этим стало уже стереотипным мнением воспринимать Btrfs как прямой ответ на файловую систему ZFS, которую было запрещено включать в состав ядра Linux из-за лицензионной несовместимости с ним. Феномен появления столь масштабного решения, как ZFS, ряд возможностей которой отсутствовал в традиционных файловых системах Linux, нельзя было оставить незамеченным, поэтому Крис Мэйсон (Chris Mason), директор управления Linux Kernel Engineering в Oracle, инициировал разработку новой, не менее масштабной и амбициозной ФС, основанной c прицелом специально под ОС Linux.
В заключение нашего небольшого исторического экскурса следует сообщить о переломном моменте в развитии Btrfs, который произошел в конце 2007 года, когда на совместном совещании ведущих разработчиков Linux из компаний Oracle, Red Hat, Novell, IBM, HP, Intel, посвященного созданию файловой системы нового поколения для Linux (Next Generation FileSystem, NGFS), было принято решение сделать ставку на совместное развитие Btrfs, как наиболее универсальную и отвечающую всем современным вызовам ФС. После этого решения Btrfs получила уже официальный статус NGFS для Linux, что усилило ее дальнейшее развитие, превратив в эпицентр инноваций в этой области.
Прежде чем привести список основных технических возможностей этой файловой системы, следует еще раз подчеркнуть, что разработка этой ФС еще в самом разгаре, и несмотря на то, что немало уже сделано – многие возможности еще далеки от совершенства и логического завершения. Как пример такой незавершенности, можно привести то, что до сих пор не создан инструмент для проверки файловой системы и исправления ее ошибок. Вот ее основные особенности:
. Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes). Иначе говоря, в этой ФС нет максимального количества обслуживаемых файлов.
. Снимки файловой системы (snapshots), а также возможности делать снимки снимков и записываемые снимки (writeable snapshots).
. Для продвинутого контроля целостности применяются хэши на все данные и метаданные (тут нужно сразу заметить, так как от сравнения Btrfs и ZFS никак не уйти, что на данный момент в Btrfs применяется CRC-32C, что существенно хуже, чем в ZFS).
. Очень полезная возможность миграции с традиционных файловых систем ext3/ext4, что дает возможность очень прозрачного перехода на новую ФС.
. Завершаются работы над поддержкой автоматического распознавания и объединения дубликатов (дедупликация).
. Проверка файловой системы в рабочем режиме (online) и очень быстрая проверка в нерабочем режиме (offline).
. Прозрачные возможности избирательного сжатия файлов.
. Поддержка режима работы как RAID-массива (одна файловая система на нескольких томах).
. Подтома (subvolumes) и эффективное клонирование файловой системы, быстрое создание инкрементальных архивов.
. Прямая поддержка Device-mapper - важного компонента ядра Linux, с помощью которого организуется расширенное управление логическими томами.
. И многое другое.
И хотя эта ФС пока активно развивается, в качестве иллюстрации точек ее будущего роста и масштабности общей задумки для примера можно привести решение компании Oracle реализовать сетевой протокол файловой системы CRFS (фактически заменяющий устаревшие NFS и CIFS), который будет спроектирован и оптимизирован полностью под Btrfs. Второй похожий пример: после долгого анализа существующих ФС консорциум Intel и Nokia выбрал для своей будущей совместной мобильной Linux-платформы MeeGo как раз Btrfs, которая в сравнении с другими аналогами оказалась наиболее перспективной.
Ссылки по теме Btrfs:
http://en.wikipedia.org/wiki/Btrfs
http://lwn.net/Articles/342892/
https://btrfs.wiki.kernel.org/index.php/FAQ
http://filesystems.nm.ru/my/btrfs.pdf
http://db.usenix.org/publications/login/2012-02/openpdfs/Bacik.pdf
Окончание следует
Игорь Савчук
Компьютерная газета. Статья была опубликована в номере 08 за 2012 год в рубрике soft