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が解決策を提案しました。まず、デバイスでzpoolを作成し、/dev/sdX
次の手順を実行します。
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
zpool create
可能であれば、初期バージョンでもこれを行いたいと思います。
答え1
この投稿が少し古くなっていることを知っていますが、答えがあります。インポートしたら、キャッシュファイルを更新する必要があります。この例は、キャッシュファイルのデフォルトの場所を示しています。
$> 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
答え2
WWN処理
$ cd /dev/disk/by-id/
$ ls -l
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE -> ../../sde
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE-part1 -> ../../sde1
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE-part9 -> ../../sde9
…
… wwn-0x50014ee2628c2228 -> ../../sde
… wwn-0x50014ee2628c2228-part1 -> ../../sde1
… wwn-0x50014ee2628c2228-part9 -> ../../sde9
ドライブまたはドライブパーティションは、ブランドby-id
、モデル名、およびシリアル番号に基づいてIDに加えて、IDを持つことができますwwn-
。これはユニークですWWN(ワールドワイド名)ドライブハウジングにも印刷されています。
どちらのタイプのIDもZFSで正常に機能しますが、WWN情報はあまり明確ではありません。これらのWWN IDいいえ本番システム(まだエクスポートされていないルートパーティションやZFSなど)によって参照されるこれらのエントリは、を使用して簡単に削除できますsudo rm wwn-*
。私を信じてください。私がやった。何も間違えないZFSがエクスポートされた状態の場合そうする前に。
結局のところ、WWN IDはsd
ドライブ検出中に生成されたデバイスへのシンボリックリンクです。システムが再起動すると、自動的に再表示されます。内部的には、Linuxは常にsd
デバイスを参照しています。
$ sudo zpool export pool0
$ sudo rm wwn-*
$ sudo zpool import -d /dev/disk/by-id/ pool0
ここで見つけてくださいより多くのZFSが豊富です!
答え3
時々使ってみましたが、zpool import -d /dev/disk/by-id
あまり効果がありませんでした。
私は1つ以上の設定でこれを見つけました。いくつかの魔法ロジックを実行し、物理的に接続されたZFSデバイスを表示することに加えて、基本的に次のことを行うインポートスクリプトがあります。
zpool import -d /dev/disk/by-id POOL
zpool export POOL
zpool import POOL
2番目は、スイッチがなくても-d
最初に明示的なコマンドを使用しなかった場合でも、デバイスIDにインポートされます。
これは、不要になった数週間または数ヶ月(1〜2年前)のZFSバグによるものです。バグレポートを送信する必要があるようですが、この問題を解決するのは簡単です。