Книга посвящена дистрибутиву Linux Mint и одной из его главных



Скачать 21.34 Mb.
Pdf просмотр
страница27/30
Дата22.11.2016
Размер21.34 Mb.
Просмотров5956
Скачиваний0
1   ...   22   23   24   25   26   27   28   29   30
Начало истории ZFS
Разработчики ZFS поставили себе честолюбивую цель создать систему хранения данных, которая отвечала бы всем трем критериям идеала.
Разработка её проводилась в компании Sun Microsystems, командой под руководством Джеффа Бонвика и Мэттью Аренса (Matthew Первоначально название ZFS рассматривалось как аббревиатура от Zettabyte
File System, но быстро стало просто условным именованием. Его можно интерпретировать как последнюю точку в развитии файловых систем вообще.
И в последующем мы увидим это недалеко от истины.
Результаты работы над ZFS были представлены миру в августе 2004 года. А
в 2006 году она была включена в штатный состав OS Solaris 10 (релиз 6/06). То есть, подобно своим предшественницам, она также была проприетарным продуктом. И пользователям свободных подобных систем поначалу от ее существования было ни холодно, ни жарко. Однако период камерного существования ZFS продолжался недолго — уже в ноябре 2005 года, то есть до включения в Solaris, ее поддержка была интегрирована в открытый её
вариант, OpenSolaris. Ибо она основывалась на том же ядре SunOS 5, что и коммерческий прототип.
Исходники ZFS распространяются, как и собственно OpenSolaris, под лицензией CDDL (Common Development and Distribution License). Эта лицензия,
базирующаяся на Mozilla Public License (MPL), не влияет на общую лицензию проекта, в состав который включены компоненты. И потому оказывается совместимой с большинством свободных лицензий. За исключением. какой?
Правильно, GPL во всех её проявлениях.
Разумеется, ZFS была задействована в клонах openSolaris, таких, как, SchilliX ив первую голову, в Nexenta OS. Правда, последняя развивалась в направлении коммерческой системы хранения данных, а о числе пользователей остальных можно было только гадать.
Некоторое время ZFS была доступна пользователям а — вот осени 2007 года. Правда, ходившие переде выходом слухи, что она будет там файловой системой по умолчанию, оказались несколько преувеличенными поддержка ZFS оказалась опциональной и лишь в режиме
только для чтения. А в последующих версиях семейства кошачьих вообще исчезла и, видимо, уже не возродится.
Так что для широких народных масс ZFS по прежнему оставалась недоступной. Пока. пока ее не портировали под FreeBSD в 2007 году, и официально не включили её поддержку в ю версию этой ОС, вышедшую вначале года. В чём, как ив дальнейшем её развитии, основная заслуга принадлежит Павлу-Якубу Давидеку (Pawel Jakub Dawidek) и Ивану Ворасу
(Ivan Voras). Правда, до недавнего времени ZFS нельзя было задействовать при установке FreeBSD средствами её штатного инсталлятора и конфигуратора sysinstall. Однако это без труда можно было осуществить в дальнейшем руками. В том числе и разместить на ZFS корень файловой иерархии.
С самого начала поддержки ZFS во FreeBSD появилась и возможность задействовать е, что называется, «искаропки», в десктоп-ориентированном клоне последней — PC-BSD. Ас переходом FreeBSD, начиная с версии 9.0, на новую программу установки — BSDInstall, эта функция распространилась и на материнскую систему.
Успех ZFS во FreeBSD, где она стала если не главной файловой системой, то добилась равноправия с UFS2, послужил примером для других BSD-систем.
Так, ныне ZFS поддерживается в NetBSD — эта работа была начата Оливером
Голдом (Oliver Gould) летом 2007 года в рамках акции Google Summer of А в 2009 году Адам Хамсик (Adam Hamsik) интегрировал её код в ядро Правда, использование ZFS в этой операционке рекомендуется только в экспериментальных целях.
Наконец, одно время в списках рассылки DragonFlyBSD активно обсуждался вопрос о портировании ZFS и на эту операционку. Потом, правда, разговоры эти стихли — вероятно, в связи с активной разработкой файловой системы, обладающей во многом аналогичными возможностями. Однако,
учитывая лёгкость адаптации к DragonFlyBSD любых сторонних файловых систем, можно не сомневаться, что поддержка ZFS на уровне обмена данными будет включена вне тогда и если (или если и тогда, когда (и если) это кому- то понадобится.
Таким образом, пользователям большинства систем ZFS или уже доступна как нативная, или может стать доступной в ближайшее время.
Из истории юриспруденции
А что же Linux, спросите вы меня Как обстоит дело с поддержкой ZFS в самой массовой из свободных подобных операционных систем нашего времени А вот сом все оказывается гораздо сложнее. Ибо не зря поминали мы выше лицензию CDDL. Которая сама по себе очень даже свободная, и не накладывает почти никаких ограничений на распространение защищаемых ею программ.
В частности, не запрещает CDDL и коммерческого распространения производных продуктов в виде бинарников, без открытия исходных текстов.
Как известно, не накладывает такого ограничения и лицензия BSD, почему включение кода поддержки ZFS в любые системы и проходит юридически безболезненно, как мы только что видели на примере А вот с лицензией GPL обеих актуальных версий (v2 и v3) CDDL входит в
диалектическое противоречие. Ибо любые продукты, производные от программ под GPL, вне зависимости от формы распространения, должны сопровождаться исходными текстами. Что делает юридически невозможным включение кода поддержки ZFS непосредственно в ядро распространяемое, как известно, на условиях Кроме того, невозможность включения в ядро Linux кода поддержки объясняется тем, что GPL требует распространения всех основанных на ней продуктов под GPL же, тогда как CDDL — сохранения её для «своих»
компонентов.
Правда, часть кода ZFS была открыта под GPL стем, чтобы соответствующий патч можно было включить в загрузчик GRUB. Это обеспечило возможность загрузки Open Solaris непосредственно с ZFS- раздела. Однако оказалось недостаточным для полноценной реализации этой системы, которую можно было бы распространять подданной лицензией.
Впрочем, не будучи юристом, ломать голову над лицензионными вопросами не буду, и моим читателям не советую, ибо понять это всё равно невозможно.
А достаточно лишь запомнить, что всеми резонными и юридически подкованными людьми признано, что поддержки ZFS в ядре Linux быть не может.
Таким образом, сложилась абсурдная, сточки зрения здравого смысла,
ситуация: два программных продукта под свободными лицензиями
(обсуждать вопрос, какая из них свободней другой, мы сейчас не будем),
созданные друг для друга, как Huggies и. э-ээ... место пониже спины
(дальнейшие события показали, что технических сложностей при портировании ZFS на Linux практически нет, невозможно было использовать в составе одного проекта. По крайней мере, для законопослушных граждан,
чтущих... нет, не уголовный кодекса принципы свободного программного обеспечения.
И, разумеется, здравомыслящие люди попытались эту ситуацию разрешить.
И первая такая попытка была предпринята ещё в 2006 году в рамках Google
Summer of Code. Основывалась она на поддержке ZFS через FUSE (Filesystem in
Userspace). Поскольку модуль FUSE работает как пользовательское приложение, необходимости во включение кода ZFS в ядро Linux нет, что снимает все юридические вопросы. Однако встают вопросы другие производительности и устойчивости.
Проект ZFS-FUSE развивается посей день, хотя и не очень быстрыми темпами. Правда, находясь в стадии хронической бета-версии, он до сих пор рассматривается как сугубо экспериментальный. Да ив любом случаев таком виде ZFS выполнять свои функции — быть надёжным хранилищем данных большого объёма — скорее всего, не сможет.
Так что ZFS-FUSE нельзя считать кардинальным решением вопроса с этой системой размещёния данных в Linux.
Появление героини
И тем не менее, решение этой проблемы нашлось — и решение столь же изящное, сколь и очевидное. Его предложил весной 2010 года Брайан
Белендорф, некогда один из основных разработчиков сервера Apache. Он создал модуль поддержки ZFS, который собирается и может
распространяться отдельно от ядра, сохраняя прародительскую лицензию. А поскольку последняя, как уже говорилось, является лицензией
«пофайловой», этим самым обходится антагонистическое противоречие запрет на распространение продуктов, в которых смешан код, лицензируемый поди На базе разработки Брайана возникло сразу два проекта. Первый осуществлялся индийской компанией KQ Infotech, которой уже в сентябре года удалось выпустить работоспособный, пригодный для тестирования
Linux-ядра с реализацией файловой системы ZFS. А в январе следующего, года появилась финальная его версия, доступная тогда в исходниках ив виде двоичных пакетов для Fedora 14, RHEL6, Ubuntu 10.04 и Однако весной того же года KQ Infotech была куплена фирмой занимающейся производством накопителей, каковых, впрочем, в наших палестинах мало кто видел. И работы по дальнейшему развитию нативной поддержки ZFS были свёрнуты. Хотя исходники модуля и сопутствующих компонентов до сих пор доступны, последнее их обновление происходило более года назад. А информации о дальнейшей судьбе проекта с тех пор не появлялось.
Второй проект реализовывался самим Брайном вместе с сотрудниками
Ливерморской национальной лаборатории, каковая, будучи в подчинении
Министерства энергетики США, занимается не только вопросами ядерного оружия (эвфемизмы вроде Минсредмаша входу не только в бывшем
Советском Союзе, но и разработкой суперкомьютеров. В результате скоро возник проект ZFS on Linux — ZFS on Linux, в рамках которого модуль поддержки ZFS и сопутствующие утилиты поддержки, портированные из — так называемый SPL (Solaris Porting Layer), были доведены до ума, и к началу 2011 года стали пригодны для использования в экспериментальном режиме. А к настоящему времени, несмотря на формальное сохранение статуса release е, порт ZFS on Linux можно считать готовым к практическому применению.
Правда, майнтайнеры основных дистрибутивов не торопились включать поддержку ZFS в свои системы даже в качестве дополнительных неофициальных пакетов. Подозреваю, что не столько из косности и лени,
сколько из-за очередной сложности видимо, по всё тем же лицензионным ограничениям модули zfs и spl приходится привязывать к фиксированной версии (и даже конкретной сборке) ядра Linux. Что, при регулярных, даже корректирующих, обновлениях последнего требует и их пересборки.
Тем не менее, разработчики проекта воплотили результаты своей работы в виде PPA-репозитория для Ubuntu. Каковым без проблем могут пользоваться и применители Mint.
Обзор возможностей
Прежде чем погружаться в вопросы, связанные с ZFS, читатель, вероятно,
хотел бы убедиться в том, что это стоит делать. То есть — ознакомиться с возможностями, которые она ему предоставляет.
Для начала — немного цифр. В отличие от всех предшествовавших файловых систем и систем размещёния данных, ZFS является 128-битной. То есть теоретическое ограничение на её объём и объёмы её составляющих превышают не только реальные, но и воображаемые потребности любого
пользователя. По выражению создателя ZFS, Джеффа Бонвика, для её
заполнения данными и их хранения потребовалось бы вскипятить океан.
Так, объём пула хранения данных (zpool — максимальная единица в системе) может достигать величины 3×1023 петабайт (а один петабайт, напомню,
это 1015 или 250 байт, в зависимости от системы измерения. Каждый пул может включать в себя до 264 устройств (например, дисков, а всего пулов водной системе может быть тоже не больше Пул может быть разделён на 264 наборов данных (dataset — в этом качестве выступают, например, отдельные файловые системы, по каждая. Правда, ни одна из таких файловых систем не может содержать больше 248 файлов. Зато размер любого файла ограничивается опять же значением в 264 байт.
Количество таких ограничений можно умножить. Как уже было сказано, они лежат вне пределов человеческого воображения. И привожу я их только для того, чтобы вселить в пользователя уверенность ни он сам, ни его внуки и правнуки в реальности не столкнутся c ограничениями на размер файловой системы или отдельного файла, как это бывало при использовании FAT или Так что перейду к особенностям ZFS, наиболее интересным, по моему мнению, десктопному пользователю. Здесь в первую очередь надо отметить гибкое управление устройствами. В пул хранения данных можно объединить произвольное (в обозначенных выше пределах) число дисков и их разделов.
Устройства внутри пула могут работать в режиме расщепления данных,
зеркалирования или избыточности с подсчётом контрольных сумм, подобно
RAID’ам уровней 0, 1 и 5, соответственно. В пул можно включать накопители,
специально предназначенные для кэширования дисковых операций, что актуально при совместном использовании SSD и традиционных винчестеров.
Пул хранения становится доступным для работы сразу после его создания,
без рестарта машины. В процессе работы дополнительные диски или разделы,
в том числе и устройства кэширования, могут как присоединяться к пулу, таки изыматься из его состава в горячем режиме.
Пул хранения может быть разделён на произвольное количество иерархически организованных файловых систем. По умолчанию размер их не определяется, и растёт по мере заполнения данными. Это избавляет пользователя от необходимости расчёта места, потребного под системные журналы, домашние каталоги пользователей и другие трудно прогнозируемые вещи. С другой стороны, не запрещёно при необходимости и квотирование объёма отдельных файловых систем — например, домашних каталогов отдельных излишне жадных пользователей.
Файловые системы ZFS также доступны для размещёния на них данных сразу после создания, никаких специальных действий по обеспечению их монтирования не требуется. Создание файловых систем внутри пула процесс предельно простой разработчики стремились сделать его не сложнее создания каталогов, и это им вполне удалось. Но при этом составляющие пула остаются именно самостоятельными файловыми системами, которые могут монтироваться со своими специфическими опциями, в зависимости от назначения.
Среди других возможностей ZFS, интересных настольному пользователю,
можно упомянуть:

создание снапшотов файловой системы, позволяющих восстановить её
состояние в случае ошибки клонирование файловых систем компрессия данных файловой системы и дедупликация (замена повторяющихся данных ссылками на первоисточник создание нескольких копий блоков с критически важными данными и,
напротив, возможность отключения проверки контрольных сумм для повышения скорости доступа к ним. В общем, даже если не говорить об быстродействии ZFS (а оно весьма высоко, особенно в многодисковых конфигурациях, перечислять её
достоинства можно очень долго. Так долго, что поневоле успеваешь задаться вопросом а есть ли у неё недостатки?
Разумеется, есть. Хотя большая их часть — скорее особенности например,
ограничения при добавлении или удалении накопителей в пуле, или отсутствие поддежки По большому счёту для пользователя ау обнаруживается два кардинальных недостатка некоторая усложнённость её использования,
обусловленная юридическими факторами, и высокие требования к аппаратуре.
Первый недостаток если не ликвидирован, то сглажен трудами Брайана
Белендорфа (Brian Behlendorf) сотоварищи и майнтайнерами прогрессивных дистрибутивов вкупе с примкнувшими к ним независимыми разработчиками.
Аппаратные же претензии ZFS мы сейчас и рассмотрим.
Аппаратные потребности
Итак, ZFS предоставляет пользователю весьма много возможностей. И
потому вправе предъявлять немало претензий к аппаратной части процессору (изобилие возможностей ZFS создает на него достаточную нагрузку, оперативной памяти и дисковой подсистеме.
Впрочем, претензии эти отнюдь не сверхъестественные. Так, процессор подойдёт любой из относительно современных, начиная, скажем, с Core 2 Минимальный объём памяти определяется в 2 ГБ, с оговоркой, что применение компрессии и дедупликации требуют 8 ГБ и более.
Сама по себе ZFS прекрасно функционирует и на одиночном диске. Однако в полном блеске показывает себя при двух и более накопителях. В
многодисковых конфигурациях рекомендуется разнесение накопителей на разные контроллеры современные SSD способны полностью загрузить все каналы SATA-III, и равномерное распределение нагрузки на пару контроллеров может увеличить быстродействие.
К железным претензиям добавляются и притязания программные. В
первую очередь, ZFS on Linux требует 64-битной сборки этой ОС, поскольку в
32-разрядных системах действует ограничение на адресное пространство
физической памяти. Кроме того, в конфигурации ядра должнв быть отключена опция Если вас привлекли достоинства ZFS и не устрашили её «железные»
аппетиты, самое время опробовать её в деле. Что потребует знакомства с некоторыми специфическими понятиями.
Терминология
Центральным понятием ZFS является пул хранения данных (zpool). В него может объединяться несколько физических устройств хранения — дисков или дисковых разделов, причём первый вариант рекомендуется. Ноне запрещёно и создание пула из одного диска или его раздела.
Каждый пул состоит из одного или нескольких виртуальных устройств. В качестве таковых могут выступать устройства без избыточности (то есть всё те же диски и/или их разделы, или устройства с избыточностью зеркала и массивы типа Зеркальное устройство (mirror) — виртуальное устройство, хранящее на двух или более физических устройствах, но прич тном их количестве,
идентичные копии данных на случай отказа диска — виртуальное устройство из нескольких устройств физических,
предназначенное для хранения данных и их контрольных сумм с однократным или двойным контролем чётности. В первом случае теоретически требуется не менее двух, во втором — не менее трёх физических устройств.
Если пул образован устройствами без избыточности (просто дисками или разделами, то одно из vdev, соответствующее ему целиком, выступает в качестве корневого устройства. Пул из устройств с избыточностью может содержать более одного корневого устройства — например, два зеркала.
Пулы, образованные виртуальными устройствами, служат вместилищем для наборов данных (dataset). Они бывают следующих видов:

файловая система (filesystem) — набор данных, смонтированный в определённой точке и ведущий себя подобно любой другой файловой системе

снапшот (snapshot) — моментальный снимок текущего состояния файловой системы, доступный только для чтения клон (clone) — точная копия файловой системы в момент его создания;
создаётся на основе снимка, нов отличие от него, доступен для записи том (volume) — набор данных, эмулирующий физическое устройство,
например, раздел подкачки. Наборы данных пула должны носить уникальные имена такого вида) Пулы и наборы данных в именуются по правилам пространства имён впрочем, довольно простым. Запрещёнными символами для всех являются
символы подчёркивания, дефиса, двоеточия, точки и процента. Имя пула при этом обязательно должно начинаться с алфавитного символа и не совпадать с одним из зарезервированных имён — log, mirror, raidz или spare (последнее обозначает имя устройства горячего резерва. Все остальные имена, в соответствие с демократическими традициями пространства имён ZFS,
разрешены.
А вот об именах физических устройств, включаемых в пул, следует сказать особо.
Модели именования устройств
В современном е использование для накопителей имён верхнего уровня, имеющих вид /dev/sda, не является обязательным, а в некоторых случаях и просто нежелательно. Однако правила менеджера устройств udev позволяют определять и другие модели идентификации накопителей:

метке тома (/dev/disk/by-label); идентификатору диска (/dev/disk/by-id); пути к дисковому устройству (/dev/disk/by-path); универсальному уникальному идентификатору, Universally Unique
IDentifier (/dev/disk/by-uuid). Ас полным списком вариантов идентификации блочных устройств можно ознакомиться, просмотрев имена подкаталогов в каталоге /dev/disk, их содержимое — это символические ссылки на имена верхнего уровня».
С идентификацией пометке тома и по UUID, вероятно, знакомо большинство читателей. И к тому же в пространстве имён ZFS они не используются. А вот с идентификацией by-path и by-id нужно познакомиться поближе.
Модель именования by-path использует имена устройств, привязанные к их положению на шине PCI и включающие номер шины и канала на ней. Имя дискового устройства выглядит примерно так Дисковые разделы маркируются добавлением к имени устройства суффикса Модель именования by-path идентифицирует устройства вполне однозначно, и особенно эффективна при наличии более чем одного дискового контроллера. Однако сами имена и устройств, и разделов описываются довольно сложной для восприятия последовательностью. Да ив большинстве
«десктопных» ситуаций модель эта избыточна.
Модель идентификации by-id представляет имена носителей информации в форме, наиболее доступной для человеческого понимания. Они образованы из названия интерфейса, имени производителя, номера модели, серийного номера устройства и, при необходимости, номера раздела, например:
ata-SanDisk_SDSSDX120GG25_120823400863-part1 Таким образом, все компоненты имени устройства в модели by-id определяются не условиями его подключения или какими-то правилам, а задаются производителем и жёстко прошиты в железе. И потому эта модель является наиболее однозначной для именования устройств. А также,
что немаловажно, строится по понятной человеку логике.
Какую из моделей именования устройств выбрать для данного пула зависит от его назначения и масштабов. Имена верхнего уровня»
целесообразно применять для однодисковых пулов (особенно если в машине второго диска нет и не предвидится. Они же, по причине простоты и удобопонятности, рекомендуются для экспериментальных и разрабатываемых пулов. И очень не рекомендуются — во всех остальных случаях, так как зависят от условий подключения накопителей.
Этого недостатка лишена модель by-id: как пишет Брайан, при её
использовании диски можно отключить, случайно смешать и подключить опять произвольным образом — и пул будет по-прежнему корректно работать. Как недостаток её рассматривается сложность конфигурирования больших пулов с избыточностью. И потому она рекомендуется для применения в «десктопных» и квартирных (типа семейного сервера)
условиях.
Для больших (более 10 устройств) пулов из дисков, подключённых к нескольким контроллерам, рекомендуется идентификация by-path. Однако в наших целях она громоздка и избыточна.
Наконец, ZFS on Linux предлагает и собственную модель идентификации /dev/disk/zpool, в котором именам by-path ставятся в соответствие уникальные и осмысленные «человекочитаемые» имена, даваемые пользователем. Модель эта рекомендуется для очень больших пулов, каковых на настольной машине ожидать трудно.
Так что дальше я буду использовать имена верхнего уровня, говоря об абстрактных или экспериментальных ситуациях, и об именах by-id, когда речь зайдёт о практических примерах применения ZFS.
Включение поддержки ZFS в Mint
Для практического использования ZFS on Linux перво-наперво необходимо обеспечить её поддержку в вашем дистрибутиве — ибо по причинам,
описанным ранее, сама собой она не поддержится нив одном Linux’е.
Как это сделать, зависит от дистрибутива. В Сети можно найти подробные инструкции для Ubuntu, которые легко распространяются на все производные от неё системы, в том числе и на Как уже было сказано, пакеты поддержки ZFS представлены в PPA- репозитори, где они реализованы в виде сценариев dkms, предполагающих сборку модулей под текущую версию ядра. Пакеты эти объединены в метапакет zfs-native, существующий в двух варианта
ZFS Stable Releases и Daily Releases
, то есть стабильной и тестовой сборках, соответственно.
Для использования ZFS в Ubuntu для начала нужно подключить нужный PPA- репозиторий. Поскольку все последующие действия потребуют прав суперпользователя, перво-наперво обретаем их на длительное время командой sudo -i с вводом пользовательского пароля. А затем собственно подключаем репозиторий:
# add-apt-repository ppa:zfs-native/stable Или, при желании поэкспериментировать --
# add-apt-repository ppa:zfs-native/daily Обновляем кэш:
# apt update Теперь строим дерево зависимостей — в Mint 17.1 Rebecca это обязательный шаг, хотя ранее я обходился без него apt build-dep ubuntu-zfs И собираем необходимые пакеты apt install ubuntu-zfs
Поскольку в репозитории они существуют не в бинарном виде, а в виде исходников, приведённая команда потянет за собой сборочный инструментарий. И сама сборка пакетов займёт определённое время. Но рано или поздно она закончится, и можно будет скомандовать modprobe zfs и проверить результат командой lsmod | grep zfs вывод которой будет выглядеть примерно так 1158757 4 zcommon 51283 1 zfs znvpair 81997 2 zfs,zcommon zavl 15011 1 zfs zunicode 331226 1 zfs spl 88617 5 zfs,zcommon,znvpair,zavl,zunicode После чего остаётся создать точку монтирования для пула ZFS — в моём случае таким образом mkdir /home/data Дать ей атрибуты принадлежности обычному пользователю chown -R alv:alv /home/data Теперь можно приступать к применению ZFS в мирных практических целях.

Каталог: wp-content -> uploads -> 2016
2016 -> Государственное областное бюджетное
2016 -> В. П. Зинченко писал о том, что если человек в детстве не дополучил некую норму участия в игровом времяпрепровождении, он приобретает социально-психологическую ущербность вроде «игровой дистрофии», которую в последу
2016 -> Общешкольное родительское собрание «Об ответственности родителей за воспитание детей»
2016 -> 1 июня 2016 года Международный день защиты детей 1 июня
2016 -> «Формирование социально-нравственной позиции дошкольников посредством введения сказочных сюжетов в компьютерные дидактические игры»
2016 -> Принята Утверждена
2016 -> Конкурс по разработке компьютерных игр патриотической направленности «патриот by»


Поделитесь с Вашими друзьями:
1   ...   22   23   24   25   26   27   28   29   30


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал