LINUX.ORG.RU

ZFS дома на один диск для share/media

 , , , ,


1

2

zfs на несколько физических дисков в связке или на один надежный HDD (скажем, WD-Red-Pro) + UDIMM-ECC (+M/B +CPU с поддержкой ECC) вполне самодостаточно должно быть для сохранности файлов?

Идея такая: GPT -> 1LUKS_раздел -> 1Блок_zfs

И пользуясь случаем, нет ли у кого-нибудь руководства, лога, gist, примера настройки zfs+ecc на одном устройстве?

★★★★★

Ответ на: комментарий от sinaps

Спасибо большое за ссылки. И все таки я добрался до ZFS) но на Lin. Я реально не ожидал что OpenZFS на ubuntu+systemd так легко ставится и управляется, пока что впечатления положительные. Спросить хочу, все ли я правильно делаю?

  • HDD -> GPT -> Раздел_1 -> (LUKS ->) zpool/zfs

Достаточно ли: zpool create -d -o ashift=12 media /dev/sdLN

или все же желательно после zpool create хоть какой

  • сделать zfs create -V $SIZE $ZPOOL/${zfs_part} ?

и продолжая… по сути все, мне даже default в zfs get all $ZPOOL нравится, ashift=12 даже за меня задали, copression=off, copies=1. Единственное еще вот что

So, what benefits would ZFS give without redundancy?

Automatic metadata repair on read failure, (all metadata has at least 2 copies, even without redundancy)

мне касательно одного раздела и одного диска понять бы

Доступныe значения: 1, 2 или 3. Значение по умолчанию: 1. Эти копии являются дополнительными по отношению к избыточности уровня пула, например, при зеркальной настройке или настройке RAID-Z.

т.е. при copies=1 без mdadm/raidX на одном HDD и на одном разделе GPT, копия все таки создается, или что бы создавалась =2 надо?

NK ★★★★★
() автор топика
Ответ на: комментарий от iZEN

а надежность, я про snapshot, тоже можно без snapshot спокойно использовать?)

И это, судя по форуму, вы наверняка знаете (и наверняка опыт есть): созданное zpool и без раздела zfs create - разницы ощутимой нет, если так использовать без необходимости в 1+ раздел?

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от NK

используй btrfs в raid-1 на двух разных дисках. на обоих создавай luks разделы с одинаковым паролем, а на этих шифрованных разделах btrfs raid-1 (ага). zfs - это не родное. а с btrfs любой livecd работать может

rtxtxtrx
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

т.е…. в плане, расскажите за btrfs, я тут уже поразбирался что такое /etc/zfs/zpool.cache и как-то не впечатлен, скорей опечален

Я вижу что с btrfs вроде проще все https://lwn.net/Articles/577961/

но хорошо, опустим mapper/luks, делаю партиции для raid1_btrfs:

  • GPT -> раздел1 + раздел2
  • форматирую 1 и 2 в btrfs
  • объединяю/сливаю/зеркалю в btrfs_raid1 из самого btrfs

и теперь как, перенеся физически диск в другое устройство, ПК, я могу просто раздел1 подключить и оттуда данные увидеть в обычном LiveCD/USB?

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от NK
# Форматируем раздел. Systemd умеет одним паролем открывать несколько устройств, так что имеет смсыл указать существующий
$ sudo cryptsetup -q -i 15000 luksFormat /dev/nvme1n1p1

# Откроем шифрованный контейнер
$ cryptsetup open /dev/nvme1n1p1 root_1

# Примонтируем саму btrfs (у меня @ и @home)
$ sudo mount --mkdir /dev/mapper/root /mnt/btr_pool

# А теперь добавим устройство в пул
$ sudo btrfs dev add /dev/mapper/root_1 /mnt/btr_pool

# Убедимся, что у нас все правильно
$ sudo btrfs filesystem show
Label: none  uuid: 83ba9a0a-7858-48f0-b679-618954059b1a
        Total devices 2 FS bytes used 141.12GiB
        devid    1 size 464.98GiB used 148.02GiB path /dev/mapper/root
        devid    2 size 464.98GiB used 0.00B path /dev/mapper/root_1
        

# Конвертируем файловую систему в RAID-1
$ sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/btr_pool
Done, had to relocate 146 out of 146 chunks

# Добавляем автодефргагментацию в опции монтирования
# С помощью Btrfs Assistant можно настроить дефрагментацию каждую неделю
$ sudo sed -ri 's/(,subvol)/,autodefrag\1/' /etc/fstab

# Сгенерируем конфиг для systemd boot
# В нем мы перечисляем все устройства в raid
$ sudo su -c 'devices=(nvme0n1p1 nvme1n1p1); declare -a args=(); for i in "${!devices[@]}"; do uuid=$(blkid -s UUID -o value /dev/"${devices[$i]}"); args+=("rd.luks.name=$uuid=root$([[ i -gt 0  ]] && echo _$i)"); done; args+=("rd.luks.options=discard" "root=/dev/mapper/root" "rootflags=subvol=@" "rw"); sed -ri "s|^(options).*|\1 ${args[*]}|" /boot/loader/entries/arch.conf'

$ cat /boot/loader/entries/arch.conf
title Arch Linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
linux /vmlinuz-linux
options rd.luks.name=ac1c99a1-e1c5-40df-bfa3-27daafc00588=root rd.luks.name=64942407-65ad-4bc1-a703-55cbe2818dc0=root_1 rd.luks.options=discard root=/dev/mapper/root rootflags=subvol=@ rw

# Нужно поправить хуки inicpio. rd.luks.name не работает без хука systemd
$ sudo -e etc/mkinitcpio.conf
HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)

# Генерируем образ inicpio
$ sudo mkinitcpio -P
rtxtxtrx
()
Ответ на: комментарий от NK

предполагаю некоторую путаницу в терминологии. В ZFS устроено так:

  • Есть zpool - это, собственно, множество физических устройств (дисков/разделов), так или иначе (stripe/mirror/raidz) объединенных в одну сущность, прозрачно предоставляющую типа непрерывный объем хранилища.

  • Внутри zpool-а можно (и нужно) создавать dataset-ы (просто zfs create poolname/datasetname, без V) - это сущности для структурирования и изоляции чего там у нас будет лежать в пуле. Датасеты монтируются в каталоги, на них распространяются свои настройки компрессии/дедупликации/чертей рогатых, с них делаются снапшоты - короче, это и есть полноценный «раздел файловой системы zfs» в приближенном к классическому понимании. Датасет «резиновый», свободный объем каждого датасета в общем ограничен свободным объемом пула, на котором он выделен, хотя можно настроить квоты по датасетам/пользователям. Для каждого пула по умолчанию создается датасет, который можно использовать как угодно, не создавая новые.

  • Внутри zpool-а можно создавать собственно разделы - zvol. Размеры разделов фиксируются при создании. В отличие от датасетов разделы - блочные устройства, их можно, например, целиком отдать виртуалке или создать там любую другую файловую систему. Использовать их стоит только тогда, когда нужно именно блочное устройство, а не любое нечто, которое можно смонтировать в каталог и так юзать.

для LUKS таки понадобятся zvol-ы. Если что, zfs умеет в шифрования сама по себе.

arkhnchul ★★
()
Последнее исправление: arkhnchul (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

интересно и спасибо, и вот, а /dev/mapper/root как вы получили? Точнее, я понимаю что это любой раздел с btrfs, но были ли какие-то особые ключи перед форматом/созданием?

И еще вот, потыкав zfs, очень понравился лог по записи и отчет по ошибках как все просинхронилось или записалось, у btrfs есть что-то на примете (из опыта)?

NK ★★★★★
() автор топика
Ответ на: комментарий от arkhnchul

да, спасибо, но вот, zpool.cache - это что такое, допустим у меня зоопарк на диске, вся инфа по ФС в /etc/zfs/* что ли хранится, и как быть если скажем я одну операционку чисто под игры держу, а в другой все остальное? Здесь не в том как использую дело, под игры или нет, допустим даже

  • дистр rolling и stable на одной машине, мне как-то связать диск с zfs между-между можно, что бы общий доступ был?
  • или еще случай, допустим диск где была ОС вышел из строя, это корень и там было /etc/zfs/zpool.cache, а диск с zfs функицонирует, как мне заново все подмонтировать в свеже установленной системе, когда ничего из /etc/zfs/* не сохранилось?
NK ★★★★★
() автор топика
Ответ на: комментарий от NK

/dev/mapper/root - это изначальный единственный LUKS-раздел, я создал второй и добавил его в зеркало.

Точнее, я понимаю что это любой раздел с btrfs, но были ли какие-то особые ключи перед форматом/созданием?

Там нет особых ключей при создании, использование которых бы что-то ускорило. При монтировании нужно указывать -o compress=zstd:3. Это оптимальный уровень сжатия, другие использовать не имеет смысла (при zstd:8 вместо 9-кратного сжатия текста будет 11-кратное, только в десктопе это даст экономию пару гигабайт при обычном исп-ии)

А что эти логи дадут?

Использовать zfs мешает вот что:

  • ее нет в ядре, а значит, накатив на флешку арч, загрузившись с нее мы не увидим там zfs (zfs-utils нужно ставить каждый раз либо собирать свой образ)
  • по этой же причине ядропейсателям срать на то что их коммит сломает твою zfs
  • она настолько для марсиан, что ей не нужен /etc/fstab

Из плюсов:

  • есть свое шифрование
rtxtxtrx
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от NK

нестабильность Btrfs преувеличена…?

Кем? Местными шизами, которые считают, что людей на Луне не бывало? У меня она на серваке 4 года не ломалась, а дома - были ошибки чексум блоков после резкого выключения элЕктричества, но они лечатся банально

rtxtxtrx
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

пока эксперементы и вопрос по btrfs:

  • запросить состояние, состояние подтомов, btrfs filesystem show
  • или что-то вида
$ btrfs filesystem df /media/drive

Data, single: total=846.00GiB, used=845.61GiB
System, DUP: total=8.00MiB, used=112.00KiB
Metadata, DUP: total=2.00GiB, used=904.30MiB
GlobalReserve, single: total=512.00MiB, used=0.00B

можно только когда устройство с btrfs смонтировано?

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от iZEN

Информацию с ZFS может прочесть любая операционная система, с Btrfs — вопрос

так у меня и не получилось таки как раз на ubuntu-lts, после manjaro-rolling, то что я там записал, загрузка самой ubuntu просто стопорилась на zfs, пока я не грохнул zpool.cache в ubuntu

NK ★★★★★
() автор топика
Ответ на: комментарий от NK
# Так может
/tmp   
❯ fallocate -l 2G test.img                                                                        
                                                                                                                        
/tmp   
❯ mkfs.btrfs test.img 
btrfs-progs v6.6.3
See https://btrfs.readthedocs.io for more information.

NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Label:              (null)
UUID:               25a81616-22c3-4232-9230-c3b2a9e2acd7
Node size:          16384
Sector size:        4096
Filesystem size:    2.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             102.38MiB
  System:           DUP               8.00MiB
SSD detected:       no
Zoned device:       no
Incompat features:  extref, skinny-metadata, no-holes, free-space-tree
Runtime features:   free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH    
    1     2.00GiB  test.img

                                                                                                                        
/tmp   
❯ sudo btrfs filesystem show test.img          
Label: none  uuid: 25a81616-22c3-4232-9230-c3b2a9e2acd7
        Total devices 1 FS bytes used 144.00KiB
        devid    1 size 2.00GiB used 228.75MiB path /tmp/test.img
rtxtxtrx
()

Короче: подумай раз 7 прежде чем ZFS использовать. ZFS - это, повторюсь, не родное, она пришла прямиком из бзди. Которая такой же Linux как и GayOS. Цель исползования этих чудо-фс одинаковая - создание черного ящика. Если тебе не нужны снапшоты, то тебе не нужны zbtrfs. Можно еще сжатие вспомнить, но оно места мало экономит, так как все твои картинки и видео с котиками и так всегда сжаты. Дальше сравни всякие графические утилиты типа Btrfs Assistant и пр… Да даже те же Gparted и KDE Partition Manager вроде поддерживают ZFS, а вроде я никогда и не проверял. Почему я против ZFS из моей писанины и так понятно (тупо лень трахаться с особым образом и тп)

rtxtxtrx
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

а фотографии котиков) в самом корне btrfs/ или в подтоме btrfs/subvolume/ желательно хранить? Я в том плане есть ли разница и сложность последующая при восстановлении и монтировании в другом дистре при физическом демонтаже hdd/ssd

И это, то что вы показали на

❯ sudo btrfs filesystem show test.img

не знаю, я пробовал подобное на /dev/mapper/gptpart_luks_btrfs на несмонтированное, но с luksOpen перед, посылать - ничего не показывалось(

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 3)
Ответ на: комментарий от rtxtxtrx

она пришла прямиком из бзди

ZFS не только пришла не оттуда, она с некоторых и туда приходит из линукса. Но целом согласен, оно не родное, и родным станет примерно никогда, вечное out-of-tree барахло.

anonymous
()
Ответ на: комментарий от rtxtxtrx

сейчас вроде discard по дефолту, а значит fstrim.timer можно отключить. там у luks еще свой discard. не понятно нужны ли они сейчас, но у меня все включено

  • а монтировать с autodefrag стоит ли?
  • subvol - отображаются как папки, да они в list, а я как папки/каталоги создавать-удалять могу не средствами btrfs или не стоит связываться?
  • И вот еще замечал ключ rw приписывают, а надо ли?
# btrfs property list .
ro                  read-only status of a subvolume
label               label of the filesystem
compression         compression algorithm for the file or directory

ставил rw, но ro=false в btrfs property get . значился всегда

в btrfs они по умолчанию копируются на обоих дисках

я пока с одним диском и одним разделом подготавливаю/эксперементирую, сначала хотя бы в простой реализации хочу по командам пробежаться и понять что будет когда диск/subvol весь забьется (при каких условиях). Пока впечатления положительные.

А касательно copies=2 - Using ZFS without redundancy

So, what benefits would ZFS give without redundancy? Automatic metadata repair on read failure, (all metadata has at least 2 copies, even without redundancy)

я правильно понял без RAID-подобного избыточности ZFS делает 2-копии? А btrfs, как? Отсюда мысли

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от NK

Да. Но это не папки, хотя rm/rmdir работают с ними. read only у снапшотов, из него rw уже без предупреждения не сделаешь, надо делать снапшот снапшота без флага -r. Btrfs Assistant поставь.

я пока с одним диском и одним разделом подготавливаю/эксперементирую

там эксперементировать не с чем. файловая система простая как кирпич

А btrfs, как?

в btrfs они по умолчанию копируются на обоих дисках

rtxtxtrx
()