再起動により、ZFSミラーの一方がUNAVAILになるのはなぜですか?


13

最近、バルクデータストレージプール(ZFS On Linux 0.6.2、Debian Wheezy)を単一デバイスのvdev構成から双方向ミラーvdev構成に移行しました。

以前のプール構成は次のとおりです。

    NAME                     STATE     READ WRITE CKSUM
    akita                    ONLINE       0     0     0
      ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0

resilverが完了した後はすべて正常でした(resilverが完了した後にスクラブを開始しました。システムにすべてをもう一度調べて、すべてが正常であることを確認するためです)。

  pool: akita
 state: ONLINE
  scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        akita                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
            ST4000NM0033-Z1Z333ZA  ONLINE       0     0     0

errors: No known data errors

しかし、再起動後、プールがうまくいかなかったという事実を通知するメールを受け取りました。私は見ていた、これは私が見たものです:

   pool: akita
  state: DEGRADED
 status: One or more devices could not be used because the label is missing or
         invalid.  Sufficient replicas exist for the pool to continue
         functioning in a degraded state.
 action: Replace the device using 'zpool replace'.
    see: http://zfsonlinux.org/msg/ZFS-8000-4J
   scan: scrub in progress since Sat May 17 14:20:15 2014
     316G scanned out of 1,80T at 77,5M/s, 5h36m to go
     0 repaired, 17,17% done
 config:

         NAME                       STATE     READ WRITE CKSUM
         akita                      DEGRADED     0     0     0
           mirror-0                 DEGRADED     0     0     0
             ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
             ST4000NM0033-Z1Z333ZA  UNAVAIL      0     0     0

 errors: No known data errors

スクラブが期待されます。再起動時に完全なシステムスクラブを開始するためのcronジョブのセットアップがあります。しかし、新しいHDDがミラーから落ちるとは予想していませんでした。

/ dev / disk / by-id / wwn- *の名前にマップするエイリアスを定義します。これらの両方のディスクがZFSを使用して、パーティショニングの処理を含め、ディスク全体を使用する自由な支配権を与えている場合:

# zpool history akita | grep ST4000NM0033
2013-09-12.18:03:06 zpool create -f -o ashift=12 -o autoreplace=off -m none akita ST4000NM0033-Z1Z1A0LQ
2014-05-15.15:30:59 zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ ST4000NM0033-Z1Z333ZA
# 

これらは/etc/zfs/vdev_id.confからの関連行です(Z1Z333ZAは分離にタブ文字を使用しているのに対し、Z1Z1A0LQ行はスペースのみを使用していることに気付きましたが、ここではどのように関連するかわかりません) :

alias ST4000NM0033-Z1Z1A0LQ             /dev/disk/by-id/wwn-0x5000c500645b0fec
alias ST4000NM0033-Z1Z333ZA     /dev/disk/by-id/wwn-0x5000c50065e8414a

私が見たとき/dev/disk/by-id/wwn-0x5000c50065e8414a*、期待通りにそこにいましたが、そうではあり/dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA*ませんでした。

発行するsudo udevadm triggerと、シンボリックリンクが/ dev / disk / by-vdevに表示されます。ただし、ZFSはそれらが存在することを単に認識していないようです(Z1Z333ZAはまだと表示されますUNAVAIL)。それだけ期待できると思います。

関連するデバイスを交換しようとしましたが、実際には運がありませんでした。

# zpool replace akita ST4000NM0033-Z1Z333ZA
invalid vdev specification
use '-f' to override the following errors:
/dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA-part1 is part of active pool 'akita'
# 

ブートプロセス中に両方のディスクが検出されます(関連するドライブを示すdmesgログ出力):

[    2.936065] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.936137] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.937446] ata4.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[    2.937453] ata4.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    2.938516] ata4.00: configured for UDMA/133
[    2.992080] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    3.104533] ata6.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[    3.104540] ata6.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    3.105584] ata6.00: configured for UDMA/133
[    3.105792] scsi 5:0:0:0: Direct-Access     ATA      ST4000NM0033-9ZM SN03 PQ: 0 ANSI: 5
[    3.121245] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[    3.121372] sd 3:0:0:0: [sdb] Write Protect is off
[    3.121379] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    3.121426] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.122070] sd 5:0:0:0: [sdc] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[    3.122176] sd 5:0:0:0: [sdc] Write Protect is off
[    3.122183] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    3.122235] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

両方のドライブがマザーボードに直接接続されています。オフボードコントローラーは含まれません。

衝動で、私はやった:

# zpool online akita ST4000NM0033-Z1Z333ZA

うまくいったようです。Z1Z333ZAは、少なくとも更新されていONLINEます。再同期の約1時間で、180Gをスキャンし、9.77%完了して24Gを再同期しました。これは、完全な再同期を実行せず、データセットデルタのみを転送することを示しています。

この問題がLinux上のZFSとudevのどちらに関係するのかは正直わかりません(udevに少し似ていますが、なぜ1つのドライブが正常に検出されるのに他のドライブは検出されないのです次回の再起動でも同じことが起こらないことを確認してください。

必要に応じて、セットアップに関する追加データを提供させていただきます。必要なものを教えてください。

回答:


10

これはDebianとUbuntuの亜種に固有のように見えるudevの問題です。Linuxでの私のZFS作業のほとんどはCentOS / RHELを使用しています。

ZFSディスカッションリストの同様のスレッドがこれについて言及しています。

参照:
SCSIと同じハードドライブは/ dev /ディスクの下に/ ID・バイのためのATAエントリ
および
ZFSのLinux / Ubuntuの上:Ubuntuは13.04から13.10にアップグレードした後のzpoolをインポートするヘルプ、デバイスIDが変更されました

Debian / Ubuntuシステムで最も決定的なプールデバイスアプローチが何であるかはわかりません。RHELの場合、一般的なプールデバイスでデバイスWWNを使用することを好みます。しかし、他の場合には、デバイス名/シリアルも有用です。しかし、udev これらすべてを抑制できるはずです。

# zpool status
  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h32m with 0 errors on Sun Feb 16 17:34:42 2014
config:

        NAME                        STATE     READ WRITE CKSUM
        vol1                        ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x500000e014609480  ONLINE       0     0     0
            wwn-0x500000e0146097d0  ONLINE       0     0     0
          mirror-1                  ONLINE       0     0     0
            wwn-0x500000e0146090c0  ONLINE       0     0     0
            wwn-0x500000e01460fd60  ONLINE       0     0     0

1
裸のwwn-*名前に移行した後、プールは安定しているように見えます。
CVn

1
@MichaelKjörlingはwwn- *名にどのように移行したかを詳しく説明できますか?
codecowboy 14

1
@codecowboyまったく空想はありません。zpool detach akita ST4000NM0033-Z1Z333ZAその後zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ wwn-0x5000c50065e8414aその後zpool detach akita ST4000NM0033-Z1Z1A0LQその後zpool attach akita wwn-0x5000c50065e8414a wwn-0x5000c500645b0fec、各ステップ間で検証プールが安定していること。最初に徹底的にスクラブすることを強くお勧めします。おそらくzpool replace同様に逃げることができますが、エイリアスがwwn名を指しており、冗長性とバックアップがあるため、これはより安全だと感じました。数日かかりましたが、急いでいませんでした。
CVn 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.