Я даю попробовать в комплекте OpenZFS на Ubuntu 16.04 Xenial.
При создании пулов я всегда ссылаюсь на диски по их серийным номерам /dev/disk/by-id/
(или /dev/disk/gpt
во FreeBSD) для обеспечения отказоустойчивости. Диски не всегда находятся в одном и том же порядке /dev
при перезагрузке машины, и если в машине есть другие диски, пул может не смонтироваться правильно.
Например, при запуске zpool status
на 14.04 я получаю это:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HUA722020ALA330_[..] ONLINE 0 0 0
Но когда я создаю новый пул 16.04 с этим (сокращенно):
zpool create pool raidz \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..]
Я получаю это с zpool status
:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdf ONLINE 0 0 0
sde ONLINE 0 0 0
sdd ONLINE 0 0 0
sda ONLINE 0 0 0
Похоже, что zpool следовал по символическим ссылкам, а не ссылался на них.
Есть ли способ заставить zpool 16.04 уважать ссылки на мои диски при создании пула? Или, наоборот, мои опасения по поводу того, что здесь происходит, неуместны?
Обновление: Обходной путь
Я нашел ветку для zfsonlinux на Github, которая предлагает обходной путь. /dev/sdX
Сначала создайте zpool с устройствами, а затем сделайте следующее:
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
Я все же предпочел бы иметь возможность сделать это с начальной, zpool create
хотя, если это возможно.
zfs send
для копирования своих данных в новые пулы. На самом деле, raid-z подходит для моей коробки mythtv, где производительность не критична, если я не выполняю 6 или 8 заданий на перекодирование одновременно. Переход на зеркальные пары будет очень заметен в пуле, где /home
живет мой каталог.
zfs export
иzfs import -d
все равно будет работать. Кстати, если вам не нужен каждый байт пространства, используйте две зеркальные пары, а не raidz. производительность raidz лучше, чем raid-5, но все же намного хуже, чем у raid-10 или зеркальных пар zfs. Кроме того, проще расширить пул, состоящий из зеркальных пар, просто добавьте два диска за раз ... с помощью raidz вам придется заменить каждый из дисков на более крупные, и только после замены их все будет у бассейна есть больше свободного места.