- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF96:Что за штука
Материал из Linuxformat.
Что за штука... ZFS?
Пол Хадсон представляет, может быть, последнее слово в разработке файловых систем.
ZFS... Z... А может быть, это только «последняя буква в разработке файловых систем»?
Можно было бы и так сказать. Понятие «последнее слово» – это часть громкой рекламной кампании Sun.
Значит, именно Sun затеял ZFS?
Да, начиная еще с ранних прототипов, появившихся в конце 2001 г.
Как это, 2001? Или я попал не в тот номер, провалившийся в дыру времени, либо статью следовало назвать «Что за штука была... ZFS?»
Нет, все правильно. Ранние прототипы, конечно, устарели, но ведь разработка файловой системы серьезного уровня – процесс по определению продолжительный. Фактически, завершенный код вошел в состав Solaris – собственной Unix-системы Sun – лишь в прошлом году.
Тогда он тоже уже несвеж!
Может быть, но как раз в последние две недели наметился прогресс в переносе этой ФС на Linux, и если вы хотите удивить друзей своими техническими познаниями, то стоит поспешить.
Для того я и покупаю LXF, верно? OK, вы меня заинтересовали. Теперь скажите: чем же так замечательна ZFS?
Идея назвать ZFS «последним словом в разработке файловых систем» пришла потому, что эта система продумана до мелочей. В принципе, она способна хранить столько информации, что можно повредиться в уме, пытаясь уяснить себе такой объем. Возьмем, например, сегодняшнего чемпиона по объему хранения данных, диск Blu-ray, на котором можно размес- тить до 50 ГБ. Это немало, верно? Теперь представим компьютер, который ежесекундно перемалывает объем информации, равный одному диску Blu-ray – то есть, на жесткий диск сохраняется 50 ГБ в секунду. В течение года – считая, что диск не успеет разлететься на куски – будет накоплено чудовищное количество данных, а именно 1 577 880 000 ГБ, или около полутора миллионов терабайт. Солидно, а? Ну, а теперь представим, что мы старательно сохраняли эту информацию со времени гипотетического сотворения Вселенной, что-то около 14 миллиардов лет. Перед нами уже 17 356 680 000 000 000 000 ГБ данных, величина, уже недосягаемая для постижения.
А хватит ли 17 356 680 000 000 000 000 ГБ? У меня, знаете, весьма обширная коллекция пор... э-э, MP3.
Но и я еще не закончил! 17 356 680 000 000 000 000 ГБ – очень большое число, но нас на Земле шесть миллиардов, и каждый желает сохранить свои данные в системе ZFS, поэтому умножим-ка это число на шесть миллиардов. А заодно представим, что где-то еще во Вселенной существует шесть миллиардов обитаемых миров, в каждом из которых проживают по шесть миллиардов аборигенов, и каждый хотел бы сохранить 50 ГБ/с в одной и той же файловой системе со времени образования Вселенной. Мы получим уже 6x1038 ГБ, или 600 триллионов триллионов терабайт.
Короче, ZFS может хранить много данных? Да нет, не просто «много» данных. Все земляне и инопланетяне за все это время смогут занять меньше одного процента от потенциальной вместимости ZFS.
Колоссально. Ну, а помимо последнего слова по объему хранения, чем еще замечательна ZFS?
На самом деле, объем – разве что самая яркая особенность на фоне нескольких важных нововведений. Руководитель проекта назвал было эту систему Zettabyte Filesystem, но вернулся к старому доброму ZFS, прикинув, что «если назвать это Zettabyte Filesystem, придется долго объяснять, что такое zettabyte, лифт успеет доехать до верхнего этажа, и все разойдутся по офисам, думая, что у новой системы просто большая вместимость. Что тоже верно, но все же не главное». Среди прочих заметных новшеств – автоматическое деление памяти на области [storage pooling], отложенное копирование [copy-on-write] и динамическое чередование [dynamic striping].
Мрак. А нельзя ли в стиле данной рубрики «разжевать» мне все это?
«Отложенное копирование» – моя любимая функция, вот с нее и начнем. Представим себе процесс перемещения файла в 500 МБ из одной директории в другую. На Linux это происходит в мгновение ока: системе проще потихоньку изменить файловую структуру, чем побайтно копировать файл на новое место, а затем удалять оригинал. Но если файл нужно скопировать – то есть обеспечить его одновременное присутствие в двух местах – Linux осуществит побайтное копирование; этот процесс, вероятно, займет несколько минут. А если файл «копируется» в файловой системе с отложенным копированием, то в действительности создается лишь ссылка на него – в обоих местах используется один и тот же исходный файл, поэтому скорость копирования столь же высока, как и при перемещении.
А если изменить копию? Оригинал ведь испортится?
Отнюдь – потому эта функция и называется отложенным копированием. В тот же миг, когда одна из виртуальных копий попытается изменить исходный файл, произойдет его реальное копирование на новое место, и все изменения будут записаны уже в эту реальную копию. Сейчас объясню подробнее. Пусть FileA скопирован в директории Foo, Bar и Baz. Сначала этот файл находится в одном месте, и пути Foo/ FileA, Bar/FileA и Baz/FileA указывают на один и тот же файл. Теперь, если пользователь попытается изменить Bar/ FileA, то ZFS непременно предоставит для этого независимую версию файла, изменения в которой будут невидимы для Foo/FileA и Baz/FileA. На практике, ZFS может применить эту функцию для создания версионной системы, в которой все версии всех файлов будут сохраняться автоматически.
Выходит, она сделает резервную копию моего жесткого диска?
Нет. По крайней мере, не в обычном смысле слова. Вместо одной огромной резервной копии у вас будет множество мелких, разбросанных по всей системе. Но если нужна традиционная резервная копия, то ZFS и тут поможет, ведь она умеет создавать отложенные клоны данных. При этом вся файловая система действует как одна ссылка на отложенное копирование, то есть можно модифицировать файлы в процессе их сохранения на резервный носитель: для клонов эти изменения невидимы.
Вы были правы – от всего этого «крыша едет»!
ZFS изменила даже базовую концепцию жестких дисков: появилось понятие «область памяти». На Linux истинная гибкость файловой системы может быть достигнута лишь при использовании менеджера томов типа LVM, но ZFS это ни к чему, так как можно включить в область памяти столько угодно устройств, а затем на основе созданной области построить собственно файловую систему.
А что такое «чередование»?
В действительности все устройства, включаемые в область памяти, являются виртуальными и могут быть как физическими приводами, так и RAID- массивами дисков.
Круто, но я не о том спрашиваю. Можно ли чередовать данные в областях памяти ZFS?
Конечно, можно. А динамическим чередование называется потому, что в область памяти можно свободно добавлять новые виртуальные устройства, при этом ZFS автоматически изменит параметры чередования, чтобы извлечь максимум пользы из увеличившегося числа опознанных устройств. Размер области памяти вырастет, а все операции чтения/записи будут распределены между новыми модулями так, чтобы нагрузить их равномерно.
Хитро придумано. А можно ли установить ZFS на мою Linux-машину?
Это не так просто. Лицензия ZFS несовместима с лицензией ядра Linux, поэтому скомпилировать ее в ядро прямо сейчас невозможно. Но существует проект (см. http://zfs-on-fuse.blogspot.com) по созданию FUSE- интерфейса для ZFS, и, по типу проекта NTFS-3g, ZFS сможет работать в пользовательском пространстве. На этом сайте можно более подробно прочесть о том, почему ZFS такая крутая, а также о том, что предпринимается для ее переноса на OS X и FreeBSD.
Скукотища... А нет ли более занимательного способа узнать больше?
А я-то надеялся, что вы об этом не спросите. Но, коли так, посмотрите видеоролик Sun Germany о том, какая ZFS крутая. Найти его можно по адресу http://video.google.com/videoplay?docid=8100808442979626078. Только не проклинайте меня, если в результате не поймете, на что потратили 10 минут своей жизни – это «странность» совершенно нового уровня. Ролик наглядно демонстрирует, насколько ZFS отказоустойчива: показано, как она бесперебойно справляется с областью памяти, состоящей из 12 USB-накопителей, причем все они отключаются и подключаются в случайном порядке!