BSD界隈四方山話

第27回 2015年第3四半期:Reroot,nosh,96コアARM,ZFS

この記事を読むのに必要な時間:およそ 2 分

FreeBSDプロジェクトから2015年第3四半期における活動報告FreeBSD Quarterly Status Report - Third Quarter 2015が公開されました。報告内容が第3四半期における活動のすべてということではないのですが,今ホットなトピックはこの報告書から知ることができます。報告書からとくに興味深いものを紹介します。

Reroot,11-RELEASEおよび10.3-RELEASEで登場

これまでのFreeBSDであれば,カーネルの読み込みはrootファイルシステムに設置されているカーネルを読み込んで,そこからシステムを起動するという処理を行っていました。Root Remount(Reroot)はこれを一時的に用意したメモリ上のファイルシステムからシステムを起動できるようにして,rootファイルシステムの更新を可能にしようというものです。

この新しい機能は「reboot -r」と実行することで機能するようになります。これまでであれば一旦システムをハードウェアレベルで再起動する必要があったため,ハードウェアレベルでの初期化やチェックなど,メモリを大量に搭載したマシンや周辺機器をたくさん接続したマシンで再起動に時間がかかるという問題がありました。

Root Remount(Reroot)では次のような手順でシステムの再起動を実施します。

  1. システムの一部に関してシャットダウン処理を実施
  2. 実行中のプロセスをすべて終了
  3. 現在のrootファイルシステムをアンマウント
  4. 一部のブート処理を実施
  5. 新しいrootファイルシステムをマウント
  6. initを実行
  7. 起動スクリプト経由で各起動処理を実施

このように,rootファイルシステムの入れ替えをハードウェアのリセットを実施することなくできることになります。カーネルを入れ替えない場合の再起動で大幅な高速化が期待できます。

この機能はカーネル側の処理がすでにFreeBSD 11-CURRENTにコミットされています。ユーザランド側の処理はステータスレポートを提出した段階ではコミットしていないということですが,すぐにコミットできるだろうとの説明があります。10系へのバックポートも予定しているということなので,11.0-RELEASEおよび10.3-RELEASEからは「reboot -r」でこの高速再起動が利用できることになるようです。

noshプロジェクト - 包括的システム管理ツール

システムの初期化,サービス制御,システム制御,モニタリングなどを実施するシステムレベルのユーティリティを開発するプロジェクト「noshプロジェクト」が取り上げられています。これは現在のinit(8)およびrc.dメカニズムの替わりに利用できることを目指したものです。Solaris,AIX,UCSPI,daemontools,launchd,systemdなどに影響を受けたプロジェクトのようにみえます。

「noshプロジェクト」で実現しようとしていること,すでに実装されていること,対応するオペレーティングシステム,制御コマンドの導入方法と使い方などは次のドキュメントにまとまっています。

FreeBSDはシステムの起動にinit(8)とrc(8)を使っています。それぞれの機能はシンプルです。これに対して中央集権的に単一のソフトウェアがさまざまなサービスなどを制御するのがMac OS Xで活用されているlaunchd(8)です。ここ数年,Linuxがlaunchd(8)と似たようなsystemd(8)と呼ばれる管理機能の開発を進めています。

systemd(8)は単一のプログラムがシステムの管理に関して目的の異なる複数の機能を持ち大きくなりすぎるということから,この動向をよしとしない向きがあります(デバッグが難しくなり,セキュリティ的にも好ましくないという意見です)⁠launchd(8)をFreeBSDに導入しようという動きもありますし,先日発表されたNextBSDはこれを推し進めるものといえます。

しかしlaunchd(8)の移植に関しても,Mac OS Xのカーネルであるからこそlaunchd(8)は意味があるのであって,FreeBSDカーネルに対してlaunchd(8)の機能を導入するのはセマンティックスが合っていないから不自然だとする向きもあります。ようするに,このあたりの管理インターフェースや管理方法をどうするのかは,いくつかの考え方があって,広くコンセンサスが取れているとはいえない状況にあります。

ドキュメントやツールを読む限り,⁠noshプロジェクト」は現在の中央集権的な管理ソフトウェアの機能を

  • FreeBSDライセンスまたはこれと相性の良いライセンスで開発
  • daemontoolsのニュアンスを強く含んでいる
  • 既存の設定ファイルや制御スクリプトと高い互換性がある
  • *BSD向けに開発がはじまったプロジェクトだが,*BSDのみならずLinuxにも対応
  • すでに注目に値できるほど実装が進んでいる

といった特徴を持ちつつ開発しているもののようにみえます。この手のツールはこれまで登場してはいずれ開発されなくなってメインストリームから静かに消えていくといったことがありました。そうした消えていったプロジェクトと比べると,noshはだいぶ元気があるように見えます。

現時点ではnoshがベースシステムにマージされるといった強い理由を見つけることはできませんが,システム管理インターフェースおよびユーティリティとして第3者の立場であり続ける可能性があります。今後の動向を見ておきたいプロジェクトです。

96コアARMv8プロセッサに対応

FreeBSD Foundation,ARM,Cavium,Semihalfのスポンサーシップのもとで取り組まれた開発として,ARMv8 64ビットハイパフォーマンスプロセッサCavium ThunderXに対応したことが取り上げられています。Cavium ThunderXは1パッケージあたり最大48コアまでスケールするプロセッサで,今回これを2ノードで動作させることに成功したとしています。合計で1マザーボードあたり96コアを実現したことになります。

ARMはこれまで消費電力の低さなどからモバイルデバイスや組み込み機器などで使われてきましたが,64ビット化されメニーコア化が進んだ現在の世代および次の世代からは高性能やアプライアンスやデータセンターでの利用などが想定されています。メニーコアへの対応は今後FreeBSDでもますます重要になってくるところです。今回のThunderX対応は今後の動向も含めて興味深いものです。

ZFSアップデート

この四半期の間に多くのマージが実施され最新のコードにアップデートされました。このアップデートによって次のような機能が実現しています。

  • デフォルトの圧縮アルゴリズムをLZ4へ変更
  • より高速なsend/reveive機能を実現するようにプリフェッチ機能を改善
  • L2ARCで使用されるメモリの使用量を約50%削減
  • I/Oアグレゲーションの機能を向上
  • send/receiveストリームにおけるチェックサム機能をより細粒化
  • 多くのデータセットを内包したプールのインポートにかかる時間を短縮
  • プレディクティブプリフェッチをよりシンプルに変更

これら変更はすでに11-CURRENTにコミットされているほか,10-STABLEにマージを予定しているという説明があります。これら機能は11.0-RELEASEおよび10.3-RELEASEから利用できるようになりそうです。

FreeBSD勉強会 告知

第46回 11月20日(金)19:00~ The Design and Implementation of the FreeBSD Operating System (2nd Edition) 読書会 第11回目 P.121 The scheduler implements round-robin…~

The Design and Implementation of the FreeBSD Operating System (2nd Edition)の読書会です。読書会11回目の今回はハードカバーでP.121からです。D&I本がどういった本なのか読んでみたいという方,お気軽にご参加ください。参加申請はこちらから。

第47回 12月22日(火)19:00~ ライトニングトーク×FreeBSD忘年会’15!

今やっていることがある,実はこんな感じで運用している,困っていることがあるので助け求むなど,FreeBSDに関することを5分から10分程度にまとめて,その時発表したい方が発表する「ライトニングトーク×FreeBSD忘年会'15!」を開催します。

後藤からは発表の冒頭,5分~10分くらいでbhyveを使った仮想環境構築のデモンストレーションを行います。CentOSかOpenBSDあたりをon bhyveで使う方法をご紹介します。ひとりあたりの発表時間は,全体の発表人数を見つつ当割でいきます。時間に余裕があれば現場で飛び込みライトニングトークも大歓迎です。参加申請はこちらから。

コメント

コメントの記入