Zfs linux как использовать

Введение в файловую систему Z File System (ZFS) для Linux

ZFS широко используется для хранения данных, любителями NAS и другими гиками, которые предпочитают иметь собственные резервированные системы, а не уповать на облачные.

Что такое ZFS и для чего я могу ее использовать?

Z file system — это свободный менеджер логических томов с открытым исходным кодом, разработанный в компании Sun Microsystems для операционной системы Solaris. Некоторые самые привлекательные его возможности:

Неограниченная масштабируемость

Хорошо, она не бесконечна, но это 128-битная файловая система, которая способна управлять зетабайтами (миллиард терабайт) данных. Неважно, какой размер имеет ваш жесткий диск, ZFS будет пригодна для него.

Максимальная целостность

Для всего, что вы делаете внутри ZFS, рассчитываются контрольные суммы, чтобы обеспечить целостность файлов. Вы можете быть уверены, что не произойдет незаметного повреждения ваших файлов и резервных копий. Кроме того, ZFS в фоне постоянно проверяет целостность ваших данных и, если нужно, выполняет их автоматическое восстановление.

Объединение дисков

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

ZFS способна работать с различными уровнями RAID, сохраняя при этом высокую производительность, сравнимую с аппаратными контроллерами RAID. Это позволяет вам сэкономить деньги, упростить настройки и сохранить производительность дисковой системы.

Установка ZFS

Так как в этом руководстве мы затрагиваем только основы, мы не будем устанавливать ZFS в качестве корневой файловой системы. Здесь предполагается, что вы используете ext4 или некоторую другую файловую систему и хотите использовать ZFS для некоторых из вторичных жестких дисков. Ниже приведены команды для установки ZFS в популярных дистрибутивах Linux.

Solaris и FreeBSD могут поставляться с уже установленной ZFS и готовы к ее использованию.

Если у вас какой-либо другой дистрибутив, проверьте сайт zfsonlinux.org и кликните свой дистрибутив в списке «Packages», чтобы получить инструкции по установке ZFS.

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

Инсталляция займет определенное время, но после ее окончания запустите команду

чтобы убедиться, что установка проведена корректно. Вы должны получить вывод типа:

Мы используем свежую установку Ubuntu server с одним жестким диском.

Настройка ZFS

А теперь давайте подключим к компьютеру еще шесть жестких дисков.

Эта команда показала нам шесть дисков, которые мы установили. На данных момент использовать их невозможно, так как они неразмечены.

Как мы уже говорили ранее, одним из преимуществ ZFS является то, что вам не нужно возиться с разделами (хотя вы можете, если хотите). Давайте возьмем для начала три диска и поместим их в пул с помощью команды:

zpool create — это команда, используемая для создания нового пула данных, -f позволяет игнорировать возникающие ошибки (например, если диски уже содержат данные), geek1 — имя создаваемого пула, /dev/sdb /dev/sdc /dev/sdd — жесткие диски, которые мы помещаем в пул.

После создания пула вы можете просмотреть его с помощью команд df или sudo zfs list:

Как вы можете видеть, /geek1 уже смонтирован и готов к использованию.

Читайте также:  Ati radeon 3100 драйвера для windows

Если вы хотите посмотреть, какие три диска включены в пул, это можно сделать с помощью команды sudo zpool status:

Итак, мы создали динамический пул объемом 9 ТБ (фактически это RAID 0). Если вы не знакомы с этими понятиями, представьте, что в /geek1 мы моздали файл размером 3 Кб. При этом автоматически 1 Кб будет записан на sdb, 1 Кб на sdc и 1 Кб на sdd. В результате при считывании этого файла каждый диск будет считывать свой фрагмент одновременно, то есть скорость чтения утроится. Но плохая новость в том, что если хоть один из дисков выйдет из строя, мы потеряем весь файл.

Предположим, что для вас защита данных важнее скорости доступа к ним. В этом случае необходимо настроить все иначе. Во-первых, удалим созданный нами пул, чтобы можно было использовать задействованные в нем диски:

Пул удален. Теперь давайте задействуем наши три диска для создания пула RAID-Z, который является значительно улучшенной версией RAID 5, так как он позволяет избежать потери данных с помощью копирования при записи. RAID-Z требует как минимум трех жестких дисков и является компромиссом между RAID 0 и RAID 1. В RAID-Z также имеете повышенную скорость чтения за счет чередования блоков, но при этом обеспечивается безопасность путем параллельного распределения данных. Если один из дисков в вашем пуле откажет, просто замените его и ZFS восстановит все данные на основе информации распределенной на других дисках. К потере данных может привести только одновременный выход из строя двух дисков. Для еще большей надежности вы можете использовать RAID 6 (RAID-Z2 в случае ZFS) с двойным распределением данных.

Для создания пула мы используем ту же команду zpool create, но задаем тип raidz:

Теперь команда df -h показывает, что наш пул размером 9 ТБ уменьшился до 6 Тб, так как 3 Тб используются для параллельного распределения данных. С помощью команды zpool status мы можем выяснить, что наш пул теперь относится к типу RAID-Z.

Чтобы убедиться, насколько просто расширить пул, давайте добавим в него остальные три диска (еще 9 ТБ):

Источник

Как использовать файловую систему ZFS в Linux

Файловая система ZFS невероятно популярна.

В результате многие в предприятии клянутся им в верности и используют его для размещения триллионов байтов данных.

Несмотря на свою популярность, пользователи Linux не смогут наслаждаться этим из коробки.

Вместо этого те, кто хочет проверить это и использовать его в качестве основной файловой системы хранилища, должны будут установить его.

Установка ZFS немного отличается от других файловых систем, и в зависимости от того, что вы используете, может потребоваться небольшое ноу-хау.

Если вы новичок в этой файловой системе, лучше всего идти по маршруту Ubuntu.

Начиная с Ubuntu 16.04, Canonical упрощает работу с ZFS.

Еще лучше, Ubuntu – безусловно самая безопасная реализация ZFS в Linux, с простой настройкой и процессом сборки, который, как известно, очень надежный (в то время как другие дистрибутивы Linux имеют высокий риск нарушения ZFS).

Примечание. Хотя можно использовать ZFS для одного жесткого диска, это не очень хорошая идея, и вы, вероятно, пропустите все функции, которые делают эту файловую систему отличной.

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

Прежде чем продолжить, убедитесь, что у вас более 1 жесткого диска для ZFS.

Настройка ZFS

Файловая система ZFS работает, объединяя множество разных жестких дисков вместе, чтобы создать один большой центр хранения.

Это звучит слишком сложно, и это так. Тем не менее, результат – превосходное хранилище с большим пространством.

Создание новой файловой системы ZFS немного сложнее, чем просто открытие редактора разделов Gparted.

Вместо этого вам нужно будет взаимодействовать с ним на уровне командной строки. В

Читайте также:  Редактор gopro для windows

окне терминала запустите команду lsblk. Запуск команды «list block» выведет все накопители на вашем ПК Linux.

Пройдите и решите, какие жесткие диски использовать для вашего Z-пула, и помните имена. В этом учебнике наши три диска в пуле ZFS: /dev/sdb, /dev/sdc и /dev/sdd.

Затем вам нужно полностью обнулить жесткие диски, выбранные для Z-пула, чтобы у них больше не было данных. Используя команду dd, перезапишите каждый из дисков. Это займет некоторое время.

Примечание: измените /dev/sdX с идентификатором диска, найденным с помощью команды lsblk (sdb и т. д.).

Когда dd закончит работу, запустите команду fdisk.

Запуск fdisk покажет много информации о жестких дисках, включая информацию о файловой системе для каждого.

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

Этот шаг имеет решающее значение, поскольку ZFS не использует традиционный формат разбиения.

Если вывод fdisk выглядит хорошо, безопасно создайте новый Z-poll ZFS.

Для базовой настройки Z-пула выполните следующие действия:

Базовая установка позволит большинству пользователей удовлетворить свои потребности в хранилищах.

Однако те, которые ценят свои данные и нуждаются в защите, не должны идти по пути установки с такой базовой настройкой.

Вместо этого подумайте о создании пула ZFS с RaidZ.

Использование RaidZ в сочетании с вашим ZFS-пулом гарантирует, что ваши данные будут избыточными, с множеством резервных копий.

Чтобы создать пул ZFS с RaidZ, запустите:

Чтобы добавить файлы в новый пул хранения ZFS, откройте диспетчер файлов и перейдите в корень файловой системы.

Поместите файлы внутри папки с именем ZFS Zpool.

Добавить диски в ZFS Zpool

ZFS предназначен для хранения большого количества данных, но это не значит, что ваши оригинальные диски не будут заполняться.

Наступит время, когда потребуется больше места для хранения.

К счастью, поскольку ZFS не использует разделы, добавление большего количества хранилища в систему прост.

В этом примере мы добавим еще два диска в Zpool (/dev/sde и /dev/sdf).

Примечание: если ваша установка ZFS не использует RaidZ, удалите ее из команды.

Удалить пул ZFS

Зачастую объемы ZFS ломаются и становятся непригодными.

Когда это произойдет, вам может потребоваться удалить пул хранения.

Чтобы удалить пул хранения, откройте терминал и используйте команду zfs destroy.

Запуск zpool destroy занимает довольно много времени, в зависимости от того, сколько данных находится в вашем пуле хранения.

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

Проверить статус ZFS

Быстрый способ проверить статус вашего Zpool с помощью команды zpool status.

С его помощью пользователи могут видеть базовое считывание тома ZFS, как он это делает и имеются ли какие-либо ошибки.

Чтобы проверить статус, выполните следующую команду:

Источник

Zfs linux как использовать

Copy raw contents

Copy raw contents

Внимание! Данная тема регулярно служит источником холиваров и граблей! Рекомендуется читать до конца перед применением!

Зачем вот это вот все

Postgres, в отличие от MS SQL, не умеет сжатие данных.
Зато сжатие отлично умеет zfs, файловая система и по совместительству менеджер хранилищ.
TODO: COW — кратко плюсы и минусы
Аналоги: btrfs, почему все же не она.
Большое сравнение файловых систем смотрим здесь.

Что не так с zfs

Как считают многие linux-разработчики и ментейнеры дистрибутивов, «проект мог бы быть прекрасен и мог бы претендовать на роль лучшей ФС будущего», но имеет несовместимую с ядром linux лицензиюю. В общем, лицензионные перипетии ужасно изговняли всю эту историю, и это очень-очень печально (за подробностями — в google). Несмотря на это, debian, ubuntu, arch, suse и другие дистрибутивы не только поддерживают zfs, но и имеют воможность установки системы на zfs. Если хочется zfs прям из коробки, например для создания обособленного хранилища, имеет смысл посмотреть в сторону freebsd. Небольшой курьез — в виду очень бодрого развития проекта zfs-on-linux freebsd планирует пересесть на него

Читайте также:  Линукс скопировать папку с файлами

Важно! Неоптимальная конфигурация пула zfs может снизить быстродействие на порядок!
Чтобы понять, насколько велика может быть разница, имеет смысл сделать хотя бы сферические замеры на ext4, а затем повторить их на zfs. Самый простой, хоть и не самый лучший, способ — создать раздел ext4 и выполнить dd с разным размером блока. Предположим у нас есть диск /dev/sdb, на который мы планируем положить zfs.
Для начала форматируем его в ext4:

/test mount /dev/sdb1

TODO: такой замер оказался ни о чем, сделать отсюда
Результаты записываем и после создания тома zfs тесты повторяем. Практически все параметры томов zfs можно менять на лету: очень рекомендую попробовать поставить recordsize равным 4, 8, 16, 32, 64, 128k и сравнить результаты замеров. Так, при блоке 128k скорость записи примерно уравнивается с показателями ext4. Задрежки, конечно, при таких условиях будут несколько больше.
Также можно сравнить производительность без сжатия, ну и сдругими параметрами поиграть.
Кратко общие рекомендации в интернетах: если надо писать большие файлы, либо писать много потоком — ставим 128k, много мелких файлов или сильно непоследовательно — в районе 4-16k. Оптимальное значение подбираем опытным путем.
Рекомендации в интернетах для postgresql: имеет смысл ставить размер записи равным (или большим) размеру блока, записываемого СУБД, в случае postgresql это 8k.

Рекомендации от сердца, выстраданные в результате долгих экспериментов и последующих наблюдений в проде:

  • Ставить 128k и не париться. Оно так по-умолчанию и стоит, к слову 😉
  • Сжатие lz4 обязательно, ибо по факту одни плюсы в выхлопе, минусов ни одного найти не удалось
  • Использовать zfs на гипервизоре для размещения виртуалок, в виртуалках использовать ext4
  • Избегать «вложенности» в случае виртуальных машин, когда zfs на гипервизоре и zfs в виртуалке
  • Для БД идеальной получилась схема с размещением на гипервизоре proxmox в lxc-контейнере, контейнер размещен на zfs — быстродействие сопоставимо с работой на хосте в пределах погрешностей

sync: Про sync настоятельно рекомендую все изучить и взвесить самостоятельно. Если кратко, то в случае внезапно краха системы ФС останется абсолютно живой и здоровой (хвала COW), но будет потеряно до 30 секунд работы (как правило 2-5, получено путем примерно 100 экспериментов с жестким отключением питания на обычном ПК). В случае БД теоретически можно получить несогласованные записи (например документ есть, а движений нет), но на практике еще я лично не сталкивался. Лично я для себя принял решение ставить sync=disabled.

Ну и напоследок про бэкапы. Ну их ведь все и всегда регулярно делают и проверяют, да? Мы вот еще и реплики всех виртуалок и контейнеров держим, для особо важных данных — еще и не по одной, благо дисковое пространство сегодня дешево.

Установка и создание пула

Создание пула для postgresql:

«/dev/» — здесь может быть диск или раздел диска (посмотреть, что есть: ls /dev/sd*), или просто каталог в случае тестов, например

/zfstst.
Если пул создется на hdd, и есть немного места на ssd, можно на ssd создать раздел и включить его в пул в качестве кэша:

Устанавливаем и сразу проверяем параметры:

Ограничение потребления памяти

Создаем /etc/modprobe.d/zfs.conf, в него записываем:

Отключение «умного» кэширования (только при необходимости, например на хосте proxmox):

Затем обновляем initramfs:

Чтобы не ждать перезагрузку, можно менять параметры на лету. Например:

Установка debian на zfs

Параметры: cat /sys/module/zfs/parameters/PARAMETER
Статистика ARC: cat /proc/spl/kstat/zfs/arcstats
iostat: zpool iostat -v

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Оцените статью