LINUX.ORG.RU

как правильно работать с zfs?

 


0

1

В руководстве gentoo создаются разделы, а внутри разделов создаются zfs. Это вообще правильно? Допустим, мне нужно:

/ - 50gb
/home - всё остальное

Как это правильно сделать? Может лучше сделать пул на весь диск, в нем сделать поинты и сделать на них квоты? Как правильно работать с диском, чтобы в случае чего можно было сделать ресайз или сделать отдельно сжатый раздел и тд?

★★★

Последнее исправление: serg002 (всего исправлений: 2)

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

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

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

Про ресайз на ZFS можешь забыть, а вообще — создаёшь пул из всех имеющихся у тебя однотипных дисков, в нём создаёшь датасеты под все нужды. Дальше разруливаешь квотами и прочими настройками. Никаких разделов, т. к. ZFS сама себе менеджер томов, разделов, свободного места и всего что можно.

Единственное исключение — служебные разделы, которые по определению не могут быть частью ZFS, такие как /boot, ESP, swap и т. п.

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

Про ресайз на ZFS можешь забыть

4.2, хотя и есть нюансы.
Переезжал на зеркале на новые бОльшие диски, никаких проблем и вообще вопросов не было.
Поэтому на

Как правильно работать с диском, чтобы в случае чего можно было сделать ресайз

ответ действительно - отдать диски пулу целиком, и пусть ZFS ими рулит.

GAMer ★★★★★
()

Правильно работать с zfs это когда ставишь фряху с корнем на zfs в виртуалбокс запущеный в винде

Nastishka ★★★★★
()
Последнее исправление: Nastishka (всего исправлений: 1)

Да, это правильно. Диски объединяются в vdev-ы, vdev-ы объединяются в пулы. На пулах ты создаёшь «датасеты» - файловые системы, виртуальные диски и т.д.

Датасеты не имеют фиксированного размера, т.е. у тебя может быть тысяча «датасетов» (Считай что разделов) и каждый будет занимать ровно столько места, сколько ему нужно, автоматически расширяясь, если нужно больше, или съужаясь, если нужно меньше.

anonymous-angler ★☆
()
Ответ на: комментарий от intelfx

Единственное исключение — служебные разделы, которые по определению не могут быть частью ZFS, такие как /boot, ESP, swap и т. п.

Строго говоря, это неверно. ESP действительно не может быть на ZFS. /boot может быть, если пул создан с GRUB-совместимыми опциями. swap может быть, но на данный момент забагован и будет вешать систему, если RAM не хватит для того что бы закоммитить транзакцию.

anonymous-angler ★☆
()
Ответ на: комментарий от anonymous-angler

swap может быть, но на данный момент забагован и будет вешать систему, если RAM не хватит для того что бы закоммитить транзакцию.

На FreeBSD не испытывал SWAP в ZVOL на предельные нагрузки — работает и ладно. А что, это так в OpenZFS что ли?

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

В идеале никак не работать. Особенно на десктопе.

Это ещё почему?

У меня три диска, объединённых в RAID-Z. И несколько сами по себе в ZFS.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)

Как это правильно сделать?

Если диск не загрузочный, то Z-пул на весь диск, а дальше уже в пуле делаешь нарезку на отдельные файловые системы zfs create poolname/home, zfs create poolname/home/serg002, как тебе нравится.

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

Я бы сказал, что это так именно для ZoL. OpenZFS - не только ZoL. Скорее всего дело в CDDL и том, что им не дают внести в ядро патчи что бы swap (И не только swap) работал нормально.

Из дополнительных наказаний за использование Linux - пул непоправимо ломается, если попытаться сделать suspend-to-disk в этот swap.

anonymous-angler ★☆
()
Ответ на: комментарий от anonymous-angler

/boot может быть, если пул создан с GRUB-совместимыми опциями

Значит, уже «работает с ограничениями». Ок.

swap может быть, но на данный момент забагован

То есть они прогоняют swap I/O через все слои ZFS, а не просто выделяют место на разделе и передают его ядру в пользование, как это делают во всех остальных слишком умных ФС?

Мне даже страшно представить, какого размера костыли пришлось подставить, чтобы это хоть как-то работало.

Строго говоря, это неверно

Общий принцип верен.

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

Переезжал на зеркале на новые бОльшие диски

Ну это единственный тип ресайза, который в ZFS может быть. Обычно, если ты не энтерпрайз, у которого есть деньги чтобы докидывать диски целыми полками, тебя интересует совсем другое — ресайз по одному и/или вниз.

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

То есть они пропускают swap I/O через все слои ZFS, а не просто выделяют место на разделе и передают его ядру в пользование?

Мне даже страшно представить, какого размера костыли пришлось подставить, чтобы это хоть как-то работало.

Так и есть. А как иначе то, если диски объединены в массив и CoW неотключаемый?

anonymous-angler ★☆
()
Ответ на: комментарий от intelfx

Ну это единственный тип ресайза, который в ZFS может быть.

Что это?

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

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

Копирование данных с одного пула на другой — это, очевидно, не то же самое, что ресайз.

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

А как иначе то, если диски объединены в массив и CoW неотключаемый?

Так, как сделано в btrfs и в примерно всех остальных ФС. Аллоцируем кусок места, закидываем в ядро список блоков/экстентов, забываем про этот файл и больше его не трогаем.

intelfx ★★★★★
()
Ответ на: комментарий от serg002

как правильно стратегически делать

В каждом отдельном случае есть куча нюансов. Ну и от задач зависит.

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

mord0d ★★★★★
()
Ответ на: комментарий от intelfx

Единственное исключение — служебные разделы, которые по определению не могут быть частью ZFS, такие как /boot, ESP, swap и т. п.

Boot — нормально живёт на zfs.

Пример (из proxmox):

# df -hT /boot
Filesystem       Type  Size  Used Avail Use% Mounted on
rpool/ROOT/pve-1 zfs   216G  190G   26G  89% /

Swap — понятное дело, тоже.

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

В руководстве gentoo создаются разделы, а внутри разделов создаются zfs. Это вообще правильно?

Есть 2 подхода (я использую оба):

  1. (правильный) под zfs отводятся отдельные диски

  2. (не правильный, но более гибкий) zfs поверх lvm (ssd -> pv -> vg -> lv(1,2,3,4,5) -> zfs. Позволяет часть диска использовать под zfs (который гибче), часть — под lvm (который быстрее).

У меня первый подход распространяется на HDD, второй - на емкие ssd (nvme на 12 тб).

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 1)

Как это правильно сделать? Может лучше сделать пул на весь диск, в нем сделать поинты и сделать на них квоты?

Если бы я для себя это делал (на ноутбуке), я бы сделал пару разделов на диске: /boot (ext4, пару ГБ) и под ZFS. В /boot я бы положил livecd, который умеет работать с ZFS (например версию systemrescuecd, которая умеет работать с zfs: https://xyinn.org/gentoo/livecd/).

Если используешь UEFI — то и для него тоже раздел (я плохо разбираюсь в этом вопросе).

В принципе, можно и весь диск отдать под ZFS (я выше приводил пример из proxmox — там так и сделанно), но, если делаешь это не в ZFS-ready дистрибутивах (не знаю, как сейчас в gentoo с этим), то нужно быть морально и технически готовым поднять систему, если загрузка с zfs навернётся после очередного обновления.

Ещё советы: обращай внимание на выравнивание разделов, на ashift (у современных SSD = 8к под капотом, т.е. ashift=13), не используй raidz и дедупликацию :). Если используешь вирутализацию, смотри, что бы вируталка делала discard. Ну и помни, что для эффективной работы CoW нужно некоторое свободное место в пуле (не в FS). Насколько помню, когда остаётся 15%, врубается более тормознутый алгоритм размещения данных, 5% - еще более тормознутый; в % могу ошибаться.

Как правильно работать с диском, чтобы в случае чего можно было сделать ресайз или сделать отдельно сжатый раздел и тд?

Да там всё вообще очень гибко и удобно; место распределяется динамически между FS. Если надо - делаешь резервирование и ставишь квоты (тогда становится похоже на LVM).

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

А, да, ещё: l2arc - если не ограничить, то съедает кучу памяти.

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

Boot — нормально живёт на zfs.

Только с одним конкретным загрузчиком и если специально создавать совместимый пул.

Swap — понятное дело, тоже.

«Работает через раз с дедлоками» — это не нормально. Своп, который заставляет весь ввод-вывод в него проходить через CoW и всю остальную машинерию — это тоже не нормально.

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

У меня три диска, объединённых в RAID-Z. И несколько сами по себе в ZFS.

В FreeBSD?

eternal_sorrow ★★★★★
()
Ответ на: комментарий от intelfx

Своп, который заставляет весь ввод-вывод в него проходить через CoW и всю остальную машинерию — это тоже не нормально.

Не вижу в этом ничего плохого. Ну, если бы это работало.

anonymous-angler ★☆
()
Ответ на: комментарий от intelfx

служебные разделы, которые по определению не могут быть частью ZFS, такие как /boot, ESP, swap и т. п.

в оригинальной ZFS это всё можно:

History for 'rpool':
2018-08-02.14:02:31 zpool create -fB rpool c6t0d0
2018-08-02.14:03:25 zfs create -V 2G -b 4096 -o logbias=throughput -o sync=always -o primarycache=metadata -o secondarycache=none rpool/swap
-B      Create whole disk pool with EFI System partition to
                     support booting system with UEFI firmware.  Default size
                     is 256MB.  To create boot partition with custom size, set
                     the bootsize property with the -o option.  See the
                     Properties section for details.
Minona ★★☆
()
Ответ на: комментарий от Minona

Это «синтаксический сахар». ESP не может быть ничем иным, кроме как отдельным разделом в таблице разделов GPT.

Про своп я уже сказал. В нормальных ФС своп-файл просто пробрасывается в ядро и дальше ФС забывает про эти секторы. В zfs же решили сделать самобытно. То есть оно может «работает», но я бы пользоваться этим в продакшене не стал ни под каким предлогом.

intelfx ★★★★★
()
Ответ на: комментарий от anonymous-angler

Не вижу в этом ничего плохого

Кроме того, что swap I/O может приводить к выделению неограниченного количества памяти? Ну да, норм.

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

ну тыж девелопер солярки.. тебе виднее =) я там сверху привел листинг, где указано что пул создан на всем диске, а не партиции. но партиция в 256мб там есть (хз как это реализовано, но работает):

$ sudo prtvtoc /dev/rdsk/c2t0d0
* /dev/rdsk/c2t0d0 EFI partition map
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0     12    00        256    524288    524543
       1      4    00     524544 976232207 976756750
       8     11    00  976756751     16384 976773134

что касательно свопа: солярка и её клоны используют это в продакшене и не жужжат.

то что линукс и фря крешатся иногда при использовании свопа на ZVOL, так там это не довели до ума.

Minona ★★☆
()
Ответ на: комментарий от intelfx

Не-не, ты меня не понял. Из-за неограниченного выделения оно как раз не работает. Поэтому я и говорю: не было бы ничего плохого, если бы работало. Т.е. если бы выделение было ограниченым и зарезервированым.

anonymous-angler ★☆
()
Ответ на: комментарий от anonymous-angler

Поэтому я и говорю: не было бы ничего плохого, если бы работало. Т.е. если бы выделение было ограниченым и зарезервированым.

Есть ещё такое соображение, что своп должен быть быстрым.

intelfx ★★★★★
()
Ответ на: комментарий от Minona

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

Это реализовано именно так, как я сказал: синтаксическим сахаром. ESP не является частью пула ZFS.

солярка и её клоны

Топик — про Gentoo, а сайт — про Linux.

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

Окей, уточню: на практике - не может, в теории - может. Имплементация UEFI может поддерживать любые FS, но в большинстве случаев ограничивается малым - FAT32.

anonymous-angler ★☆
()
Ответ на: комментарий от intelfx

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

anonymous-angler ★☆
()
Ответ на: комментарий от intelfx

Тогда - разместить swap на lvm или на разделе.

Harliff ★★★★★
()
Ответ на: комментарий от anonymous-angler

Как показала практика - будет, но рано или поздно от этого загнётся пул.

Это достойно багрепорта.

Harliff ★★★★★
()
28 августа 2021 г.
Ответ на: комментарий от erfea

правильно работать с zfs - использовать >btrfs В это говно не завезли ни дедупликацию по человечески, ни снапшоты по людски. Захотел снапшот? Иди рви жопу со сторонними плагинами.

Зачем советовать говно, по каким причинам?

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

Зачем писать говно, по каким причинам?

erfea ★★★★★
()
Ответ на: комментарий от Minona

то что линукс и фря крешатся иногда при использовании свопа на ZVOL, так там это не довели до ума.

Пруфы?

iZEN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.