Ubuntu 14.04をアップグレードしたばかりで、サーバーに2つのZFSプールがありました。ZFSドライバーとカーネルバージョンとの戦いでいくつかのマイナーな問題がありましたが、それで解決しました。1つのプールがオンラインになり、正常にマウントされました。他はしませんでした。このツールの主な違いは、1つは単なるディスクのプール(ビデオ/音楽ストレージ)であり、もう1つはraidzセット(ドキュメントなど)でした。
私はすでにプールをエクスポートして再インポートしようとしましたが、無意味にインポートしようとすると次のようになります:
root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
pool: storage
id: 15855792916570596778
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://zfsonlinux.org/msg/ZFS-8000-5E
config:
storage UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
ata-SAMSUNG_HD103SJ_S246J90B134910 UNAVAIL
ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 UNAVAIL
ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 UNAVAIL
のシンボリックリンク/dev/disk/by-id
も存在します:
root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root 9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root 9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root 9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9
/dev/sd*
リストされたさまざまなデバイスを検査すると、それらは正しいものであるように見えます(raidzアレイに含まれていた3つの1TBドライブ)。
zdb -l
各ドライブで実行し、それをファイルにダンプし、diffを実行しました。3つの唯一の違いは、GUIDフィールド(私が想定しているもの)です。それぞれの3つのラベルはすべて基本的に同じで、次のとおりです。
version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
type: 'raidz'
id: 0
guid: 1683909657511667860
nparity: 1
metaslab_array: 33
metaslab_shift: 34
ashift: 9
asize: 3000569954304
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 8815283814047599968
path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
whole_disk: 1
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 18036424618735999728
path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
whole_disk: 1
create_txg: 4
children[2]:
type: 'disk'
id: 2
guid: 10307555127976192266
path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
whole_disk: 1
create_txg: 4
features_for_read:
愚かなことに、私はこのプールの最近のバックアップを持っていません。ただし、リブート前のプールは問題なく、Linuxはディスクを問題なく認識しました(今、smartctlを実行して再確認しています)。
つまり、要約すると:
- Ubuntuをアップグレードしましたが、2つのzpoolの1つにアクセスできなくなりました。
- プールの違いは、登場したのはJBODで、もう1つはzraidでした。
- マウント不可のzpool内のすべてのドライブにはUNAVAILのマークが付けられ、破損したデータに関するメモはありません
- どちらのプールも、から参照されるディスクを使用して作成されました
/dev/disk/by-id/
。 - から
/dev/disk/by-id
さまざまな/dev/sd
デバイスへのシンボリックリンクは正しいようです zdb
ドライブからラベルを読み取ることができます。- プールは既にエクスポート/インポートが試行されており、再度インポートすることはできません。
これらのディスクを適切なアレイに戻すためにzpool / zfsを介して呼び出すことができるある種のブラックマジックはありますか?zpool create zraid ...
データを失うことなく実行できますか?とにかく私のデータはなくなっていますか?
/dev/disk/by-id
それらのドライブのシンボリックリンクがあり、1つのデバイスのすべてのシンボリックリンクは同じ/dev/sd*
ドライブを指します。そして、私が見つけることができる最も近い解決策(zpool replaceを使用)は、プールを再インポートできないため実行できません。