web-dev-qa-db-ja.com

Ubuntu Xenialでzpoolに/ dev / disk / by-idの使用を強制する

Ubuntu 16.04 XenialにバンドルされているOpenZFSを試してみます。

プールを作成するときは、回復力のために常に/dev/disk/by-id/(またはFreeBSDでは/dev/disk/gpt)のシリアルでドライブを参照します。マシンが再起動すると、ドライブは常に/devで同じ順序になるとは限りません。マシンに他のドライブがある場合、プールは正しくマウントできない場合があります。

たとえば、14.04ボックスでzpool statusを実行すると、次のようになります。

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を強制して、プールの作成時にドライブ参照を尊重する方法はありますか?それとも、ここで何をしているのかについての私の不安は見当違いですか?

更新:回避策

I スレッドを見つけました Github上のzfsonlinuxで回避策を提案しました。最初に/dev/sdXデバイスを使用してzpoolを作成し、次にこれを実行します。

$ Sudo zpool export tank
$ Sudo zpool import -d /dev/disk/by-id -aN

可能であれば、最初のzpool createでこれを実行できるようにしたいと思います。

18
Ruben Schade

私はこのスレッドが古いものであることを知っていますが、答えがあります。インポート後にキャッシュファイルを更新する必要があります。この例は、キャッシュファイルのデフォルトの場所を示しています。

$> Sudo zpool export POOL
$> Sudo zpool import -d /dev/disk/by-id POOL
$> Sudo zpool import -c /etc/zfs/zpool.cache
$> Sudo zpool status POOL
NAME                                  STATE     READ WRITE CKSUM
POOL                                  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
3
Steve O

たまにzpool import -d /dev/disk/by-idが機能しません。

複数の環境でこれに気づきました。私はいくつかの魔法のロジックを実行して物理的に接続されたZFSデバイスを表示するだけでなく、基本的にこれを実行するインポートスクリプトを持っています。

zpool import -d /dev/disk/by-id POOL
zpool export POOL
zpool import POOL

2回目は、-dスイッチがなくても、明示的なコマンドを使用して1回目でなくても、デバイスIDでインポートされます。

これは、数週間または1か月の期間(1年または2年前)のZFSバグが原因であった可能性があり、これは不要になりました。バグレポートを提出すべきだったと思いますが、回避するのは簡単でした。

1
Jim