LINUX.ORG.RU

ZFS pools vs huge pool

 , ,


0

2

Дано: куча затасканных (дата изготовления 2010-2012, наработка - 5-6 лет 24x7x365), но живых SATA2 2TB HGST. Выкидывать их жалко (а их еще и будет прибавляться по мере замены), а применение придумать сложно.

Возникла идея: Сделать холодное (даже ледяное) хранилище для старых данных. Supermicro платформа на 60 дисков, zfs on linux, raidz3, dedup=off.

Вопрос: первоначально возникла мысль, сделать один гигансткий vdev raidz3. Потом здравый смысл возобладал и сложилось 2 варианта: либо 3 x 19 дисков (16 + 3), либо 5 x 11 (8+3), + hot spare.

Однако открытым остался вопрос, использовать ли все vdev в рамках 1 пула, или создать несколько независимых пулов? (фактически, vdev=pool).

Из плюсов нескольких пулов - отсутствует единая точка отказа. Из минусов не так удобно администрировать, директории придется разбрасывать по пулам в полуручном режиме.

Вся конструкция должна прожить 3-5+ лет.

Интересует ваше мнение.

★★★★★

Из плюсов нескольких пулов - отсутствует единая точка отказа.

ИМХО, из условий задачи (дисков, которые уже N лет юзаны) надёжность хранения данных важнее удобства.

DoctorSinus ★★★★★ ()

фактически, vdev=pool

Нет, в терминологии ZFS это не так.

raidz3

Ну если тебе данные не жалко…

их еще и будет прибавляться по мере замены

…то можно.

Вся конструкция должна прожить 3-5+ лет.

Тогда не стоит использовать RAIDZ.

И забудь про обновления — в linux kernel >=5.0 ZFS уже не работает.

Однако открытым остался вопрос, использовать ли все vdev в рамках 1 пула, или создать несколько независимых пулов?

Интересует ваше мнение.

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

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

vdev=pool я имел в виду, что каждый raidz3 будет выступать отдельным пулом.

а в чем проблема с raidz3? Собственно только ради него я и выбрал zfs, т.к. иначе планировал mdadm raid6 + xfs.

по поводу апдейтов - они и не планировались особо.

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

каждый raidz3 будет выступать отдельным пулом.

RAIDZ не может быть не отдельным пулом.

а в чем проблема с raidz3?

У меня нет претензий к RAIDZ, так как я его не тыкал, а вот с классическими RAID-5/RAID-6 я огрёб, так что нафиг-нафиг.

Но учти, что в RAIDZ нет возможности добавить или удалить диск, только заменить существующий. Соответственно, чтобы увеличить размер пула, тебе придётся пересоздавать пул с переносом данных.

по поводу апдейтов - они и не планировались особо.

Так почему не взять FreeBSD, если от всего добра требуется лишь файлосервер?

Внезапно, но с SMB на FreeBSD кактус менее колючий, чем с точно таким же юзкейсом на GNU/Linux.

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

У меня нет претензий к RAIDZ, так как я его не тыкал, а вот с классическими RAID-5/RAID-6 я огрёб, так что нафиг-нафиг.

А зачем тогда писать про raidz? Тут вроде именно про специфику zfs вопрос.

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

Проверьте, кажется hot spare к пулу привязываются (это я к тому, что если сделать несколько пулов, то использование hot spare будет менее эффективным).

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

Вы, похоже, путаете pool и vdev. В одном pool их может быть несколько.

Открой zfs(8), пролистай до DESCRIPTION, читай с “A dataset can be one of the following:” самостоятельно, мой лимит на чтение манов вслух с выражением на этой неделе исчерпан.

А зачем тогда писать про raidz? Тут вроде именно про специфику zfs вопрос.

ТС просил моего мнения. Получите, распишитесь.

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

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

При этом пулов может быть больше одного. Но при этом в каждом пуле будет только один vdev raidz3. Вот вроде такого:

localadm@archive01:/mnt/archive01$ zpool status
  pool: archive01
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        archive01   ONLINE       0     0     0
          raidz3-0  ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE       0     0     0
            sdg     ONLINE       0     0     0
            sdh     ONLINE       0     0     0
            sdi     ONLINE       0     0     0
            sdj     ONLINE       0     0     0
            sdk     ONLINE       0     0     0
        spares
          sdo       AVAIL   

errors: No known data errors

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

        NAME        STATE     READ WRITE CKSUM
        archive02   ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sdl     ONLINE       0     0     0
            sdm     ONLINE       0     0     0
            sdn     ONLINE       0     0     0

errors: No known data errors
silw ★★★★★ ()
Ответ на: комментарий от mord0d

Открой zfs(8), пролистай до DESCRIPTION, читай с “A dataset can be one of the following:” самостоятельно, мой лимит на чтение манов вслух с выражением на этой неделе исчерпан.

Датасет - это сущность, живущая внутри пула. Непонятно, к чему ты это приплел.

Устройств верхнeго уровня (top-level vdev) в пуле может быть сильно больше одного - размер поля vdev_id в указателе на блок 32 бита.

Вот тебе пул с двумя raidz3:

# for i in a b c d e f g h i j k ; do mkfile -n 64m /tmp/disk0$i ; mkfile -n 64m /tmp/disk1$i ; done
# zpool create rz3 raidz3 /tmp/disk0* raidz3 /tmp/disk1*
# zpool status rz3
  pool: rz3
 state: ONLINE
  scan: none requested
config:

        NAME             STATE      READ WRITE CKSUM
        rz3              ONLINE        0     0     0
          raidz3-0       ONLINE        0     0     0
            /tmp/disk0a  ONLINE        0     0     0
            /tmp/disk0b  ONLINE        0     0     0
            /tmp/disk0c  ONLINE        0     0     0
            /tmp/disk0d  ONLINE        0     0     0
            /tmp/disk0e  ONLINE        0     0     0
            /tmp/disk0f  ONLINE        0     0     0
            /tmp/disk0g  ONLINE        0     0     0
            /tmp/disk0h  ONLINE        0     0     0
            /tmp/disk0i  ONLINE        0     0     0
            /tmp/disk0j  ONLINE        0     0     0
            /tmp/disk0k  ONLINE        0     0     0
          raidz3-1       ONLINE        0     0     0
            /tmp/disk1a  ONLINE        0     0     0
            /tmp/disk1b  ONLINE        0     0     0
            /tmp/disk1c  ONLINE        0     0     0
            /tmp/disk1d  ONLINE        0     0     0
            /tmp/disk1e  ONLINE        0     0     0
            /tmp/disk1f  ONLINE        0     0     0
            /tmp/disk1g  ONLINE        0     0     0
            /tmp/disk1h  ONLINE        0     0     0
            /tmp/disk1i  ONLINE        0     0     0
            /tmp/disk1j  ONLINE        0     0     0
            /tmp/disk1k  ONLINE        0     0     0

errors: No known data errors
#

ТС просил моего мнения. Получите, распишитесь.

Со своим мнением про raid-z ты уже неоднократно садился в лужу, так что его ценность стремится к нулю.

anonymous ()

Что за данные? Если много мелких файлов - это может быть так себе решение. Если большие файлы и большой размер блока - то вперед. Плюс, конечно, на случай выхода из строя дисков нужна поддержка последовательного восстановления целостности - когда сначала на основе метаданных генерируя карта блоков для восстановления целостности, а потом она используется для восстановления целостности в порядке LBA.

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

угу, уже попробовал. печально, что нет концепта global hot spare. да, похоже тогда так и остается - 5x11 и в один пул.

Интересно - не знал, что из OpenZFS выпилили. В оригинальной ZFS - можно:

# for i in a b c d ; do mkfile -n 64m /tmp/disk2$i ; done
№
# zpool create rz1 raidz /tmp/disk2*
#
# for i in a b c d ; do mkfile -n 64m /tmp/disk3$i ; done
#
# zpool add rz3 spare /tmp/disk3*
#
# zpool add rz1 spare /tmp/disk3*
#
# zpool status rz3
  pool: rz3
 state: ONLINE
  scan: none requested
config:

        NAME             STATE      READ WRITE CKSUM
        rz3              ONLINE        0     0     0
          raidz3-0       ONLINE        0     0     0
            /tmp/disk0a  ONLINE        0     0     0
            /tmp/disk0b  ONLINE        0     0     0
            /tmp/disk0c  ONLINE        0     0     0
            /tmp/disk0d  ONLINE        0     0     0
            /tmp/disk0e  ONLINE        0     0     0
            /tmp/disk0f  ONLINE        0     0     0
            /tmp/disk0g  ONLINE        0     0     0
            /tmp/disk0h  ONLINE        0     0     0
            /tmp/disk0i  ONLINE        0     0     0
            /tmp/disk0j  ONLINE        0     0     0
            /tmp/disk0k  ONLINE        0     0     0
          raidz3-1       ONLINE        0     0     0
            /tmp/disk1a  ONLINE        0     0     0
            /tmp/disk1b  ONLINE        0     0     0
            /tmp/disk1c  ONLINE        0     0     0
            /tmp/disk1d  ONLINE        0     0     0
            /tmp/disk1e  ONLINE        0     0     0
            /tmp/disk1f  ONLINE        0     0     0
            /tmp/disk1g  ONLINE        0     0     0
            /tmp/disk1h  ONLINE        0     0     0
            /tmp/disk1i  ONLINE        0     0     0
            /tmp/disk1j  ONLINE        0     0     0
            /tmp/disk1k  ONLINE        0     0     0
        spares
          /tmp/disk3a    AVAIL
          /tmp/disk3b    AVAIL
          /tmp/disk3c    AVAIL
          /tmp/disk3d    AVAIL

errors: No known data errors
#
# zpool status rz1
  pool: rz1
 state: ONLINE
  scan: none requested
config:

        NAME             STATE      READ WRITE CKSUM
        rz1              ONLINE        0     0     0
          raidz1-0       ONLINE        0     0     0
            /tmp/disk2a  ONLINE        0     0     0
            /tmp/disk2b  ONLINE        0     0     0
            /tmp/disk2c  ONLINE        0     0     0
            /tmp/disk2d  ONLINE        0     0     0
        spares
          /tmp/disk3a    AVAIL
          /tmp/disk3b    AVAIL
          /tmp/disk3c    AVAIL
          /tmp/disk3d    AVAIL

errors: No known data errors
#
anonymous ()
Ответ на: комментарий от mord0d

Но учти, что в RAIDZ нет возможности добавить или удалить диск, только заменить существующий. Соответственно, чтобы увеличить размер пула, тебе придётся пересоздавать пул с переносом данных.

А в новой версии ZOL 0.8, появилась возможность еще и извлекать устройства из пула с уменьшением пула и без перестроения пула, просто замечательно. Но есть одно НО, это не работает для RAIDZ.

Добавь сюда к удобству еще и то, что производительность mirrors выше, чем RAIDZ.

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

А в новой версии ZOL 0.8, появилась возможность еще и извлекать устройства из пула с уменьшением пула и без перестроения пула, просто замечательно. Но есть одно НО, это не работает для RAIDZ.

Так оно разные сущности, чтобы работало.

mord0d ()