PXEブートとNFSとメモリ上でOS起動を組み合わせる

題名の通りなのだが、PXEブートとNFSとメモリ上でOS起動を連携させることで、結構なことができるようになる。

例えば、自動インストールを考えてみよう。

上記の3要素をうまく使えば、kickstartにはあまりそぐわないようなインストール方法をとることができる。

どういった場合かというと、

[note]

  • HDDのデータをまるごとバックアップしておいて、壊れた場合はサーバー再起動するだけで自動復旧
  • kickstartでは融通がきかないような作り込まれたシステムでも、サーバー再起動するだけで自動インストール
  • サーバー毎のインストールデータを/からそれぞれ保持しておいて、新しいサーバーを再起動するだけで用途にあったデータをコピーして自動インストール[/note]

などである。

具体的にいくと、以下のような流れになる。

  1. サーバーのBIOS設定でDHCPから起動できるようにする
  2. 自動インストール用サーバーを別で用意する
  3. 日々、自動インストールサーバーのとあるディレクトリにssh+rsyncでデータを/からコピーしておく
  4. 自動インストールサーバーにDHCPとtftpとNFSを設定する
  5. PXEブート用のinitrdに必要最低限のOSを準備し/からのデータを詰め込んでイメージ化する
  6. サーバーを起動させる
  7. PXEブートにより指定したkerneとinitrdからメモリ上で起動する
  8. メモリ上で起動したOS上でHDDをフォーマットする
  9. メモリ上で起動したOSから自動インストールサーバーのとあるディレクトリをNFSマウントする
  10. 自動インストールサーバーにはバックアップしているOSデータがとあるディレクトリにおかれているのでrsyncでコピーする
  11. コピー完了後再起動する
  12. サーバーがHDDから起動すると、バックアップしているOSデータで稼働する

ざっとこのような流れになる。

自動インストールサーバー上に、様々なOSを/から用意しておけば、どんな時でも簡単にサーバーを再構築することができる。

PXEブート用のOS内のfirstbootあたりに、HDDをフォーマットしてNFSマウントしてデータコピーする、ようなツールを仕込んでおけば、サーバーを起動するだけでインストールが完了してしまう。

枯れた技術を組み合わせるだけでも、便利な仕組みができちゃうものだ。