シャットダウンフリー 総括

呼び方はいろいろです。シャットダウンフリー、電源ブチ切り対応、ROM化、リードオンリー化、電源断保護、延命化、・・・

本ブログで整理したシャットダウンフリーの手段は、あくまでも趣味の範囲で、わかる人には十分というレベルで記載しています。業務に関わるレベル(≒Linuxに不慣れな方々のオペレーションレベルまで対応するという意味)での記載は別のクローズなSNSに記載しています。Linuxコミュニティに恩返しする意味でもオープンにしていきたいとは思っています。

なお、最近のSSDをはじめとするFlashバイスは耐久性が上がっており、そのためのOS側の実装も充実しております(TRIM、ウェアレベリング、・・・)。採用するメディアのTBW(Tera Byte Written)と実運用を見て、まずはシャットダウンフリー実装の必要性を確認すべきかと思います。

1. 目的

シャットダウンフリーの目的を下記に再整理します。

  • 電源ブチ切りが発生しても確実に再起動するLinuxサーバを構築したい。
    書込中の電源断からの復旧を100%保証できるファイルシステムは無いので。
  • SSDを延命したい。
    Flashメモリの書込回数には上限があるので。
  • Linux PCやラズパイを貸し出すことになったが、中身はいじられたくない。
  •  [特殊な例]マルウェアに感染しても、すぐに元に戻せるようにしたい。

2. 方式

シャットダウンフリーの方式を大きく分けると、下記の2つです。

① tmpfs方式

RWが必要なディレクトリやファイルをあらかじめtmpfs領域にコピーしてからOSを本核起動します。

② overlayroot方式

RWが必要なディレクトリをあらかじめ定義します。そのディレクトリにライトアクセスがあった場合は差分だけがtmpfsに保存されます。Debian系ならパッケージが用意されています。

①②どちらがいいか

手離れして1年以上電源を切らないなら①、手に届く範囲や1ヶ月以内に電源をオフするような運用なら②です。理由はこの記事の本文にありますが、要は、overlayfsの不具合リスクが顕在化する前に電源を確実に切るなら②でOK、たいていは準備の楽な②で良いとは思います。

3. よくある失敗

後日記載します。

 

4. その他

開発者から手離れするLinuxプラットホームでは、多くのカーネルパラメータをケアしなければなりません。それらは、カーネルバージョン、CPU種別、チップセットディストリビューション、それらの各世代によって、多くのバリエーションがあります。例えば細かい所を言えば、Intel CPUでは、C-Stateの制限や無効化が場合によっては必要です。LANでの高スループットが必要ならネットワークパラメータのマニュアル設定が必須です。複数LANポートを持つケースではトラップがあります。

根気よく調べれば必ず正解にたどり着きますが、調べるきっかけを得られない「知らなかった」が最も恐れるべきところとなります。これを防ぐには、コミュニティ活動に何かしら関わっていくのが良いとは思います。日本人にはなかなか難しいですが、今は、リモートでも匿名でも関わりやすくなっているとは思います。