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


8

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 ...データを失うことなく実行できますか?とにかく私のデータはなくなっていますか?

回答:


5

この特定のエラーメッセージについて何度も何度もグーグルすると、次のようなエラーメッセージが表示されました。

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に追加していました。

私はいくつかのmdadm行を目にdmesgしたことを思い出しました。

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それらで実行します。


4

Ubuntuには、Red Hat / CentOS側には見られない、厄介なudevの問題があるようです。可能であれば、WWNベースのデバイス名を使用することをお勧めします。

ご覧になりましたか再起動すると、ZFSミラーの片側がUNAVAILになったのはなぜですか?


2
私はそれらを見て、1つにリンクされたスレッドを読んでいますが、問題はudevがデバイス上のすべてのパーティションにシンボリックリンクを作成していないことです。3つのドライブすべてをチェックしました。それぞれにパーティション番号1と9があり、それらには/dev/disk/by-idそれらのドライブのシンボリックリンクがあり、1つのデバイスのすべてのシンボリックリンクは同じ/dev/sd*ドライブを指します。そして、私が見つけることができる最も近い解決策(zpool replaceを使用)は、プールを再インポートできないため実行できません。
Matt Sieker、2014年

2

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


udevがこのように壊れることは、かなり受け入れられません。私はUbuntuを使用していませんが、このようなことにより、RHELの製品と比較して、非常に洗練されていないように見えます。
ewwhite 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.