Установка Arch Linux на файловую систему ZFS [upd - октябрь 2017]

В блоге использованы материалы:
Алексей Федорчук Что ему Гекуба? 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 вы одной командой
zfs cteate zarch/home/projects
сразу создаете и точку монтирования и раздел файловой системы. Разумеется, для команды доступны и опции, с которыми вы можете задать другую точку монтирования либо обойтись без нее. Дополнительно (или сразу при создании) можно задать и другие параметры. Например, команда
zfs set reservation=5G zarch/home/projects
зарезервирует объем для файловой системы projects

Файловые системы с критически важными данными могут монтироваться с несколькими копиями контрольных сумм. В тех же из них, что предназначены для «хлама», от подсчёта контрольных сумм можно отказаться вовсе. Каталоги с хорошо сжимаемыми данными могут монтироваться с компрессией. Опцию atime можно устанавливать только для тех ветвей файловой иерархии, для которых действительно необходимо знание времени последнего доступа, всем же остальным придать свойство noaime. Наконец, для отдельных файловых систем можно отключить такие свойства, как exec, setuid, devices. И, разумеется, для файловых систем, изменение которых нежелательно, можно придать свойство readonly.

Так же стоит упомянуть о просторе работы со снапшотами. Вам не надо думать где их располагать и как откатиться. ZFS все делает сама.

Сделать снимок корня системы:
zfs snapshot zant@ваше_навание_снимка

Результатом команды в такой форме было создание снапшота именно и только корня, без ветвей zant/home и всех прочих. Но можно создать и полную копию с помощью опции -r (то есть рекурсивно):
zfs snapshot -r zant@ваше_навание_снимка

Просмотреть все имеющиеся снимки:
zfs list -t snapshot

Сами снапшоты сохраняются в корней «родной» файловой системы в виде скрытых каталогов с именем .zfs, которые, однако, не будут присутствовать в выводе команды ls -a. Однако, при желании их можно сделать видимыми командой:
zfs set snapdir=visible zant

И самое интересное, в чем у ZFS в плане снапшотов имеется преимущество перед BTRFS, что для отката нужна всего лишь одна команда из под работающей системы без всякой перезагрузки:
zfs rollback zant@ваше_навание_снимка
Это мгновенно откатит корень системы.

В общем, оценить простоту и гибкость управления пулом ZFS и его datasets можно, только попробовав все это в деле. И только такое опробование способно убедить, что польза от перечисленных фич (к которым в качестве своего рода «бонусов» прилагаются и многие другие) с лихвой перекрывает возможные недостатки этой системы и сложности ее установки.
А основных недостатков два:
По сугубо юридически-бюрократическим причинам ZFS штатно не поддерживается ядром Linux из-за несовместимости лицензий, поэтому ее использование в Linux разрешено, но делать все нужно самостоятельно. Впрочем, дистрибутив Antergos на это забил и внедрил поддежку ZFS в свой инсталятор. Но конфигурирование ZFS при установке там сильно ограничено и многие параметры там просто не доступны.
Требовательность к ресурсам, особенно если вы захотите включить опцию сжатия. Для комфортной работы лучше иметь не менее 8 GB оперативной памяти.

Далее рассмотрим создание установочного образа Arch Linux с поддержкой ZFS.
Часть 1. Создание установочного образа Arch Linux с поддержкой ZFS

Итак, нам нужно получить ZFS на установочном носителе, чтобы Arch легко можно было установить из ISO

Поскольку установочный образ Arch Linux по умолчанию не поддерживает ZFS как файловую систему, проще всего установить Arch на ZFS, создав свой установочный образ со всеми необходимыми пакетами. Хотя это может показаться сложным, инструмент Archiso содержит все необходимое для создания нового образа с нуля. Фактически Archiso - это то, что проект Arch Linux использует для создания официальных образов, который вы можете загрузить с сайта. Для использования Archiso необходима система Arch Linux для создания образа.
Чтобы использовать Archiso, необходим пакет archiso. Выполняем на работающей системе Arch x86_64.

Установить пакет
sudo pacman -S archiso

Чтобы избежать проблем с правами доступа к образам, рекомендуется выполнять все шаги от имени root.
sudo -i

Archiso поставляется с настраиваемым профилем, расположенным в каталоге /usr/share/archiso/configs/releng, скопируйте его содержимое в местоположение для настройки, которое создадим в домашнем каталоге
mkdir ~/archlive
cp -r /usr/share/archiso/configs/releng/* ~/archlive

Добавить репозиторий ZFS
Используя Archiso, вы можете указать, какие пакеты должны быть установлены в образе, и любые команды, которые должны быть запущены для установки образа. Самый простой способ добавить ZFS к образу - использовать репозиторий archzfs. Чтобы использовать репозиторий archzfs, он должен быть добавлен в список репозиториев в файле pacman.conf.

Отредактируйте файл pacman.conf:
nano ~/archlive/pacman.conf

Над репозиториями [core], [extra] и [community], добавить [archzfs].
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# REPOSITORIES

[archzfs]
SigLevel = Never
Server = http://archzfs.com/$repo/x86_64

# Другие репозитории...
Добавить пакет ZFS

Добавьте группу archzfs-linux в список пакетов в ~ /archlive/packages.x86_64, которые должны быть установлены, это может быть единственный пакет в списке.
nano ~/archlive/packages.x86_64
Впишем
#
# ~/archlive/packages.x86_64
#

archzfs-linux

Другие пакеты...

Создание образа
Мне нравится копировать окончательный каталог archlive в /tmp и создавать там мои образы, это сохраняет исходный каталог, в котором я внес изменения, чистым. Запустите build.sh, чтобы сгенерировать образ.
Создайте каталог out в архиве, и окончательный образ будет там.
cp -r archlive/ /tmp
cd /tmp/archlive/
mkdir out
./build.sh -v

Использование образа
Образ можно записать на USB-накопитель.

Найдите нужный диск (флешку) с помощью lsblk.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdx 8:48 0 447.1G 0 disk
└─sdxY 8:49 0 447.1G 0 part
Когда правильный диск /dev/sdx будет найден, запишите образ на usb-диск с помощью dd. Это приведет к уничтожению всего диска. Убедитесь, что вы выбрали полный диск sdx, а не раздел sdxY.
dd bs=4M if=archlinux-2016.01.29-dual.iso  of=/dev/sdx status=progress && sync

По завершению, диск должен быть загрузочным и готовым к установке.
Вы можете проверить это загрузившись с него и выполнив команду
modprobe zfs

Если все сделано правильно, то не должно быть никакого вывода от modprobe.

Далее рассмотрим процесс установки Arch Linux на ZFS.
Часть 2. Установка Arch Linux на ZFS

В описываемом варианте установки имеется 2 HHD по 1 Tb каждый, которые будут подключены в пул в режиме Stripe без избыточности, как в RAID0 и SSD 120 Gb, у которого первый раздел 2Gb будет загрузочным, второй (все оставшееся) будет подключен как кэш пула.
Выглядеть будет так
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931,5G  0 disk
├─sda1   8:1    0 931,5G  0 part
└─sda9   8:9    0     8M  0 part
sdb      8:16   0 931,5G  0 disk
├─sdb1   8:17   0 931,5G  0 part
└─sdb9   8:25   0     8M  0 part
sdc      8:32   0 111,8G  0 disk
├─sdc1   8:33   0     2G  0 part /boot
└─sdc2   8:34   0 109,8G  0 part
Можно использовать и другие варианты разбивки, принципиально только чтобы был загрузочный раздел, и он должен быть не под ZFS.

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

Готовим SSD
fdisk /dev/sdc
Выбираем "o" для создания новой таблицы MBR
Затем "n" для создания нового раздела
Жмем Enter 3 раза, подтверждая следующие вопросы:
"p" раздел будет первичным
"1" раздел будет первым
"2048" номер первого сектора
Далее указываем размер
"+2G" для конца раздела
Жмем "n" для создания нового раздела
Жмем 4 раза Enter оставляя все вопросы по умолчанию
Жмем "w" для записи изменений на диск.

Готовим HDD
fdisk /dev/sda
Выбираем "o" для создания новой таблицы MBR
Жмем "w" для записи изменений на диск.
fdisk /dev/sdb
Выбираем "o" для создания новой таблицы MBR
Жмем "w" для записи изменений на диск.

Теперь создаем и форматируем BTRFS subvolume для /boot
mkfs.btrfs -f /dev/sdc1
mount /dev/sdc1 /mnt
btrfs subvolume create /mnt/boot
umount /mnt

Получим имена идентификаторов дисков
ls /dev/disk/by-id/

ata-Corsair_Force_LS_SSD_1410815400009947039b
ata-Corsair_Force_LS_SSD_1410815400009947039b-part1
ata-Corsair_Force_LS_SSD_1410815400009947039b-part2
ata-ST1000LM024_HN-M101MBB_S2TTJ9AC612857
ata-ST1000LM024_HN-M101MBB_S2TTJ9DCA07166

Проверим наличие ZFS в системе, не должно быть никакого вывода от modprobe.
modprobe zfs

Создадим пул
zpool create -f -o ashift=12 zarch ata-ST1000LM024_HN-M101MBB_S2TTJ9AC612857 ata-ST1000LM024_HN-M101MBB_S2TTJ9DCA07166 cache ata-Corsair_Force_LS_SSD_1410815400009947039b-part2

Проверим успешность создания пула
zpool status

pool: zarch
 state: ONLINE
  scan: none requested
config:

	NAME                                                   STATE     READ WRITE CKSUM
	zarch                                                  ONLINE       0     0     0
	  ata-ST1000LM024_HN-M101MBB_S2TTJ9AC612857            ONLINE       0     0     0
	  ata-ST1000LM024_HN-M101MBB_S2TTJ9DCA07166            ONLINE       0     0     0
	cache
	  ata-Corsair_Force_LS_SSD_1410815400009947039b-part2  ONLINE       0     0     0

errors: No known data errors

По умолчанию для пула устанавливается точка монтирования /, но, поскольку под / будет монтироваться zarch/ROOT/default задаем пулу во избежание конфликтов никуда не монтироваться
zfs set mountpoint=none zarch

По рекомендации установим следующие параметры для пула:
zfs set compression=lz4 zarch
zfs set atime=off zarch
zfs set relatime=on zarch

Там же рекомендуется, но я не пробовал, так что применяйте по своему усмотрению:
zfs set xattr=sa zarch
zfs set recordsize=128K zarch

Создаем наборы данных и установим их точки монтирования.
zfs create -o mountpoint=none zarch/ROOT
zfs create -o mountpoint=/ zarch/ROOT/default
zfs create -o mountpoint=/home zarch/home
Опционально (если хотите монтировать отдельно):
zfs create -o setuid=off -o devices=off -o sync=disabled -o mountpoint=/tmp zarch/tmp
zfs create -o xattr=sa -o mountpoint=/var zarch/var
zfs create -o mountpoint=/usr zarch/usr

Набор данных, который будет использоваться как «root» должен иметь свойство bootfs.
zpool set bootfs=zarch/ROOT/default zarch

В качестве меры предосторожности и предотвращения последующих проблем размонтируем пул и все наборы данных.
zfs umount -a
Пул готов, но не экспортирован. Это необходимый шаг для предотвращения проблем с импортом.
zpool export zarch

Импортируем пул в то место, где будет выполнена установка, /mnt.
zpool import -d /dev/disk/by-id -R /mnt zarch

Монтируем загрузочный раздел
mkdir /mnt/boot
mount -o compress=lzo,subvol=boot,ssd /dev/sdc1 /mnt/boot

В пуле создан важный файл кэша. Скопируем его в новую систему.
mkdir /mnt/etc
mkdir /mnt/etc/zfs
cp /etc/zfs/zpool.cache /mnt/etc/zfs/zpool.cache

Проверим, что все успешно установлено
zfs mount
zarch/ROOT/default              /mnt
zarch/home                      /mnt/home
zarch/tmp                       /mnt/tmp
zarch/usr                       /mnt/usr
zarch/var                       /mnt/var

Cгенерируем fstab
genfstab -U -p /mnt >> /mnt/etc/fstab

Проверяем
nano /mnt/etc/fstab
В fstab нужен только загрузочный раздел
# /dev/sdс1
UUID=466f96c7-d74b-4309-8ee4-97e5dc6d7229       /boot           btrfs           rw,relatime,compress=lzo,ssd,space_cache,subvol=boot  0 0

Остальное удаляем

Установим базовую систему (пакет wpa_supplicant нужен только если у вас wi-fi)
pacstrap -i /mnt base base-devel grub mc wpa_supplicant

Настройка Ramdisk
nano /mnt/etc/mkinitcpio.conf

Если для /usr используется отдельный набор данных, необходимо включить хук usr. Хук shutdown нужен для корректного отмонтирования /var при выключении.
# ...
HOOKS="base udev autodetect modconf block keyboard zfs usr filesystems shutdown"
# ...

Теперь можно выполнить chroot.
arch-chroot /mnt /bin/bash

Настройка репозиториев ZFS

Репозиторий archzfs должен быть указан первым, так что это предпочтительный сервер. Поместим его над всеми другими зеркалами.
nano /etc/pacman.conf
# REPOSITORIES
[archzfs]
SigLevel = Never
Server = http://archzfs.com/$repo/x86_64

Обновим зеркала и установим ZFS.
pacman -Syyu
pacman -S  zfs-linux-git

Поставим в автозапуск zfs службы
systemctl enable zfs.target
systemctl enable zfs-import-cache.service
systemctl enable zfs-mount.service

Создадим Ramdisk
mkinitcpio -p linux

Установим загрузчик
grub-install --target=i386-pc /dev/sdc
grub-mkconfig -o /boot/grub/grub.cfg

И получим следующий вывод об ошибке, что-то вроде:
/dev/sdc
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `/dev/ata-ST1000LM024_HN-M101MBB_S2TTJ9AC612857'.

Создадим symlink на разделы с идентификаторами
ln -s /dev/sda /dev/ata-ST1000LM024_HN-M101MBB_S2TTJ9AC612857
ln -s /dev/sdb /dev/ata-ST1000LM024_HN-M101MBB_S2TTJ9DCA07166
ln -s /dev/sdc2 /dev/ata-Corsair_Force_LS_SSD_1410815400009947039b-part2

Повторяем
grub-mkconfig -o /boot/grub/grub.cfg
Все должно пройти успешно

Теперь отредактируем grub
nano /boot/grub/grub.cfg
Нам нужно подкоррекитровать 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 местах и во всех трех изменяем.

Выходим из установки.
exit

Экспорт пула

Завершив все необходимые действия для завершения установки, важно правильно экспортировать пул перед перезапуском. В противном случае пул не будет импортироваться при загрузке.
umount /mnt/boot
zfs umount -a

Теперь пул можно экспортировать.
zpool export zarch

reboot
Часть 2.1 Вариант установки с UEFI
Зарезервировано...
Эпилог

Имеем Arch Linux, установленный на файловую систему ZFS


Автоматическое создание снапшотов в ZFS
По материалам статьи Brian Koopman ZFS: Automated Snapshots

Снапшоты (Snapshots) позволяют копировать состояние вашего пула и/или его отдельных наборов данных. Это может быть полезно во многих отношениях. Например, если вы удаляете нужный файл, и у вас есть моментальный снимок времени, когда у вас есть этот файл, вы можете его восстановить. Снимки в силу архитектуры ZFS абсолютно не влияют на производительность, поэтому их рекомендуется делать часто. Перед настройкой автоматических снимков я сделал снапшоты вручную. Вы можете просмотреть свои снимки с помощью команды:
zfs list -t snapshot
zarch/ROOT/default@171030                585M      -  10,0G  -
zarch/home@171030                       82,5M      -   693M  -
Это отличное начало, но мы не хотим просто полагаться на создание снимков вручную. Было бы более полезно, если бы у нас была автоматизированная система для моментальных снимков. К счастью, такие инструменты уже существуют. Я собираюсь установить 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
# See systemd.timers and systemd.time manpages for details
[Unit]
Description=ZFS hourly snapshot timer

[Timer]
OnCalendar=hourly
Persistent=true

[Install]
WantedBy=timers.target

zfs-auto-snapshot-hourly.service
[Unit]
Description=ZFS hourly snapshot service

[Service]
ExecStart=/usr/bin/zfs-auto-snapshot --prefix=znap --quiet --syslog --label=hourly --keep=24 //

Как вы можете видеть, файлы довольно просты. Persistent=true в файле .timer запустит задание, в том числе если оно было пропущено, скажем, компьютер был выключен или приостановлен. Файл .service запускает скрипт zfs-auto-snapshot, именуемый как ежечасный, и сохраняющий 24 моментальных снимка. // ссылается на все узлы хранения.

Чтобы включить автоматические снимки, сначала нужно установить параметры автоматических снапшотов:
sudo -i
zfs set com.sun:auto-snapshot=true pool/dataset

Для наборов данных, которые мы не хотим сохранять автоматически:
zfs set com.sun:auto-snapshot=false pool/dataset
где pool и dataset соответственно ваш пул и ваш набор данных.

Затем нам нужно включить любой таймер(ы), который мы хотим, это запустит автоматическое резервное копирование на этом интервале:
sudo systemctl enable zfs-auto-snapshot-daily.timer
Вы всегда можете вручную запустить скрипт zfs-auto-snapshot, который будет создавать одну резервную копию. Просмотреть параметры запуска можно командой
zfs-auto-snapshot --help

Возможные проблемы

1. Бывает что после установки и первой перезагрузки мы при загрузке системы видим что пул пытается монтироваться в /zarch и при этом будет выводиться соответствующее сообщение об ошибке upd - устраняется при установке
Для устранения выполняем от root:
zfs umount /zarch
zfs set mountpoint=none zarch

2. Устройства пула будут отображаться в левой панели pcmanfm. upd - в данное время не наблюдается
Чтобы их скрыть нужно создать правило для udev (предполагается, что установлен пакет udisks2)
sudo nano /etc/udev/rules.d/10-local.rules
GNU nano 2.8.2 Файл: /etc/udev/rules.d/10-local.rules
KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"
KERNEL=="sda9", ENV{UDISKS_IGNORE}="1"
KERNEL=="sdb1", ENV{UDISKS_IGNORE}="1"
KERNEL=="sdb9", ENV{UDISKS_IGNORE}="1"
KERNEL=="sdc2", ENV{UDISKS_IGNORE}="1"

Обновить правила для udev:
sudo udevadm trigger
Перезагрузить
Источник

Дополнительно:
Проверить статус служб
sudo systemctl status zfs.target
sudo systemctl status zfs-import-cache.service
sudo systemctl status zfs-mount.service

upd - Если возникнет проблема с загрузчиком (он не на zfs) или выйдет из строя SSD, система не загрузится. В этом случае загружаемся из установочного носителя, находим и монтируем пул:
modprobe zfs
zpool import -R /mnt -f zarch
Монтируем boot:
mount -o compress=lzo,subvol=boot,ssd /dev/sdc1 /mnt/boot
Входим в систему:
arch-chroot /mnt
Устраняем проблему (к примеру, устанавливаем grub, как описано в установке)
Затем обновимся:
pacman -Syu
Переустановим zfs:
pacman -S  zfs-linux-git
mkinitcpio -p linux
Выходим
exit
Размонтируем устройства:
umount /mnt/boot
zfs umount -a
Экспортируем пул:
zpool export zarch
И перегружаемся
reboot
---
Если у кого есть замечания/дополнения/уточнения, готов принять с благодарностью и надеюсь что совместными усилиями мы дополируем эту шпаргалку, чтобы она была полезна тем кого это заинтересует :)
s-ugra@ya.ru, молодец, хорошо все описал.
Давно хотел опробовать данную файловую систему, но когда приступил к освоению азов ее применения, сдержали следующие факторы:
- данная файловая система предназначена в основном для создания отказоустойчивого хранилища данных и рекомендуют размещать ОС на отдельном HDD (и лучше на SSD), а не в самом хранилище;
- чтобы получить все преимущества данной fs, необходимо использовать как минимум два HDD;
- максимальная надежность и производительность достигается при использовании HDD одной модели и производителя.
То есть, если этому верить, то использовать на обычном/стандартном ноутбуке такую файловую систему нет смысла. Так ли это на практике, я не знаю, так как опыта ее использования не имею, а потому прошу высказаться на этот счет тех, кто имеет опыт ее использования. Проводить эксперимент для этих целей самому, не вижу смысла.
Ошибки не исчезают с опытом - они просто умнеют
vasek, в моем случае использован именно ноутбук :))) Модель Asus N76VZ. Он имеет с завода места для двух HDD и вместо CD-привода был установлен SSD на специальные салазки. Конечно, использование нескольких дисков желательно, т.к. нагрузка на файловую подсистему будет распределяться одновременно на несколько дисков/контроллеров. Ведь ZFS умная и сама все распределяет :) Но ничто не мешает поставить все это и на один физический диск, фишки/плюшки то ведь от этого никуда не денутся.
--upd--
Для примера: Antergos при выборе установки на ZFS просто "откусывает" от первого диска 512 Мб загрузочный раздел, а все остальное - ZFS.
s-ugra@ya.ru
Но ничто не мешает поставить все это и на один физический диск, фишки/плюшки то ведь от этого никуда не денутся.
Меня в этом смысле интересует производительность. Как то попался на глаза один топик, в котором ТС жаловался на постоянную работу и дерганья HDD и падение производительности. Правда верить этому особо и не стоит, но узнать истину хотелось бы.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Меня в этом смысле интересует производительность
Я могу сравнивать только с вариантом, когда на этом буке стоял Арч на SSD под BTRFS, а хомяк был на HDD. Разница в скорости обращения к дискам визуально наблюдается, но очень небольшая. В частности загрузка раза в 3 стала дольше
Startup finished in 9.722s (kernel) + 14.444s (userspace) = 24.167s
         22.305s man-db.service
          7.520s systemd-udev-settle.service
          5.684s systemd-journald.service
          4.036s logrotate.service
          2.123s ldconfig.service
          1.858s systemd-udevd.service
          1.220s systemd-tmpfiles-setup-dev.service
           974ms NetworkManager.service
           805ms systemd-logind.service
           622ms systemd-journal-catalog-update.service
           411ms zfs-import-cache.service
           395ms systemd-backlight@leds:asus::kbd_backlight.service
           371ms polkit.service
           362ms systemd-binfmt.service
           362ms systemd-sysctl.service
           351ms systemd-tmpfiles-setup.service
           337ms dev-hugepages.mount
           281ms systemd-tmpfiles-clean.service
           272ms dev-mqueue.mount
           259ms user@1000.service
           245ms systemd-udev-trigger.service
           224ms wpa_supplicant.service
В целом в работе системы харды иногда активируются без видимой причины, а иногда наоборот - явно д.б. обращение к дискам, но они молчат и все происходит мгновенно - догадываюсь, что отрабатывает SSD, но это и неудивительно, ведь фс сама решает какие файлы наиболее часто используются и перекидывает их на кэш. Визуально замедлений не ощущается, работа комфортная. ИМХО нужно какое-то время чтобы все обкаталось, пока только вторая неделя полета, но сказать что по скорости стало хуже - не могу, скорее лучше :) Скорость загрузки при старте для меня не критична.
--upd--
Перед этим пробовал на нем ZFS под Antergos - вот тот подтупливал заметнее.
s-ugra@ya.ru
Скорость загрузки при старте для меня не критична.
Для меня тоже. Спасибо за быстрые и конкретные вопросы. Для себя решил, что буду ставить на новый ноут, к которому присматриваюсь и хочу, чтобы было 2 HDD, один из которых SSD.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.