一度使い出したらその便利さに抜け出せなくZFS。ZFSの提供するさまざまな機能を使わなくても基本的な使い方だけでも便利なものですが、
- Do zdb for ZFS recovery
ZFSは壊れにくいファイルシステムだと言われてはいますが、
何らかの原因で壊れることもあります。スクラブで直らない場合にはzdb(1M)で直すのが順当な修正方法となります。ただし、 zdb(1M)はそもそもZFSの開発者が利用するために提供されているものなので、 ドキュメントもありませんし、 動作の詳細を知りたい場合にはソースコードを読む必要があります。 今回は実際にzdb(1M)を使って問題を修正する方法を紹介します。まず、
もし今回のコマンドが実行できない場合、 次のようにリンクを作成してから作業を開始します。 cd /dev; ln -s . dsk
基本的に、
カーネルがパニックするような問題は次のように 「zdb -AAA -e プール」 と実行することで修正を実施します。この指定でアサーションを無視するとともに、 パニックを引き起こすタイプの問題を修正するようになります。 zdb -AAA -e zpool
「-AAA」 はすべての処理を実施しようとします。通常は次のようにデータブロックとメタデータプロック、 メタラベル、 ブロック統計データあたりをチェックするようにするだけで十分でしょう。 # zdb -cc -b -m -e zpool Metaslabs: vdev 0 metaslabs 159 offset spacemap free --------------- ------------------- --------------- ------------- metaslab 0 offset 0 spacemap 33 free 23.
0M metaslab 1 offset 20000000 spacemap 42 free 19. 7M metaslab 2 offset 40000000 spacemap 44 free 447M metaslab 3 offset 60000000 spacemap 46 free 512M metaslab 4 offset 80000000 spacemap 0 free 512M metaslab 5 offset a0000000 spacemap 0 free 512M metaslab 6 offset c0000000 spacemap 0 free 512M metaslab 7 offset e0000000 spacemap 0 free 512M metaslab 8 offset 100000000 spacemap 0 free 512M metaslab 9 offset 120000000 spacemap 0 free 512M metaslab 10 offset 140000000 spacemap 0 free 512M metaslab 11 offset 160000000 spacemap 0 free 512M metaslab 12 offset 180000000 spacemap 0 free 512M metaslab 13 offset 1a0000000 spacemap 0 free 512M metaslab 14 offset 1c0000000 spacemap 0 free 512M metaslab 15 offset 1e0000000 spacemap 0 free 512M metaslab 16 offset 200000000 spacemap 0 free 512M metaslab 17 offset 220000000 spacemap 0 free 512M metaslab 18 offset 240000000 spacemap 0 free 512M metaslab 19 offset 260000000 spacemap 0 free 512M metaslab 20 offset 280000000 spacemap 0 free 512M metaslab 21 offset 2a0000000 spacemap 0 free 512M metaslab 22 offset 2c0000000 spacemap 0 free 512M metaslab 23 offset 2e0000000 spacemap 0 free 512M metaslab 24 offset 300000000 spacemap 0 free 512M metaslab 25 offset 320000000 spacemap 0 free 512M metaslab 26 offset 340000000 spacemap 0 free 512M metaslab 27 offset 360000000 spacemap 0 free 512M metaslab 28 offset 380000000 spacemap 0 free 512M metaslab 29 offset 3a0000000 spacemap 0 free 512M metaslab 30 offset 3c0000000 spacemap 32 free 489M metaslab 31 offset 3e0000000 spacemap 41 free 502M metaslab 32 offset 400000000 spacemap 43 free 475M metaslab 33 offset 420000000 spacemap 45 free 512M metaslab 34 offset 440000000 spacemap 0 free 512M metaslab 35 offset 460000000 spacemap 0 free 512M metaslab 36 offset 480000000 spacemap 0 free 512M metaslab 37 offset 4a0000000 spacemap 0 free 512M metaslab 38 offset 4c0000000 spacemap 0 free 512M metaslab 39 offset 4e0000000 spacemap 0 free 512M metaslab 40 offset 500000000 spacemap 0 free 512M metaslab 41 offset 520000000 spacemap 0 free 512M metaslab 42 offset 540000000 spacemap 0 free 512M metaslab 43 offset 560000000 spacemap 0 free 512M metaslab 44 offset 580000000 spacemap 0 free 512M metaslab 45 offset 5a0000000 spacemap 0 free 512M metaslab 46 offset 5c0000000 spacemap 0 free 512M metaslab 47 offset 5e0000000 spacemap 0 free 512M metaslab 48 offset 600000000 spacemap 0 free 512M metaslab 49 offset 620000000 spacemap 0 free 512M metaslab 50 offset 640000000 spacemap 0 free 512M metaslab 51 offset 660000000 spacemap 0 free 512M metaslab 52 offset 680000000 spacemap 0 free 512M metaslab 53 offset 6a0000000 spacemap 0 free 512M metaslab 54 offset 6c0000000 spacemap 0 free 512M metaslab 55 offset 6e0000000 spacemap 0 free 512M metaslab 56 offset 700000000 spacemap 0 free 512M metaslab 57 offset 720000000 spacemap 0 free 512M metaslab 58 offset 740000000 spacemap 0 free 512M metaslab 59 offset 760000000 spacemap 0 free 512M metaslab 60 offset 780000000 spacemap 31 free 512M metaslab 61 offset 7a0000000 spacemap 0 free 512M metaslab 62 offset 7c0000000 spacemap 0 free 512M metaslab 63 offset 7e0000000 spacemap 0 free 512M metaslab 64 offset 800000000 spacemap 0 free 512M metaslab 65 offset 820000000 spacemap 0 free 512M metaslab 66 offset 840000000 spacemap 0 free 512M metaslab 67 offset 860000000 spacemap 0 free 512M metaslab 68 offset 880000000 spacemap 0 free 512M metaslab 69 offset 8a0000000 spacemap 0 free 512M metaslab 70 offset 8c0000000 spacemap 0 free 512M metaslab 71 offset 8e0000000 spacemap 0 free 512M metaslab 72 offset 900000000 spacemap 0 free 512M metaslab 73 offset 920000000 spacemap 0 free 512M metaslab 74 offset 940000000 spacemap 0 free 512M metaslab 75 offset 960000000 spacemap 0 free 512M metaslab 76 offset 980000000 spacemap 0 free 512M metaslab 77 offset 9a0000000 spacemap 0 free 512M metaslab 78 offset 9c0000000 spacemap 0 free 512M metaslab 79 offset 9e0000000 spacemap 0 free 512M metaslab 80 offset a00000000 spacemap 0 free 512M metaslab 81 offset a20000000 spacemap 0 free 512M metaslab 82 offset a40000000 spacemap 0 free 512M metaslab 83 offset a60000000 spacemap 0 free 512M metaslab 84 offset a80000000 spacemap 0 free 512M metaslab 85 offset aa0000000 spacemap 0 free 512M metaslab 86 offset ac0000000 spacemap 0 free 512M metaslab 87 offset ae0000000 spacemap 0 free 512M metaslab 88 offset b00000000 spacemap 0 free 512M metaslab 89 offset b20000000 spacemap 0 free 512M metaslab 90 offset b40000000 spacemap 0 free 512M metaslab 91 offset b60000000 spacemap 0 free 512M metaslab 92 offset b80000000 spacemap 0 free 512M metaslab 93 offset ba0000000 spacemap 0 free 512M metaslab 94 offset bc0000000 spacemap 0 free 512M metaslab 95 offset be0000000 spacemap 0 free 512M metaslab 96 offset c00000000 spacemap 0 free 512M metaslab 97 offset c20000000 spacemap 0 free 512M metaslab 98 offset c40000000 spacemap 0 free 512M metaslab 99 offset c60000000 spacemap 0 free 512M metaslab 100 offset c80000000 spacemap 0 free 512M metaslab 101 offset ca0000000 spacemap 0 free 512M metaslab 102 offset cc0000000 spacemap 0 free 512M metaslab 103 offset ce0000000 spacemap 0 free 512M metaslab 104 offset d00000000 spacemap 0 free 512M metaslab 105 offset d20000000 spacemap 0 free 512M metaslab 106 offset d40000000 spacemap 0 free 512M metaslab 107 offset d60000000 spacemap 0 free 512M metaslab 108 offset d80000000 spacemap 0 free 512M metaslab 109 offset da0000000 spacemap 0 free 512M metaslab 110 offset dc0000000 spacemap 0 free 512M metaslab 111 offset de0000000 spacemap 0 free 512M metaslab 112 offset e00000000 spacemap 0 free 512M metaslab 113 offset e20000000 spacemap 0 free 512M metaslab 114 offset e40000000 spacemap 0 free 512M metaslab 115 offset e60000000 spacemap 0 free 512M metaslab 116 offset e80000000 spacemap 0 free 512M metaslab 117 offset ea0000000 spacemap 0 free 512M metaslab 118 offset ec0000000 spacemap 0 free 512M metaslab 119 offset ee0000000 spacemap 0 free 512M metaslab 120 offset f00000000 spacemap 0 free 512M metaslab 121 offset f20000000 spacemap 0 free 512M metaslab 122 offset f40000000 spacemap 0 free 512M metaslab 123 offset f60000000 spacemap 0 free 512M metaslab 124 offset f80000000 spacemap 0 free 512M metaslab 125 offset fa0000000 spacemap 0 free 512M metaslab 126 offset fc0000000 spacemap 0 free 512M metaslab 127 offset fe0000000 spacemap 0 free 512M metaslab 128 offset 1000000000 spacemap 0 free 512M metaslab 129 offset 1020000000 spacemap 0 free 512M metaslab 130 offset 1040000000 spacemap 0 free 512M metaslab 131 offset 1060000000 spacemap 0 free 512M metaslab 132 offset 1080000000 spacemap 0 free 512M metaslab 133 offset 10a0000000 spacemap 0 free 512M metaslab 134 offset 10c0000000 spacemap 0 free 512M metaslab 135 offset 10e0000000 spacemap 0 free 512M metaslab 136 offset 1100000000 spacemap 0 free 512M metaslab 137 offset 1120000000 spacemap 0 free 512M metaslab 138 offset 1140000000 spacemap 0 free 512M metaslab 139 offset 1160000000 spacemap 0 free 512M metaslab 140 offset 1180000000 spacemap 0 free 512M metaslab 141 offset 11a0000000 spacemap 0 free 512M metaslab 142 offset 11c0000000 spacemap 0 free 512M metaslab 143 offset 11e0000000 spacemap 0 free 512M metaslab 144 offset 1200000000 spacemap 0 free 512M metaslab 145 offset 1220000000 spacemap 0 free 512M metaslab 146 offset 1240000000 spacemap 0 free 512M metaslab 147 offset 1260000000 spacemap 0 free 512M metaslab 148 offset 1280000000 spacemap 0 free 512M metaslab 149 offset 12a0000000 spacemap 0 free 512M metaslab 150 offset 12c0000000 spacemap 0 free 512M metaslab 151 offset 12e0000000 spacemap 0 free 512M metaslab 152 offset 1300000000 spacemap 0 free 512M metaslab 153 offset 1320000000 spacemap 0 free 512M metaslab 154 offset 1340000000 spacemap 0 free 512M metaslab 155 offset 1360000000 spacemap 0 free 512M metaslab 156 offset 1380000000 spacemap 0 free 512M metaslab 157 offset 13a0000000 spacemap 0 free 512M metaslab 158 offset 13c0000000 spacemap 0 free 512M Traversing all blocks to verify checksums and verify nothing leaked ... No leaks (block sum matches space maps exactly) bp count: 347518 bp logical: 1256785408 avg: 3616 bp physical: 1097050624 avg: 3156 compression: 1. 15 bp allocated: 1169949696 avg: 3366 compression: 1. 07 bp deduped: 0 ref>1: 0 deduplication: 1. 00 SPA allocated: 1169949696 used: 1. 37% # 「zdb -AAA -e プール」 や 「zdb -cc -b -m -e プール」 などで問題が解決しない場合、 簡単には修正できない問題か、 別のところに原因がある可能性があります。これ以上深追いはせずに、 別のプールを用意したりバックアップから復旧させる、 または先に紹介したアドホックな解決方法を併用するなどして別の方向から解決を試みたほうが良いといえます。