s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
В блоге использованы материалы: Алексей Федорчук Что ему Гекуба? ZFS on Linux для применителя и Antergos и ZFS. Снапшоты WIKI JOHN RAMSDEN Arch Linux on ZFS Shaun Foulkes Arch Linux on ZFS Root With Separate Boot Brian Koopman ZFS: Automated Snapshots Дополнительно по теме можно почитать: Виктор Латушкин ZFS — новый взгляд на файловые системы (спасибо vasek за ссылку) @gmelikov, состоит в проекте ZFS on Linux ZFS on Linux: вести с полей 2017 - добавлено 22.10.2017 Пролог Установка Арча на ZFS дело не такое уж и простое, но оно того стоит. У меня это получилось не сразу, поэтому, когда все же получилось, я решил записать это, так как рабочих мануалов по установке ZFS на Linux в сети не так уж много и мне пришлось собирать их по крохам из разных источников. ZFS (Zettabyte File System) — файловая система, изначально созданная в Sun Microsystems для операционной системы Solaris. Основное достоинство ZFS в том что она обладает функционалом систем управления томами, позволяя использовать его с легкостью, без той громоздкости, которая присуща LVM. При этом она осуществляет полный контроль над физическими и логическими носителями. Зная, как именно расположены данные на дисках, ZFS способна обеспечить высокую скорость доступа к ним, контроль их целостности, а также минимизацию фрагментации данных. Это позволяет динамически выделять или освобождать дисковое пространство на одном или более носителях для логической файловой системы. Кроме того, имеет место переменный размер блока, что лучшим образом влияет на производительность, параллельность выполнения операций чтения-записи, а также 64-разрядный механизм использования контрольных сумм, сводящий к минимуму вероятность незаметного разрушения данных. Изначальной конструкцией ZFS является пул, который есть некий аналог RAID. Пул может состоять и из одного физического диска, однако возможности ZFS начинают реализовываться в полной мере когда пул содержит хотя бы 2, а лучше 3 диска и особенно, если среди них хотя бы один SSD. Кратко возможные варианты пулов выглядят так: Stripe Нет избыточности, как в RAID0. Режим создания пула по умолчанию. RAIDZ Минимум 3 диска. Один диск может быть потерян без сбоя пула. Один из дисков является избыточным и не предоставляет места хранения. RAIDZ2 Минимум 4 диска. Два диска могут быть потеряны без сбоя пула. Два диска являются избыточными и не обеспечивают места хранения. RAIDZ3 Минимум 5 дисков. Три диска могут быть потеряны без сбоя пула. Три из этих дисков являются избыточными и не обеспечивают объем. Mirror- Минимум 2 диска. Половина дисков может быть потеряна без сбоя пула. Хранение с половины дисков используется как избыточность и не обеспечивает места хранения. Обеспечивает максимальную производительность и гибкость при стоимости пространства для хранения. Для меня особый интерес представляет вариант Stripe, который используется по умолчанию (аналог RAID0, что на мой взгляд имеет смысл в настольной системе). В него можно объединить любое количество дисков разного размера и быстродействия. При этом суммарный объем пула не будет выравниваться на наименьшему диску, а составит просто арифметическую их сумму. Нагрузка же на пул будет распределяться так, чтобы наиболее востребованные данные оказывались на самом быстром из носителей. Более того, при наличии небольшого и быстрого SSD и большого и «медленного» HDD можно настроить так называемый кешируемый пул, имеющий все функции аппаратных гибридных дисков из SSD и HDD «в одном стакане». Которые, как известно, стоят почему-то больше суммы. Да при этом еще норовят нормально работать только в одной-единственной ОС, и ОС эта, как легко догадаться, не Linux. Вторая фича ZFS - это возможность нарезать пул на любое количество файловых систем (datasets), каждая со своими опциями монтирования. Эти файловые системы по умолчанию «безразмерны», то есть не требуют предварительного расчёта места под несущие их разделы. Но при желании объём некоторых из них можно ограничить, а для других, напротив, зарезервировать. То есть сделать недоступным для «захвата» иными файловыми системами. Причем делается это действительно также просто, как создание нового каталога в традиционной файловой системе. В отличие от BTRFS, где командой только создается subolume, а затем вы еще должны обеспечить его монтирование сами, в ZFS вы одной командой сразу создаете и точку монтирования и раздел файловой системы. Разумеется, для команды доступны и опции, с которыми вы можете задать другую точку монтирования либо обойтись без нее. Дополнительно (или сразу при создании) можно задать и другие параметры. Например, команда зарезервирует объем для файловой системы projectsФайловые системы с критически важными данными могут монтироваться с несколькими копиями контрольных сумм. В тех же из них, что предназначены для «хлама», от подсчёта контрольных сумм можно отказаться вовсе. Каталоги с хорошо сжимаемыми данными могут монтироваться с компрессией. Опцию atime можно устанавливать только для тех ветвей файловой иерархии, для которых действительно необходимо знание времени последнего доступа, всем же остальным придать свойство noaime. Наконец, для отдельных файловых систем можно отключить такие свойства, как exec, setuid, devices. И, разумеется, для файловых систем, изменение которых нежелательно, можно придать свойство readonly. Так же стоит упомянуть о просторе работы со снапшотами. Вам не надо думать где их располагать и как откатиться. ZFS все делает сама. Сделать снимок корня системы:
Результатом команды в такой форме было создание снапшота именно и только корня, без ветвей zant/home и всех прочих. Но можно создать и полную копию с помощью опции -r (то есть рекурсивно):
Просмотреть все имеющиеся снимки:
Сами снапшоты сохраняются в корней «родной» файловой системы в виде скрытых каталогов с именем .zfs, которые, однако, не будут присутствовать в выводе команды ls -a. Однако, при желании их можно сделать видимыми командой:
И самое интересное, в чем у ZFS в плане снапшотов имеется преимущество перед BTRFS, что для отката нужна всего лишь одна команда из под работающей системы без всякой перезагрузки: Это мгновенно откатит корень системы.В общем, оценить простоту и гибкость управления пулом ZFS и его datasets можно, только попробовав все это в деле. И только такое опробование способно убедить, что польза от перечисленных фич (к которым в качестве своего рода «бонусов» прилагаются и многие другие) с лихвой перекрывает возможные недостатки этой системы и сложности ее установки. А основных недостатков два: По сугубо юридически-бюрократическим причинам ZFS штатно не поддерживается ядром Linux из-за несовместимости лицензий, поэтому ее использование в Linux разрешено, но делать все нужно самостоятельно. Впрочем, дистрибутив Antergos на это забил и внедрил поддежку ZFS в свой инсталятор. Но конфигурирование ZFS при установке там сильно ограничено и многие параметры там просто не доступны. Требовательность к ресурсам, особенно если вы захотите включить опцию сжатия. Для комфортной работы лучше иметь не менее 8 GB оперативной памяти. Далее рассмотрим создание установочного образа Arch Linux с поддержкой ZFS. |
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
Часть 1. Создание установочного образа Arch Linux с поддержкой ZFS Итак, нам нужно получить ZFS на установочном носителе, чтобы Arch легко можно было установить из ISO Поскольку установочный образ Arch Linux по умолчанию не поддерживает ZFS как файловую систему, проще всего установить Arch на ZFS, создав свой установочный образ со всеми необходимыми пакетами. Хотя это может показаться сложным, инструмент Archiso содержит все необходимое для создания нового образа с нуля. Фактически Archiso - это то, что проект Arch Linux использует для создания официальных образов, который вы можете загрузить с сайта. Для использования Archiso необходима система Arch Linux для создания образа. Чтобы использовать Archiso, необходим пакет archiso. Выполняем на работающей системе Arch x86_64. Установить пакет
Чтобы избежать проблем с правами доступа к образам, рекомендуется выполнять все шаги от имени root.
Archiso поставляется с настраиваемым профилем, расположенным в каталоге /usr/share/archiso/configs/releng, скопируйте его содержимое в местоположение для настройки, которое создадим в домашнем каталоге
Добавить репозиторий ZFS Используя Archiso, вы можете указать, какие пакеты должны быть установлены в образе, и любые команды, которые должны быть запущены для установки образа. Самый простой способ добавить ZFS к образу - использовать репозиторий archzfs. Чтобы использовать репозиторий archzfs, он должен быть добавлен в список репозиториев в файле pacman.conf. Отредактируйте файл pacman.conf:
Над репозиториями [core], [extra] и [community], добавить [archzfs]. Добавить пакет ZFSДобавьте группу archzfs-linux в список пакетов в ~ /archlive/packages.x86_64, которые должны быть установлены, это может быть единственный пакет в списке. Впишем
Создание образа Мне нравится копировать окончательный каталог archlive в /tmp и создавать там мои образы, это сохраняет исходный каталог, в котором я внес изменения, чистым. Запустите build.sh, чтобы сгенерировать образ. Создайте каталог out в архиве, и окончательный образ будет там.
Использование образа Образ можно записать на USB-накопитель. Найдите нужный диск (флешку) с помощью lsblk. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdx 8:48 0 447.1G 0 disk └─sdxY 8:49 0 447.1G 0 part Когда правильный диск /dev/sdx будет найден, запишите образ на usb-диск с помощью dd. Это приведет к уничтожению всего диска. Убедитесь, что вы выбрали полный диск sdx, а не раздел sdxY.
По завершению, диск должен быть загрузочным и готовым к установке. Вы можете проверить это загрузившись с него и выполнив команду
Если все сделано правильно, то не должно быть никакого вывода от modprobe. Далее рассмотрим процесс установки Arch Linux на ZFS. |
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
Часть 2. Установка Arch Linux на ZFS В описываемом варианте установки имеется 2 HHD по 1 Tb каждый, которые будут подключены в пул в режиме Stripe без избыточности, как в RAID0 и SSD 120 Gb, у которого первый раздел 2Gb будет загрузочным, второй (все оставшееся) будет подключен как кэш пула. Выглядеть будет так Можно использовать и другие варианты разбивки, принципиально только чтобы был загрузочный раздел, и он должен быть не под ZFS.Загружаемся из установочного носителя, создание котрого описывалось в предыдущем разделе. Готовим SSD Выбираем "o" для создания новой таблицы MBRЗатем "n" для создания нового раздела Жмем Enter 3 раза, подтверждая следующие вопросы: "p" раздел будет первичным "1" раздел будет первым "2048" номер первого сектора Далее указываем размер "+2G" для конца раздела Жмем "n" для создания нового раздела Жмем 4 раза Enter оставляя все вопросы по умолчанию Жмем "w" для записи изменений на диск. Готовим HDD Выбираем "o" для создания новой таблицы MBRЖмем "w" для записи изменений на диск. Выбираем "o" для создания новой таблицы MBRЖмем "w" для записи изменений на диск. Теперь создаем и форматируем BTRFS subvolume для /boot
Получим имена идентификаторов дисков
Проверим наличие ZFS в системе, не должно быть никакого вывода от modprobe.
Создадим пул
Проверим успешность создания пула
По умолчанию для пула устанавливается точка монтирования /, но, поскольку под / будет монтироваться zarch/ROOT/default задаем пулу во избежание конфликтов никуда не монтироваться
По рекомендации установим следующие параметры для пула:
Там же рекомендуется, но я не пробовал, так что применяйте по своему усмотрению:
Создаем наборы данных и установим их точки монтирования. Опционально (если хотите монтировать отдельно):
Набор данных, который будет использоваться как «root» должен иметь свойство bootfs.
В качестве меры предосторожности и предотвращения последующих проблем размонтируем пул и все наборы данных. Пул готов, но не экспортирован. Это необходимый шаг для предотвращения проблем с импортом.
Импортируем пул в то место, где будет выполнена установка, /mnt.
Монтируем загрузочный раздел
В пуле создан важный файл кэша. Скопируем его в новую систему.
Проверим, что все успешно установлено
Cгенерируем fstab
Проверяем В fstab нужен только загрузочный раздел
Остальное удаляем Установим базовую систему (пакет wpa_supplicant нужен только если у вас wi-fi)
Настройка Ramdisk
Если для /usr используется отдельный набор данных, необходимо включить хук usr. Хук shutdown нужен для корректного отмонтирования /var при выключении.
Теперь можно выполнить chroot.
Настройка репозиториев ZFS Репозиторий archzfs должен быть указан первым, так что это предпочтительный сервер. Поместим его над всеми другими зеркалами.
Обновим зеркала и установим ZFS.
Поставим в автозапуск zfs службы
Создадим Ramdisk
Установим загрузчик
И получим следующий вывод об ошибке, что-то вроде:
Создадим symlink на разделы с идентификаторами
Повторяем Все должно пройти успешноТеперь отредактируем grub Нам нужно подкоррекитровать ZFS dataset. В секции 10_linux находим linux /boot/vmlinuz-linux root=ZFS=/ROOT/default rw quiet и меняемс: linux /boot/vmlinuz-linux root=ZFS=/ROOT/default rw quiet на: linux /boot/vmlinuz-linux zfs=zarch rw quiet Это должно быть в 3 местах и во всех трех изменяем. Выходим из установки.
Экспорт пула Завершив все необходимые действия для завершения установки, важно правильно экспортировать пул перед перезапуском. В противном случае пул не будет импортироваться при загрузке.
Теперь пул можно экспортировать.
|
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
Часть 2.1 Вариант установки с UEFI Зарезервировано... |
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
Эпилог Имеем Arch Linux, установленный на файловую систему ZFS Автоматическое создание снапшотов в ZFS По материалам статьи Brian Koopman ZFS: Automated Snapshots Снапшоты (Snapshots) позволяют копировать состояние вашего пула и/или его отдельных наборов данных. Это может быть полезно во многих отношениях. Например, если вы удаляете нужный файл, и у вас есть моментальный снимок времени, когда у вас есть этот файл, вы можете его восстановить. Снимки в силу архитектуры ZFS абсолютно не влияют на производительность, поэтому их рекомендуется делать часто. Перед настройкой автоматических снимков я сделал снапшоты вручную. Вы можете просмотреть свои снимки с помощью команды: Это отличное начало, но мы не хотим просто полагаться на создание снимков вручную. Было бы более полезно, если бы у нас была автоматизированная система для моментальных снимков. К счастью, такие инструменты уже существуют. Я собираюсь установить zfs-auto-snapshot из AUR, разработанный сообществом zfsonlinux.Эта автоматическая система, используемая для запуска включенного в нее скрипта zfs-auto-snapshot, использующая таймеры systemd. Если вы не знакомы с таймерами systemd, то достаточно знать, что они просто таймеры, которые управляют службой systemd. Вы можете просматривать активные таймеры с помощью list-timers systemctl. Вы заметите, что когда мы установили zfs-auto-snapshot, в /usr/lib/systemd/system был установлен набор файлов .service и .timer: zfs-auto-snapshot-daily.service zfs-auto-snapshot-daily.timer zfs-auto-snapshot-frequent.service zfs-auto-snapshot-frequent.timer zfs-auto-snapshot-hourly.service zfs-auto-snapshot-hourly.timer zfs-auto-snapshot-monthly.service zfs-auto-snapshot-monthly.timer zfs-auto-snapshot-weekly.service zfs-auto-snapshot-weekly.timer Каждая пара .service и .timer - это временной интервал для создания моментальных снимков. Давайте посмотрим на часовую пару. zfs-auto-snapshot-hourly.timer
zfs-auto-snapshot-hourly.service
Как вы можете видеть, файлы довольно просты. Persistent=true в файле .timer запустит задание, в том числе если оно было пропущено, скажем, компьютер был выключен или приостановлен. Файл .service запускает скрипт zfs-auto-snapshot, именуемый как ежечасный, и сохраняющий 24 моментальных снимка. // ссылается на все узлы хранения. Чтобы включить автоматические снимки, сначала нужно установить параметры автоматических снапшотов:
Для наборов данных, которые мы не хотим сохранять автоматически: где pool и dataset соответственно ваш пул и ваш набор данных.Затем нам нужно включить любой таймер(ы), который мы хотим, это запустит автоматическое резервное копирование на этом интервале: Вы всегда можете вручную запустить скрипт zfs-auto-snapshot, который будет создавать одну резервную копию. Просмотреть параметры запуска можно командой
Возможные проблемы 1. Для устранения выполняем от root:
2. Чтобы их скрыть нужно создать правило для udev (предполагается, что установлен пакет udisks2) GNU nano 2.8.2 Файл: /etc/udev/rules.d/10-local.rules
Обновить правила для udev: ПерезагрузитьИсточник Дополнительно: Проверить статус служб
upd - Если возникнет проблема с загрузчиком (он не на zfs) или выйдет из строя SSD, система не загрузится. В этом случае загружаемся из установочного носителя, находим и монтируем пул: Монтируем boot: Входим в систему: Устраняем проблему (к примеру, устанавливаем grub, как описано в установке)Затем обновимся: Переустановим zfs: Выходим Размонтируем устройства: Экспортируем пул: И перегружаемся ---Если у кого есть замечания/дополнения/уточнения, готов принять с благодарностью и надеюсь что совместными усилиями мы дополируем эту шпаргалку, чтобы она была полезна тем кого это заинтересует :) |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
s-ugra@ya.ru, молодец, хорошо все описал. Давно хотел опробовать данную файловую систему, но когда приступил к освоению азов ее применения, сдержали следующие факторы: - данная файловая система предназначена в основном для создания отказоустойчивого хранилища данных и рекомендуют размещать ОС на отдельном HDD (и лучше на SSD), а не в самом хранилище; - чтобы получить все преимущества данной fs, необходимо использовать как минимум два HDD; - максимальная надежность и производительность достигается при использовании HDD одной модели и производителя. То есть, если этому верить, то использовать на обычном/стандартном ноутбуке такую файловую систему нет смысла. Так ли это на практике, я не знаю, так как опыта ее использования не имею, а потому прошу высказаться на этот счет тех, кто имеет опыт ее использования. Проводить эксперимент для этих целей самому, не вижу смысла.
Ошибки не исчезают с опытом - они просто умнеют
|
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
vasek, в моем случае использован именно ноутбук :))) Модель Asus N76VZ. Он имеет с завода места для двух HDD и вместо CD-привода был установлен SSD на специальные салазки. Конечно, использование нескольких дисков желательно, т.к. нагрузка на файловую подсистему будет распределяться одновременно на несколько дисков/контроллеров. Ведь ZFS умная и сама все распределяет :) Но ничто не мешает поставить все это и на один физический диск, фишки/плюшки то ведь от этого никуда не денутся. --upd-- Для примера: Antergos при выборе установки на ZFS просто "откусывает" от первого диска 512 Мб загрузочный раздел, а все остальное - ZFS. |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
s-ugra@ya.ruМеня в этом смысле интересует производительность. Как то попался на глаза один топик, в котором ТС жаловался на постоянную работу и дерганья HDD и падение производительности. Правда верить этому особо и не стоит, но узнать истину хотелось бы.
Ошибки не исчезают с опытом - они просто умнеют
|
s-ugra@ya.ru |
|
Темы:
11
Сообщения:
763
Участник с: 15 ноября 2016
|
vasekЯ могу сравнивать только с вариантом, когда на этом буке стоял Арч на SSD под BTRFS, а хомяк был на HDD. Разница в скорости обращения к дискам визуально наблюдается, но очень небольшая. В частности загрузка раза в 3 стала дольше В целом в работе системы харды иногда активируются без видимой причины, а иногда наоборот - явно д.б. обращение к дискам, но они молчат и все происходит мгновенно - догадываюсь, что отрабатывает SSD, но это и неудивительно, ведь фс сама решает какие файлы наиболее часто используются и перекидывает их на кэш. Визуально замедлений не ощущается, работа комфортная. ИМХО нужно какое-то время чтобы все обкаталось, пока только вторая неделя полета, но сказать что по скорости стало хуже - не могу, скорее лучше :) Скорость загрузки при старте для меня не критична.--upd-- Перед этим пробовал на нем ZFS под Antergos - вот тот подтупливал заметнее. |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
s-ugra@ya.ruДля меня тоже. Спасибо за быстрые и конкретные вопросы. Для себя решил, что буду ставить на новый ноут, к которому присматриваюсь и хочу, чтобы было 2 HDD, один из которых SSD.
Ошибки не исчезают с опытом - они просто умнеют
|