2gusia (2gusia) wrote,
2gusia
2gusia

Category:

Апгрейд zfs пула?

Когда писал Апгрейд nas4free до 9.2.x в этой и последующих частях, я не стал делать пятый шаг - апгрейд версии zfs пула. Потому, что дорога эта в один конец и даунгрейда не бывает. Но, пару месяцев пощупав текущую сборку, апгейд я всё же сделал. И с тех пор пару недель смотрел на пул. Проблем не отметил.

Так что давайте обсудим три вопроса - нужно ли делать апгрейд, как его делать и зачем. Но сначала

Немного истории

Файловая система ZFS родилась в недрах компании SUN как свободный софт, распространяемый по CDDL лицензии.  После того, как компания Oracle SUN купила, для свободных проектов SUN настали трудные времена. ZFS новые владельцы стали развивать под собственнической лицензией. В результате ZFS от  Oracle стал несовместим с другими реализациями ZFS.

Свободная ветка не просто выжила, но продолжила независимое развитие. (В частности, потому, что в игру включился кое-кто побогаче Оракла с их 35 ярдами капитализации, но это другая история...). А нас интересует, что последней версией zpool, которую могут использовать и открытые системы и Оракловский Солярис, стала версия 28. И именно она использовалась в nas4free до последнего времени.

Дальше Оракл продолжает по одной добавлять функции и увеличивать счётчик (дошли до 34). А свободная версия получила номер 5000 (чтобы не пересекаться с Оракловкими версиями), причем цифра 5000 расти не будут. А новые функции будут добавляться  и по желанию включаться. Для этого каждая новая фунциональность (feature) получает свой признак, флаг (flag)

Подробно см man, на пальцах флаг может принимать три значения
- disabled, те фунциональность выключена и система, которая её не понимает, может пул монтировать на чтение и запись
- enabled, те фунциональность включена и может быть использована в любой момент. Но пока не использовалась и система, которая её не понимает, может пул монтировать на чтение и запись
- active, те фунциональность включена и уже используется. Система, которая её не понимает, пул монтировать не может (или может в режиме только для чтения в зависимости от природы не подерживаемой функциональности).

Значение может только расти, переключиться из enabled в disabled нельзя.

И вот с переходом на FreeBSD 9.2 у пользователей nas4free появился выбор - включать новый функционал или нет.

Нужно ли делать апгрейд zfs пула?

Не обязательно. Вы можете сколь угодно долго использовать старую 28 версию. Просто не получите новых функций и не сможете принять zfs receive поток с более новой версии zpool. Зато ваш пул может быть смонтирован и на открытой оси (Illumos и др форки OpenSolaris, FreeBSD, Linux)  и на Oracle Solaris. Зачем - это другой вопрос...

Ну и как косметический недостаток, nas4free в описании статуса пула напоминает о возможности его апгрейда. Но помните, это операция в один конец - даунгрейд не предусмотрен.

Как делать апгрейд?

Предле всего - проверить пул, запустив scrub. Из командной строки zpool scrub Pool или из вебгуя, Disks|ZFS|Pools|Tools

Если всё в порядке - то из командной строки zpool upgrade -a или из вебгуя, Disks|ZFS|Pools|Tools
Ключ -a переводит все доступные фичи в enabled, так что они сразу могут использоваться. При апгрейде через вебгуй ключ -a используется.

И каков же новый функционал?
Можно посмотреть из командной строки, пока их в nas4free доступно три
zpool get all Pool
...
Pool  feature@async_destroy  enabled                local
Pool  feature@empty_bpobj    active                 local
Pool  feature@lz4_compress   enabled                local


Функциональность async_destroy позволяет удалять данные с пула и освобождать занятые блоки в фоновом режиме даже после сбоя питания (раньше требовалось пройти/проверить затрагиваемую файловую систему);

empty_bpobj уменьшает потребность в пространстве для служебной информации, что полезно при большом количестве снапшотов файловой системы.

А вот функционал lz4_compress - интереснее простому человеку

"Отмечается, что по сравнению с ранее доступным методом сжатия LZJB, новый метод отличается значительно возросшей производительностью при более высоком уровне сжатия. LZ4 упаковывает подлежащие сжатию данные примерно на 50% быстрее, а распаковывает на 80% быстрее, чем LZJB. Если данные несжимаемы, например, уже сжатые архивы или мультимедиа контент, то LZ4 обгоняет LZJB по скорости сжатия более чем в три раза. Производительности одного ядра CPU достаточно, чтобы сжимать поток данных 500 MB/s и распаковывать 1.5 GB/s (использование LZ4 замедляет обращение к диску примерно на 5 микросекунд, что на порядок меньше, чем обеспечивают самые быстрые SSD-накопители).

Что касается степени сжатия, то размер упакованных с использованием LZ4 данных занимает до 10% меньше места, чем при использовании LZJB. При этом, включение прозрачного сжатия может обеспечить двухкратную экономию дискового пространства для разделов с обычными немультимедийными данными, и, соответственно, позволяет сократить интенсивность ввода/вывода с носителя. В итоге, высокая производительность LZ4 в сочетании с уменьшением интенсивности обращения к диску может привести к общему увеличению пропускной способности на системах с простаивающими ядрами CPU. LZ4 автоматически распознаёт и игнорирует не подлежащие сжатию данные, что сводит к минимуму паразитную нагрузку при наличии в хранилища несжимаемых типов данных."


Активировать сжатие для любого датасета
zfs set compression=lz4 <датасет>

Приведу для понимания дальнейшего развития табличку с OpenZFS

illumos FreeBSD ZFS on Linux ZFS-OSX
async_destroy Y Y Y Y
empty_bpobj Y Y Y Y
lz4_compress Y Y Y Y
multi_vdev_crash_dump Y S N N
spacemap_histogram Y S N N
enabled_txg Y C N N
hole_birth Y C N N
extensible_dataset Y C N N
bookmarks Y C N N

Здесь: Y = реализовано, N = НЕ реализовано

по FreeBSD: Y = реализовано в -RELEASE, S = реализовано в -STABLE, C = реализовано в -CURRENT, N = НЕ реализовано

Tags: nas, nas4free, zfs
Subscribe

  • Но паразиты - никогда!

    Рекламная компания выборов достучалась и до меня. (вон сегодня Гугл с Эппл к раздаче подтянулись, отчитались об изъятии приложения Навальный). Решил…

  • Распни Его!

    Подрывал основы государственного строя. Оскорблял чувства верующих. Устраивал несогласованные митинги. Производил спиртосодержащую продукцию без…

  • Выезжала на берег «Катюша»

    Запрет на исполнение вместо гимна «Катюши» - это, несомненно, попытка плюнуть в лицо всей России. Но, парадоксальным образом, штука для нас очень…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments