Sto provando il bundle OpenZFS su Ubuntu 16.04 Xenial.
Quando creo i pool, faccio sempre riferimento alle unità tramite i loro periodici in /dev/disk/by-id/
(o /dev/disk/gpt
su FreeBSD) per la resilienza. Le unità non sono sempre nello stesso ordine in /dev
cui una macchina si riavvia e se nel computer sono presenti altre unità, il pool potrebbe non essere montato correttamente.
Ad esempio, in esecuzione zpool status
su una scatola 14.04 ottengo questo:
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
Ma quando creo un nuovo pool il 16.04 con questo (abbreviato):
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_[..]
Lo capisco con 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
Sembra che zpool abbia seguito i symlink, piuttosto che fare riferimento a loro.
C'è un modo per forzare zpool su 16.04 a rispettare i riferimenti del mio disco durante la creazione di un pool? O in alternativa, i miei dubbi su ciò che sta facendo qui sono fuori luogo?
Aggiornamento: soluzione alternativa
Ho trovato un thread per zfsonlinux su Github che ha suggerito una soluzione alternativa. Crea prima il tuo zpool con i /dev/sdX
dispositivi, quindi fai questo:
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
Preferirei comunque riuscire a farlo con l'iniziale, zpool create
se possibile.
zfs send
per copiare i miei dati nei nuovi pool. In realtà, raid-z è OK per il mio mito box dove le prestazioni non sono critiche a meno che non stia eseguendo 6 o 8 lavori di transcodifica contemporaneamente. Il passaggio a coppie speculari sarebbe molto evidente nel pool in cui /home
risiede la mia directory.
zfs export
ezfs import -d
funzioneranno comunque. A proposito, a meno che tu non abbia davvero bisogno di ogni byte di spazio, usa due coppie speculari anziché raidz. Le prestazioni di raidz sono migliori di raid-5 ma ancora molto peggio delle coppie con mirroring di raid-10 o zfs. è anche più facile espandere un pool composto da coppie speculari, basta aggiungere due dischi alla volta ... con raidz, devi sostituire ciascuna delle unità con unità più grandi e solo quando avrai sostituito tutte la piscina ha più spazio disponibile.