みんな大好きzfs(断言
ということで、うちの二大サーバのベースのファイルシステムは zfs を採用しています。
ファイルサーバに至ってはFreeBSD 8.0 のころから継ぎ足し継ぎ足しで、ローリングアップデートして HDDの交換をして使い続けているわけですが、今までFSが原因でファイルをロストしたことがないので ものすごく信頼して使っています。(バックアップは重要)
ということで、お仕事関係の税務処理とか、請求書発行システムとか、いろいろ重要なのも動いている のですが、そのマシンに、以前、zil とl2arc として mvme の ディスクを追加して、さらなる高速化を 求めていました。その nvme のディスクが死にました。
zil が死ぬと、fs をマウントできません。そのため、zfs root のマシンでは、再起動かけてしまったら コンソールで作業しないと、立ち上がってこないままになります。ちなみにうちのサーバは二台とも モニターにつながっていませんので、いきなり詰みます。
でも大丈夫、FreeBSD にはシリアルコンソールという素敵な機能があって、シリアルポート経由で あれこれできたりします。
ということで復旧方法。
何はともあれ、まず壊れた mvme を除去します。
次に、電源を入れてzfs がマウントできる CD とか、USBメモリから立ち上げます。
あとは zpool import -m -f
これであとは再起動すれば、通常の zfs root で立ち上がってきます。 めでたしめでたし。
というわけにはいかないのでした。
だが、今回は問題が起きた際に私は長期で出張(?)中だったため、家にはいません。
リモートで作業をしなければいけなくなってしまいました。 しかし、あがらなくなったサーバはVPNのサーバだったり、いろいろと宅内ネットの 根幹を担うものでした。
しかし、もう一台のテレビサーバの方にもDHCPやらDNSやら、いろいろと予備のサーバを 動かしていたので、家族のネット環境にはそれほど問題はありませんでした。 唯一出た問題は、テレビクライアントから録画サーバにつながらなくなって見えないという クレームでしたが、Konomi TV を使うことによって解決しました。
そして、「念のため」sshd を動かしてたので、 ssh でつないでリモートでいろいろ作業 することはできるようにしてありました。
また、ファイルサーバも毎回なんか作業するににモニターつなぐのが面倒だったので、 シリアルコンソールには raspi zero w がつながっていてネットワーク越しにシリアル にアクセスすることができるようにしてありました。
ということで、あとは物理的な nvme の抜去ですが、これは実の兄に頼むことにしました。
あとは、「CDなりUSBなりでマウントして」問題ですが、このファイルサーバを更新した 際に、USBメモリでブートして、そこから HDD を zfs root でマウントして起動するという システムにしてあり、そのUSBメモリはインストールUSB を改造して作ってあったため、 ちょっと戻せば USBメモリからブートできるので、この問題も解決しました。
ということで、あとは子供に「サーバの電源入れてくれ」を3回ほど頼むことによって 美時復旧することができ、源泉所得税の特別徴収の申告にも無事間に合うことができました。
めでたしめでたし。
ということで今回の教訓は ・zil と l2arc を設定するならここも二重化しよう ・備えあれば憂いなし ・困ったときは人を頼ろう の三本立てでした。協力してくださった皆様ありがとうございました。