トップページ > ZFS関連 > ZFS と fmd
カテゴリー
オラクルエンジニア通信
サポートページ
マニュアルページ
ソフトウェアダウンロード
中古UNIXマシン購入
blogs.sun.com
お勧めサイト
プライベートリンク

ZFS と fmd

ZFSの障害にfmd (Fault Managementデーモン)がどのようにレポートしてくれるかを紹介します。
Solaris 10 6/06 からは ZFS がサポートされています。
それに伴い、ZFSの障害に関しても fmd (Fault Managementデーモン)がレポートしてくれます。
例えば、/var/adm/messagesには以下のようなメッセージが記録されます。

Sep 28 11:23:11 zfstest fmd: [ID 441519 daemon.error] SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault
, VER: 1, SEVERITY: Major
Sep 28 11:23:11 zfstest EVENT-TIME: Thu Sep 28 11:23:11 JST 2006
Sep 28 11:23:11 zfstest PLATFORM: SUNW,Ultra-250, CSN: -, HOSTNAME: zfstest
Sep 28 11:23:11 zfstest SOURCE: zfs-diagnosis, REV: 1.0
Sep 28 11:23:11 zfstest EVENT-ID: 73de322d-782f-62b4-c717-9151fb9e5c5b
Sep 28 11:23:11 zfstest DESC: A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3
 for more information.
Sep 28 11:23:11 zfstest AUTO-RESPONSE: No automated response will occur.
Sep 28 11:23:11 zfstest IMPACT: Fault tolerance of the pool may be compromised.
Sep 28 11:23:11 zfstest REC-ACTION: Run 'zpool status -x' and replace the bad device.

IMPACTを見る限り、耐障害性が損なわれたことがわかります。
実際、冗長ディスク(ミラーやRAID-Z構成)の1つが壊れたときなどにこのようなメッセージになります。

この場合 zpool replace コマンドなどで別のディスクに取り替えればすぐ直ります。

また以下のようなコマンドを実行するとZFS用の診断モジュールが加わっていることもわかります。

# fmstat
module             ev_recv ev_acpt wait  svc_t  %w  %b  open solve  memsz  bufsz
USII-io-diagnosis        0       0  0.0    0.3   0   0     0     0      0      0
cpumem-retire            0       0  0.0    0.4   0   0     0     0      0      0
eft                      0       0  0.0    0.3   0   0     0     0   713K      0
fmd-self-diagnosis       0       0  0.0    0.2   0   0     0     0      0      0
io-retire                0       0  0.0    0.3   0   0     0     0      0      0
snmp-trapgen             1       0  0.0  104.0   0   0     0     0    32b      0
sysevent-transport       0       0  0.0 3681.0   0   0     0     0      0      0
syslog-msgs              1       0  0.0   62.1   0   0     0     0      0      0
zfs-diagnosis          345       2  0.0    3.1   0   0     1     1    64b    40b


fmd がハンドリングした障害があると以下のようにfmdumpコマンドで情報を確認できます。

# fmdump
TIME                 UUID                                 SUNW-MSG-ID
Sep 28 11:23:11.8262 73de322d-782f-62b4-c717-9151fb9e5c5b ZFS-8000-D3

各UUID毎に詳細情報を見る場合には以下のように実行します。

# fmdump -v -u 73de322d-782f-62b4-c717-9151fb9e5c5b
TIME                 UUID                                 SUNW-MSG-ID
Sep 28 11:23:11.8262 73de322d-782f-62b4-c717-9151fb9e5c5b ZFS-8000-D3
  100%  fault.fs.zfs.device

        Problem in: zfs://pool=e000712c9989e4ee/vdev=3b453cf7bd4d7243
           Affects: zfs://pool=e000712c9989e4ee/vdev=3b453cf7bd4d7243
               FRU: -


障害ディスクを特定するには以下のようにエラーレポートを見て、エラーの発生源を見たほうがわかりやすい場合もあります。

# fmdump -e
TIME                 CLASS
Sep 28 11:23:08.5357 ereport.fs.zfs.io
Sep 28 11:23:08.5360 ereport.fs.zfs.io
Sep 28 11:23:08.5360 ereport.fs.zfs.io
Sep 28 11:23:11.5616 ereport.fs.zfs.vdev.open_failed

# fmdump -eV
...
...
Sep 28 2006 11:23:11.561634578 ereport.fs.zfs.vdev.open_failed
nvlist version: 0
        class = ereport.fs.zfs.vdev.open_failed
        ena = 0x73053e6d45f00401
        detector = (embedded nvlist)
        nvlist version: 0
                version = 0x0
                scheme = zfs
                pool = 0xe000712c9989e4ee
                vdev = 0x3b453cf7bd4d7243
        (end detector)

        pool = rzpool
        pool_guid = 0xe000712c9989e4ee
        pool_context = 0
        vdev_guid = 0x3b453cf7bd4d7243
        vdev_type = disk
        vdev_path = /dev/dsk/c2t74d0s0
        vdev_devid = id1,ssd@n2000002037a63d93/a
        parent_guid = 0x9ce799f4b4b5c027
        parent_type = raidz
        prev_state = 0x1
        __ttl = 0x1
        __tod = 0x451b320f 0x2179dd12

上記の例では c2t74d0 のディスクで障害があったことがわかります。

オラクルユニバーシティSolaris系技術トレーニング一覧

Solarisお勧め書籍

Solaris 11.2 システムハンドブック
Oracle Solaris 11 試験対策本(OCA)