web-dev-qa-db-ja.com

アップグレードされたUbuntu、1つのzpool内のすべてのドライブが利用不可とマークされました

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を実行し、ファイルにダンプして、差分を実行しました。 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 ...を実行できますか?とにかく私のデータはなくなっていますか?

8
Matt Sieker

私が得ていたこの特定のエラーメッセージを何度もグーグルした後:

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(後世と検索インデックスのためにここに含まれています)私はこれを見つけました:

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

同じパーティションを使用していて、ZFSがロードされる前のブート中にそれらをmdraidに追加していました。

dmesgにいくつかのmdadm行が表示されたことを思い出しました。

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

これらのドライブは、かつて、ソフトウェアRAID5アレイの一部でした。何らかの理由で、アップグレード中にドライブを再スキャンすることを決定し、ドライブがかつてmd配列の一部であったことを発見し、それを再作成することを決定しました。これは次のように検証されました:

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

これらの3つのドライブは、多くの情報を示しました。今のところ、アレイを停止します。

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

そして、インポートを再実行します。

root@kyou:/home/matt# zpool import -f storage

アレイをオンラインに戻しました。

次に、バックアップ用にそのプールのスナップショットを作成し、それらに対してmdadm --zero-superblockを実行します。

5
Matt Sieker

Ubuntuにはいくつかの 厄介なudevの問題 がありますが、Red Hat/CentOS側には見られません。可能であれば、WWNベースのデバイス名を使用することをお勧めします。これは、影響を受けにくいように思われるためです。

見たことがありますか: 再起動するとZFSミラーの片側が使用できなくなったのはなぜですか?

4
ewwhite

Debian Wheezyで3.13シリーズのカーネルにアップグレードしようとすると、ほぼこの問題に遭遇しました。あなたはあなたのコメントに正しいです。これはudevのバグです。残念ながら、ソートすることはできませんでしたが、0.6.2バージョンのZOLとの互換性については、他のカーネル、特に3.11シリーズを調べる価値があります。 0.6.3が出るまで、古いカーネルを使用してください。

2
Joshua Boniface