ネットワークファイルシステムとは、リモートホスト上のファイルシステムをマウントしたり、ローカルのファイルシステムをリモートホストからマウントできるようにする機能のことです。カーネル2.6では、以下のような強化が行われています。
NFS(Network File System)は、UNIXでファイルシステムを共有するためのプロトコルとして広く利用されています。カーネル2.6では、NFSに対して以下の機能が追加されています。
●NFSv4のサポート
カーネル2.6では、NFSの新バージョンであるNFSv4がサポートされます。現時点(カーネル2.5.60)では、NFSv4クライアント機能(注)が標準カーネルに取り込まれています。
注:NFSv4サーバ機能は現在開発中です。
http://www.citi.umich.edu/projects/nfsv4/
にあるパッチを適用することで、カーネル2.5でNFSv4サーバ機能を動作させることが可能です。
NFSv4は従来のNFSの設計を根本から見直し、広域ネットワークでの利用を前堤とした次のような機能強化が図られています。
注:NFS over TCPは、Experimentalですがカーネル2.4系にもバックポートされています。
NFSv4周りの機能は、サーバ機能/ACLのサポート、RPC Sec-GSSのデータ完全性保証/プライバシー機能など、まだまだ開発途上にある機能も多いのが現状です。しかし、これらの機能についても現在活発に開発が続けられており、近い将来利用できるようになると思われます。
カーネル2.6では、AFS(Andrew File System)が新たにサポートされます。
AFSは、1980年代に開発された広域分散ファイルシステムの一種で、大学などを中心に現在も広く利用されています。また、カーネル2.4から搭載されているCodaファイルシステムの先祖に当たるファイルシステムです。
NFSではリモート上のストレージのマウントポイントを各クライアントが決定するのに対し、AFSは同一のファイル階層をすべてのノードで共有します(図2)。
すでにAFSが動作している環境にLinuxマシンを追加する場合は、利用価値がある機能といえます。しかし、ノードの切断に対する耐故障制御など、AFSには不十分な点が多いため、新規に分散ファイルシステム環境を構築するのであればCodaファイルシステムの利用が適切かもしれません。
CIFS(Common Internet File System)は、Windowsのファイル共有などで使用されているプロトコルです。SMB(Server Message Block)の後継プロトコルであり、TCP/IP上に実装されています。
CIFS/SMBのサーバ機能(ローカルのファイルをWindowsからアクセスする機能)を実装しているのが、Sambaです。逆に、クライアント機能(Windows上のファイルをLinuxなどからアクセスする機能)の実装として、Sharity(旧Rumba)が知られています。
カーネル2.6では、CIFSのクライアント機能がカーネル自身に内蔵されます。これにより、通常のボリュームと同様、mountコマンドでWindowsの共有フォルダをマウントすることが可能となります。
例えば、IPアドレスが192.168.0.1上の共有名「public」をログイン名「george」(パスワードはmsmount)の権限でアクセスするように/mntにマウントする場合、次のようにコマンドを実行します。
$ mount //192.168.0.1/public /mnt -o user=george, password=msmount
カーネル2.6のストレージ関連の新機能の1つが、LVM(Logical Volume Manager)の刷新です(編注)。LVMとは、複数の物理ボリューム(ディスクパーティション)を論理的な単一のボリュームに見せかける技術です。カーネル2.4から搭載された機能ですが、カーネル2.6では根本から設計の見直しが行われ、LVM2となっています。
仕組みは大きく変わっていますが、LVM2でもLVM1とほぼ同様の管理コマンドを使用することができます。
編注:カーネル2.4のLVMとスナップショットの使い方については、LVMによる自動バックアップ・システムの構築を参照。
従来のLVMでは、カーネル内のLVM機構にスナップショット生成などの機能が組み込まれていました。
カーネル2.6のLVM2からは、Device-Mapper(注)と呼ばれる論理/物理デバイス間のマッピング機構がカーネルに組み込まれるようになります。スナップショット生成など、従来のLVMが持っていたより高度な機能は、LVM2の管理ツールで実現します。
注:論理ボリューム管理ツールのもう1つの雄であるEVMS(Enterprise Volume Management System)も、Device-Mapperを用いる方向で開発が進められています。EVMSについては、下記コラムを参照してください。
LVM2の管理ツール群は、必要に応じてDevice-Mapper機構を呼び出すことで論理ボリュームの設定/管理を行います(図3)。また、Device-Mapper機構の導入に伴い、論理デバイスに対する低レベル管理ツールとして、dmsetupが導入されます。
LVMのメタデータ(管理情報)のフォーマットが変更され、動作の堅牢性が向上しています。
また、LVM1互換機能を持っているので、LVM1の物理ボリュームもLVM2で扱えます。ただし、LVM1の物理ボリュームとLVM2の物理ボリュームを1つのボリュームグループに混在させることはできません。LVM1の物理ボリュームをLVM2のボリュームグループに追加する場合は、vgconvertを使用してフォーマットを変更する必要があります。
EVMS(Enterprise Volume Management System)は、OSが提供する論理ボリューム管理の共通フレームワークです。Linux、DOS、AIX、S/390など、複数の種類の物理パーティション/論理ボリュームを扱うことが可能です。ただし、現時点(カーネル2.5)でEVMSを利用するにはカーネル搭載のDevice-Mapperに加え、EVMS付属のパッチをカーネルに適用する必要があります。
EVMSでは、次の4種類のプラグインを必要に応じて追加できるようになっています。
●デバイスマネージャ
搭載デバイスの検出、デバイスの各種属性(セクタサイズなど)の取得およびLinuxのデバイスドライバが保持しているデバイス情報をEVMSのデバイス管理情報に変換する処理などを担当する部分です。
●セグメントマネージャ
論理ディスクボリュームを複数のセグメント(物理的に連続した単一のパーティション)に分割する処理を行います。
●リージョンマネージャ
複数のセグメントを単一のリージョン(論理的に連続したストレージ空間)に変換する処理を行います。
●EVMS機能部/EVMSアソシエイティブ機能部
EVMSが提供するボリューム管理機能を実現する部分です。EVMSのボリューム管理機能には、不良ブロックの再配置/ドライブリンク(複数のドライブを結合する機能)/暗号化/スナップショット生成などがあります。
以上、今回はストレージに関する機能について解説しました。次回の第4章では、LSM(Linux Security Module)やUML(User Mode Linux)といった新機能を中心に紹介し、カーネル2.6の全貌を締めくくりたいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.