А что же Linux, спросите вы меня? Как обстоит дело с поддержкой ZFS в самой массовой из свободных UNIX-подобных операционных систем нашего времени? А вот с Linux’ом все оказывается гораздо сложнее. Ибо не зря поминали мы выше лицензию CDDL. Которая сама по себе очень даже свободная, и не накладывает почти никаких ограничений на распространение защищаемых ею программ.

В частности, не запрещает CDDL и коммерческого распространения производных продуктов в виде бинарников, без открытия исходных текстов. Как известно, не накладывает такого ограничения и лицензия BSD, почему включение кода поддержки ZFS в любые BSD-системы и проходит юридически безболезненно, как мы только что видели на примере FreeBSD.

А вот с лицензией GPL обеих актуальных версий (v2 и v3) CDDL входит в диалектическое противоречие. Ибо любые продукты, производные от программ под GPL, вне зависимости от формы распространения, должны сопровождаться исходными текстами. Что делает юридически невозможным включение кода поддержки ZFS непосредственно в ядро Linux, распространяемое, как известно, на условиях GPVv2.

Впрочем, это только одна трактовка данной коллизии. Другая же, освещённая в ряде сетевых источников (например, наглядно представленная здесь), объясняет невозможность включения в ядро Linux кода поддержки ZFS тем, что GPL требует распространения всех основанных на ней продуктов под GPL же, тогда как CDDL — сохранения её для «своих» компонентов.

Правда, в этом случае становится непонятным, как стало возможным включение поддержки ZFS в ядро FreeBSD, распространяемое под BSD-лицензией. Разве что «пофайловый» характер CDDL позволяет применять её только к модулям непосредственной поддержки ZFS. Труднее объяснить, каким образом удалось включить патч, обеспечивающий загрузку с ZFS-раздела, в вариант GRUB’а из Open Solaris — ведь тот вообще существует под GPLv3.

Впрочем, не будучи юристом, ломать голову над этими вопросом не буду, и моим читателям не советую, ибо пнаять это всё равно невозможно. Поэтому достаточно запомнить, что всеми резонными и юридически подкованными людьми признано, что поддержки ZFS в ядре Linux быть не может.

Таким образом, сложилась абсурдная, с точки зрения здравого смысла, ситуация: два программных продукта под свободными лицензиями (обсуждать вопрос, какая из них «свободней», мы сейчас обсуждать не будем), созданные друг для друга, как Hugges и… эээ… место пониже спины (дальнейшие события показали, что технических сложностей при портировании ZFS на Linux практически нет), невозможно было использовать в составе одного проекта. По крайней мере, для законопослушных граждан, чтущих… нет, не уголовный кодекс, а принципы свободного программного обеспечения.

И разумеется, здравомыслящие люди попытались эту ситуацию разрешить. И первая такая попытка была предпринята ещё в 2006 году в рамках Google Summer of Code. И основывалась она на поддержке ZFS через FUSE (Filesystem in Userspace). Поскольку модуль FUSE работает как пользовательское приложение, необходимости во включение кода ZFS в ядро Linux нет, что снимает все юридические вопросы. Однако встают вопросы другие — производительности и устойчивости.

Проект ZFS-FUSE развивается по сей день, хотя и не очень быстрыми темпами. Правда, находясь в стадии хронической бета-версии, он до сих пор рассматривается как сугубо экспериментальный. Да и в любом случае в таком виде ZFS выполнять свои функции — быть надёжным хранилищем данных большого объёма — скорее всего, не сможет.

Так что ZFS-FUSE нельзя считать кардинальным решением вопроса с этой системой размещения данных в Linux. А рассчитывать, что в его ядро будет встроена собственная реализация ZFS, рассчитывать не приходится.


Назад | Рассказы о ZFS | Вперёд