LINUX.ORG.RU
ФорумAdmin

Вопрос знатокам zfs - как правильно добавлять устройства в пул?

 , , ,


1

4

Целиком диски? gpt разделы? Их UUID? Или может банально LVM VG/LV? Ведь LVM переносим и его адресация не зависит от имени диска, но с ним гораздо проще видеть организацию тома чем по UUID.

Проще ведь видеть разделы по именам:

   pool: zfs-raidz_4
     id: 14845661564733668607
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zfs-raidz_4  ONLINE
          Data_1     ONLINE
          Data_2     ONLINE
          Data_3     ONLINE
          Data_4     ONLINE

Чем по жутким цифробуквам:
   pool: zfs-mirror
     id: 11702920276725354413
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zfs-mirror                                ONLINE
          mirror-0                                ONLINE
            72cf2c0b-fe32-4649-9aa6-45d1314d1139  ONLINE
            27300dce-6a76-6a49-a10c-905100118633  ONLINE

Эти разделы задолбаешься же искать по всем дискам.

★★★

может банально LVM VG/LV?

НетЪ! Не нужно такого городить )

Зависит от того, что это за пул и как используется и он, и его диски.

Отдать диск целиком проще всего. Но это катит если ты с пула не грузишься. Иначе либо извращения с резервированием места под загрузочный раздел с последующим его созданием руками и установкой груба, либо делать разделы нормально, грузиться через UEFI и отдавать в пул раздел. Я последние пару раз выбрал EFI загрузку и в целом мне оно нравится.

Подумать также придётся как отдавать диск или раздел. Отдавать их рекомендуют через /dev/disk/by*
Если у тебя большущая хранилка, где приходится менять дохлые диски - by-path.
Хочется красивых имён - by-label.
Хочется отсутствия возможных коллизий и чтобы пул всегда собирался - by-id.

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

Вот это. ZFS сам создаст таблицу и разделы.

Спорно. Уже проходил, правда у меня была смесь (полигон).
sdc1 и sdd было на флешках, переткнул через USB Hub и рейд рассыпался. Причём подниматься не захотел даже в DEGRADED.
Отвалился как раз тот диск который был целиком включен.
Рекомендовали по UUID - они не меняются в отличие от имён дисков.
Но позже я ещё на одной флешке создал 8 разделов и разметил в LVM2. Чуть позже протесчу рейд на 2 разных флешках со сменой порядка их инициализации. Там хотя бы в отчетах видны: Data_1,Data_2,... а не кракозябры GUID. Любой рейд может потребовать смены хоста и надо чтобы он хорошо экспортировался и импортировался, вплоть до плагнплея.

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

может банально LVM VG/LV?

НетЪ! Не нужно такого городить )

Почему?
Мне например больше нравится:

#zdb -e zfs-raidz_4
.....
Configuration for import:
        vdev_children: 4
        version: 5000
        pool_guid: 14845661564733668607
        name: 'zfs-raidz_4'
        state: 1
        hostid: 1109879144
        hostname: 'zer0'
        vdev_tree:
            type: 'root'
            id: 0
            guid: 14845661564733668607
            children[0]:
                type: 'disk'
                id: 0
                guid: 3010253004324331814
                whole_disk: 0
                metaslab_array: 145
                metaslab_shift: 26
                ashift: 9
                asize: 1064828928
                is_log: 0
                create_txg: 4
                path: '/dev/raid_1/Data_1'
                devid: 'dm-uuid-LVM-G3Rai93PBbxVpP2hVpWrmNQV9h8eda2SXgHZEFMGW4HBJqotEBe7TbdAGErl9vpA'
                phys_path: '/dev/disk/by-uuid/14845661564733668607'
            children[1]:
                type: 'disk'
                id: 1
                guid: 4996050953357242327
                whole_disk: 0
                metaslab_array: 140
                metaslab_shift: 26
                ashift: 9
                asize: 1064828928
                is_log: 0
                create_txg: 4
                path: '/dev/raid_2/Data_2'
                devid: 'dm-uuid-LVM-8O0yQHykNbI1ffah2WTOkkPQhtaXV772kuMDVgiPwjqo75EY06a3pVtmGxsPq2Y0'
                phys_path: '/dev/disk/by-uuid/14845661564733668607'
            children[2]:
                type: 'disk'
                id: 2
                guid: 17772629732584514920
                whole_disk: 0
                metaslab_array: 135
                metaslab_shift: 26
                ashift: 9
                asize: 1064828928
                is_log: 0
                create_txg: 4
                path: '/dev/raid_3/Data_3'
                devid: 'dm-uuid-LVM-2kyN97gPKsrMK83YeB5IZwWckks8MtcaGHvGj5o5sjYgDIeJQ0YZdDqaqiG0Cb23'
                phys_path: '/dev/disk/by-uuid/14845661564733668607'
            children[3]:
                type: 'disk'
                id: 3
                guid: 5314943912494175083
                whole_disk: 0
                metaslab_array: 128
                metaslab_shift: 26
                ashift: 9
                asize: 1064828928
                is_log: 0
                create_txg: 4
                path: '/dev/raid_4/Data_4'
                devid: 'dm-uuid-LVM-Ip5MY8p9DXGzNXpfqJT0MJc18JRyE4Hr8EXeGiih6kXqqp0Y2Dhwywv9KQO2tBeS'
                phys_path: '/dev/disk/by-uuid/14845661564733668607'
        load-policy:
            load-request-txg: 18446744073709551615
            load-rewind-policy: 2

.....

чем:
Configuration for import:
        vdev_children: 1
        version: 5000
        pool_guid: 11702920276725354413
        name: 'zfs-mirror'
        state: 1
        hostid: 1385667209
        hostname: 'zer0'
        vdev_tree:
            type: 'root'
            id: 0
            guid: 11702920276725354413
            children[0]:
                type: 'mirror'
                id: 0
                guid: 5464841171677768764
                metaslab_array: 68
                metaslab_shift: 29
                ashift: 9
                asize: 15627452416
                is_log: 0
                create_txg: 4
                children[0]:
                    type: 'disk'
                    id: 0
                    guid: 1358037695955188531
                    whole_disk: 0
                    not_present: 1
                    DTL: 13
                    create_txg: 4
                    path: '/dev/disk/by-partuuid/72cf2c0b-fe32-4649-9aa6-45d1314d1139'
                children[1]:
                    type: 'disk'
                    id: 1
                    guid: 3390969044089098540
                    whole_disk: 0
                    DTL: 133
                    create_txg: 4
                    path: '/dev/disk/by-partuuid/27300dce-6a76-6a49-a10c-905100118633'
        load-policy:
            load-request-txg: 18446744073709551615
            load-rewind-policy: 2

В первом варианте я прекрасно представляю где живёт: /dev/raid_1/Data_1, а вот где живёт: /dev/disk/by-partuuid/27300dce-6a76-6a49-a10c-905100118633 - это надо ещё выяснить.
А когда оно отвалится? Где будешь смотреть эти UUID? На мёртвом диске? Придётся вести записи соответствия дисков, разделов и их UUID.

Зависит от того, что это за пул и как используется и он, и его диски.

Мне хочется максимальной гибкости.

Отдать диск целиком проще всего.

но в пуле он будет присутствовать как раздел типа: /dev/sda1
и если имена дисков съедут - случится что угодно. У меня пул рассыпался и не поднялся даже в DEGRADED.

Но это катит если ты с пула не грузишься. Иначе либо извращения с резервированием места под загрузочный раздел с последующим его созданием руками и установкой груба, либо делать разделы нормально, грузиться через UEFI и отдавать в пул раздел. Я последние пару раз выбрал EFI загрузку и в целом мне оно нравится.

Ну я не такой крутой, я планирую грузиться с ssd и системный раздел рсинкать на zfs-data/Backup с compression=gzip-9

Подумать также придётся как отдавать диск или раздел. Отдавать их рекомендуют через /dev/disk/by*

А почему не через скажем: /dev/T4T1/Data-1 и /dev/T4T2/Data-2? Оно хорошо портабельно и одинаково будет выглядеть на любом компе.

Если у тебя большущая хранилка, где приходится менять дохлые диски - by-path.

Мне кажется больно геморно... Проще /dev/VG/LV

Хочется красивых имён - by-label.

Вполне.

Хочется отсутствия возможных коллизий и чтобы пул всегда собирался - by-id.

Но тоже геморно потом выяснять какой диск отказал. при Path или VG/LV - Сразу будет ясно.

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

НетЪ! Не нужно такого городить )

А по мне так вообще шик и блеск. Было:

   pool: zfs-raidz_4
     id: 14845661564733668607
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zfs-raidz_4  ONLINE
          Data_1     ONLINE
          Data_2     ONLINE
          Data_3     ONLINE
          Data_4     ONLINE

Но VG были raid_1,raid_2,raid_3,raid_4
Переназвал как партиции флешки: Lenovo 2T part 5 = L2T5
#zpool import уже показывает:
   pool: zfs-raidz_4
     id: 14845661564733668607
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zfs-raidz_4    ONLINE
          L2T5-Data_1  ONLINE
          L2T6-Data_2  ONLINE
          L2T7-Data_3  ONLINE
          L2T8-Data_4  ONLINE

Сразу ясно где находится вылетевший раздел. И никуда разделы не съедут при добавлении/убирании дисков.
Главное увидеть подводные камни...
О добавлении диска целиком я уже хорошо вдарился. Так и не нашел как оживить пул.

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

А когда оно отвалится? Где будешь смотреть эти UUID? На мёртвом диске?

Собираю пулы из SATAшек Intel через /dev/disk/by-id/…. Когда оно отваливется читаю что отвались и читаю это же самое на самом диске. Выкидываю его, меняю на такой же.

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

sdc1 и sdd было на флешках, переткнул через USB Hub и рейд рассыпался. Причём подниматься не захотел даже в DEGRADED.

Ты делал полную херню и получилась полная херня. Как же так вышло-то?

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

А когда оно отвалится? Где будешь смотреть эти UUID? На мёртвом диске?

Собираю пулы из SATAшек Intel через /dev/disk/by-id/…. Когда оно отваливется читаю что отвались и читаю это же самое на самом диске. Выкидываю его, меняю на такой же.

Допустим, я на диске напишу просто (на стикере) T4T1,T4T2,S1T1,T3T1 Зачем мне длинные надписи? У меня не сотни дисков в стойках.

О подводных камнях пока предположений не видел. Флешки местами поменял, импортировал. Всё импортировалось.

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

Ты делал полную херню и получилась полная херня. Как же так вышло-то?

Я делаю стресс тесты над zfs. Всё это на 4х флешках. Собираю в разных вариантах, переключаю. Изучаю поведение.

Пока самый предпочтительный для меня вариант - zfs живущая в LVM. Ищу подводные камни, а то прямо замечательно всё. VG/LV остаются при переносе на другой компьютер. Перенести можно наживую, например в USB3 ДОК Станцию.

Вот только так и не решил. Винт для бэкапа держать там же? В онлайне? По идеологии - бэкап носители живут в другой локации, но у меня как то плоха статистика по винтам подвергающимся переноске. Дохнут... Но если пожар, то сдохнет всё...

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

Пока самый предпочтительный для меня вариант - zfs живущая в LVM.

Это очень тупой вариант. ZFS уже делает то же, что и LVM, ещё один слой там вообще не нужен.

Если ты хочешь диск для холодного бэкапа, тебе не нужна ZFS вообще. И LVM тебе тоже не нужен. Раскатай там ext4 с опциональным шифрованием и наслаждайся жизнью.

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

На всех нормальных дисках уже есть надписи совпадаюшие или с by-id/wwn-XXX или by-id/ata-XXXX

Тем не менее сложно прочитать какую то метку на установленном диске, я предпочту прочитать стикер с кодом наклееный на видное место диска. Код буду писать от руки и он нужен короткий. Типа:TE4T1 (Toshiba Enterprise 4 Terabytes N1) И то же в пути тома: /dev/TE4T1/mirror-Data-1
P.S. Но пока не совсем ясно при каких обстоятельствах том выдерживает перезагрузку, а при каких отваливается. Пока экспериментирую с флешками, и не каждый том выдерживает перезагрузку. Некоторые надо вновь импортировать.

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

Пока самый предпочтительный для меня вариант - zfs живущая в LVM.

Это очень тупой вариант. ZFS уже делает то же, что и LVM, ещё один слой там вообще не нужен.

На счет масла масляного - резонный аргумент, но PUUID плохо читаются глазами.

Если ты хочешь диск для холодного бэкапа, тебе не нужна ZFS вообще. И LVM тебе тоже не нужен. Раскатай там ext4 с опциональным шифрованием и наслаждайся жизнью.

Я лентяй, хочу не столько шифрование сколько упаковку. ZFS том импортировал, и рсинкнул без лишних телодвижений и все данные доступны в исходном формате, и даже с такими извращениями как снэпшоты. Но в идеале, в глубине души сидит желание осилить и добыть ленточный накопитель. Но сейчас это всё очень дорого и непонятно с доступностью в будущем. Вспоминаются времена начала 2000 и АРВИД. Но сейчас и видак фиг достанешь. А ленты теоретически даже могут прочитаться. А жесткий диск, рраз... и труп... Неожиданно...

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

На счет масла масляного - резонный аргумент, но PUUID плохо читаются глазами.

Это единственная причина? Сделай метки дисков/разделов.

Возможно я не в материале, но здесь топик про zfs и то как zfs указывать раздел. Какой командой можно присвоить метку разделу без fs? Я пока знаю что это можно только через LVM.

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

На счет масла масляного - резонный аргумент, но PUUID плохо читаются глазами.

Это единственная причина? Сделай метки дисков/разделов.

Возможно я не в материале, но здесь топик про zfs и то как zfs указывать раздел. Какой командой можно присвоить метку разделу без fs? Я пока знаю что это можно только через LVM.

Можешь начать читать отсюда: https://wiki.archlinux.org/title/persistent_block_device_naming

Тебя интересует GPT Partition label. Добавляешь диск в пул как обычно, ставишь эту метку через gdisk и готово.

Но я всё ещё считаю, что тебе не нужна ZFS для того что ты делаешь. RAID на съёмных носителях – это очень дерьмовая идея, и ZFS для такого не предназначена. А ещё ты, похоже, не делал zpool export когда свои флешки вытаскивал, и от этого у тебя всё развалилось.

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

На счет масла масляного - резонный аргумент, но PUUID плохо читаются глазами.

Это единственная причина? Сделай метки дисков/разделов.

Возможно я не в материале, но здесь топик про zfs и то как zfs указывать раздел. Какой командой можно присвоить метку разделу без fs? Я пока знаю что это можно только через LVM.

Можешь начать читать отсюда: https://wiki.archlinux.org/title/persistent_block_device_naming

Спасибо, покурю...

Тебя интересует GPT Partition label. Добавляешь диск в пул как обычно, ставишь эту метку через gdisk и готово.

Надеюсь сработает.

Но я всё ещё считаю, что тебе не нужна ZFS для того что ты делаешь. RAID на съёмных носителях – это очень дерьмовая идея, и ZFS для такого не предназначена. А ещё ты, похоже, не делал zpool export когда свои флешки вытаскивал, и от этого у тебя всё развалилось.

С чего ты так считаешь? zfs мне нужна для другого, а флешки это дешевое средство для создания полигона. Почему это дерьмовая идея?
Можно легко собрать рейд и легко выдернуть любой носитель, сэмулировав неисправность и отработав протоколы восстановления.
На счет Экспорта, как раз и идея в том чтобы найти такой протокол подключения - когда перестановка флешек ни чего не портит.т.е. если в результате какой то ошибки и смены имени диска - массив остается работоспособным, а не превращается в тыкву.

Если в результате какой то ошибки у тебя «съехали» имена дисков - это не должно нарушать работоспособность системы, и даже если нарушает - должно восстанавливаться при возврате состояния, или после применения каких то Детерминированных заклинаний.
У меня всё так же остаётся один из 2х зеркальных носителей и я ищу способ как добраться до данных на нём. Пока не нашел.

n0mad ★★★
() автор топика