第9回 FreeBSD勉強会においてGEOMの状態をグラフ化する方法の紹介がありました。実際のどのようなGEOMクラスの組み合わせでシステムが構成されているのかを知る上で有用な機能ですので、FreeBSD Daily Topicsでも取り上げようとおもいます。
FreeBSDでは「物理デバイス」から「/dev/の下にデバイスファイルを生成」するまでの段階にGEOMと呼ばれるモジュール化されたフレームワークを導入しています。GEOMクラスと呼ばれるモジュールを組み合わせてさまざまな機能を追加することができます。たとえば、ディスクのデータを丸ごと暗号化したり、複数のディスクを統合して扱ったりといったことができます。
ユーザは意識していなくても、デフォルトの状態でもすでにGEOMが利用されています。カーネルがデバイスを認識した段階で生成される仕組みになっており、ハードディスクなどが1つでも接続され認識されているなら、最低でも2つのGEOMクラスが使われていることになります。どういった組み合わせでGEOMが使われているかはkern.geom.conftxtのsysctl値で確認することができます。次の出力結果はデフォルトのままセットアップされたFreeBSD 9.0-RELEASEでの出力です。
このデータはXML形式でも提供されています。kern.geom.confxmlで確認できます。
このままでは構成がよくわかりませんが、Graphviz形式でもデータが提供されていますので、ここからグラフを生成することができます。graphics/graphvizをインストールした上で、次のようなコマンドでグラフを生成できます。
次のグラフがデフォルトのままセットアップしたFreeBSD 9.0-RELEASEのGEOMの構成です。/dev/以下にデバイスファイルを生やしたり、パーティション情報に対応するようにGEOMクラスが使われていることがわかります。四角がGEOMクラス、楕円がGEOMコンシューマ、六角形がGEOMプロバイダです。
ちょっと複雑な構成をとったりすると、たとえば次のようなグラフが得られます。ZFSが追加されていたり、より細かくパーティションが区切られていることなどがわかります。
第9回の勉強会はGEOMやUFSの技術について基礎的な部分の説明がありました。次の勉強会である第10回では実際にどのようにコマンドを使うのかという実践的な内容の紹介があります。すでに申込はじめていますので、興味がある方はご参加ください。さらに先の第11回についてもすでに参加申込の受付を開始しています。