Estou dando uma chance ao OpenZFS no Ubuntu 16.04 Xenial.
Ao criar pools, eu sempre referencio drives por suas séries em /dev/disk/by-id/
(ou /dev/disk/gpt
no FreeBSD) para resiliência. As unidades nem sempre estão na mesma ordem em /dev
quando uma máquina é reinicializada e, se você tiver outras unidades na máquina, o pool poderá não ser montado corretamente.
Por exemplo, executando zpool status
em uma caixa 14.04, recebo isto:
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
Mas quando eu criar um novo pool no 16.04 com este (abreviado):
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_[..]
Eu recebo isso com 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
Parece que zpool seguiu os links simbólicos, em vez de fazer referência a eles.
Existe uma maneira de forçar o zpool no 16.04 a respeitar as referências da minha unidade ao criar um pool? Ou, alternativamente, são minhas dúvidas sobre o que está fazendo aqui extraviado?
Atualização: solução alternativa
Eu encontrei um tópico para o zfsonlinux no Github que sugeria uma solução alternativa. Crie seu zpool com /dev/sdX
devices primeiro e faça o seguinte:
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
Eu ainda preferiria fazer isso com o zpool create
inicial, se possível.