Ubuntu 16.04 XenialにバンドルされているOpenZFSを試してみます。
プールを作成するとき、復元力のために/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は、それらを参照するのではなく、シンボリックリンクをたどっているようです。
プールを作成するときに、16.04でzpoolがドライブ参照を尊重するように強制する方法はありますか?あるいは、ここで行っていることに対する私の不安が見当違いです。
更新:回避策
回避策を示唆するGithubでzfsonlinuxのスレッドを見つけました。/dev/sdX
最初にデバイスでzpoolを作成してから、これを行います:
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
zpool create
可能であれば、私はまだ初期設定でこれを行うことができることを好むでしょう。
zfs send
してデータを新しいプールにコピーします。実際、raid-zはmythtvボックスでは問題ありません。mythtvボックスでは、一度に6つまたは8つのトランスコードジョブを実行していない限り、パフォーマンスは重要ではありません。ミラーペアへの変更は、/home
ディレクトリが存在するプールで非常に顕著です。
zfs export
およびzfs import -d
とにかく動作します。ところで、スペースのすべてのバイトが本当に必要でない限り、raidzではなく2つのミラーペアを使用します。raidzのパフォーマンスはraid-5よりも優れていますが、raid-10またはzfsミラーペアよりもはるかに劣っています。また、ミラー化されたペアで構成されるプールを拡張し、一度に2つのディスクを追加するだけでも簡単です。raidzを使用すると、各ドライブをより大きなドライブに交換する必要があります。プールにはより多くのスペースがあります。