ファイルシステム/ボリューム管理機能の進化:全貌を現したLinuxカーネル2.6(第3章)(2/2 ページ)
カーネル2.4ではext3やLVMが取り込まれたが、カーネル2.6ではさらなる進化を遂げようとしている。新ファイルシステムやネットワークファイルシステム、LVM2はLinuxに何をもたらすのだろうか?(編集局)
ネットワークファイルシステムの強化
ネットワークファイルシステムとは、リモートホスト上のファイルシステムをマウントしたり、ローカルのファイルシステムをリモートホストからマウントできるようにする機能のことです。カーネル2.6では、以下のような強化が行われています。
- NFS(Network File System)の強化
- AFS(Andrew File System)のサポート
- CIFS(Common Internet File System)クライアント機能のサポート
■NFSの強化
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の設計を根本から見直し、広域ネットワークでの利用を前堤とした次のような機能強化が図られています。
- サーバ/クライアント共通の改善点
- 複合RPCのサポート
1回のRPC(遠隔手続き呼び出し)で、複数のファイル操作を行う機能です。 - lock機構の改善
NFSv4では、ファイルのロック操作(LOCKオペレーション)がNFSの一部として取り込まれます。これにより、従来NFSの運用に必要であったlockd(Network Lock Managementプロトコルに基づくロック管理デーモン)が不要になります。 - セキュリティの強化
GSS-APIによる認証、電子署名によるデータ改ざんの検出、暗号化などを行う機能です。
- 複合RPCのサポート
- クライアント側の改善点
- キャッシュを用いたデリゲーション
クライアント側に保持しているキャッシュを用いてopenやlockを行うことで、サーバへのアクセス回数を軽減することが可能です。これにより、処理の高速化およびネットワーク負荷の軽減が期待できます。 - RPC Sec-GSSのサポート
RPC Sec-GSSはNFSv4で必須とされているセキュリティ機能で、データの完全性チェックや認証方法などを規定しています。カーネル2.5.58から、クライアント側のRPC Sec-GSSの認証機能がサポートされるようになりました。なお、RPC Sec-GSS自体はNFSv3でも使用可能です。 - NFS over TCPのサポート
すでに、SolarisなどのシステムではTCP上のNFSがデフォルトになっていますが、LinuxでもNFS over TCP機能がサポートされます(注)。NFS over TCPとは、NFSのプロトコルをTCP上で実現する機能です。パケットの再送制御などにかかるオーバーヘッドを軽減することができるため、パケットロスが発生しやすい環境での動作が軽快になるという利点があります。
- キャッシュを用いたデリゲーション
注:NFS over TCPは、Experimentalですがカーネル2.4系にもバックポートされています。
NFSv4周りの機能は、サーバ機能/ACLのサポート、RPC Sec-GSSのデータ完全性保証/プライバシー機能など、まだまだ開発途上にある機能も多いのが現状です。しかし、これらの機能についても現在活発に開発が続けられており、近い将来利用できるようになると思われます。
■AFSのサポート
カーネル2.6では、AFS(Andrew File System)が新たにサポートされます。
AFSは、1980年代に開発された広域分散ファイルシステムの一種で、大学などを中心に現在も広く利用されています。また、カーネル2.4から搭載されているCodaファイルシステムの先祖に当たるファイルシステムです。
NFSではリモート上のストレージのマウントポイントを各クライアントが決定するのに対し、AFSは同一のファイル階層をすべてのノードで共有します(図2)。
すでにAFSが動作している環境にLinuxマシンを追加する場合は、利用価値がある機能といえます。しかし、ノードの切断に対する耐故障制御など、AFSには不十分な点が多いため、新規に分散ファイルシステム環境を構築するのであればCodaファイルシステムの利用が適切かもしれません。
■CIFSクライアント機能のサポート
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
論理ボリュームマネージャ(LVM)の刷新
カーネル2.6のストレージ関連の新機能の1つが、LVM(Logical Volume Manager)の刷新です(編注)。LVMとは、複数の物理ボリューム(ディスクパーティション)を論理的な単一のボリュームに見せかける技術です。カーネル2.4から搭載された機能ですが、カーネル2.6では根本から設計の見直しが行われ、LVM2となっています。
仕組みは大きく変わっていますが、LVM2でもLVM1とほぼ同様の管理コマンドを使用することができます。
編注:カーネル2.4のLVMとスナップショットの使い方については、LVMによる自動バックアップ・システムの構築を参照。
■Device-Mapper機構を用いた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のメタデータの変更
LVMのメタデータ(管理情報)のフォーマットが変更され、動作の堅牢性が向上しています。
また、LVM1互換機能を持っているので、LVM1の物理ボリュームもLVM2で扱えます。ただし、LVM1の物理ボリュームとLVM2の物理ボリュームを1つのボリュームグループに混在させることはできません。LVM1の物理ボリュームをLVM2のボリュームグループに追加する場合は、vgconvertを使用してフォーマットを変更する必要があります。
コラム カーネル2.6に取り込まれなかったEVMS
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.
関連記事
- 連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします - 連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する - 特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する - 特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態
Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する - 特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 - Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った - カーネル関連記事一覧