ファイルシステム/ボリューム管理機能の進化:全貌を現したLinuxカーネル2.6(第3章)(1/2 ページ)
カーネル2.4ではext3やLVMが取り込まれたが、カーネル2.6ではさらなる進化を遂げようとしている。新ファイルシステムやネットワークファイルシステム、LVM2はLinuxに何をもたらすのだろうか?(編集局)
第1章、第2章と続いたカーネル2.6の概要も、これで3回目です。今回は、新ファイルシステムやボリューム管理機能など、ストレージ関係に焦点を当てて解説します。
ファイルシステムの機能強化
ファイルシステム関連では、以下の機能が追加されています。
- 商用ファイルシステムのサポート
- ACLのサポート
- ネットワークファイルシステムの強化
■商用ファイルシステムのサポート
カーネル2.6では、ReiserFS/ext3などLinux独自のジャーナリングファイルシステムに加え、XFSとJFS(Journaled File System)という商用ファイルシステムが標準カーネルに取り込まれます。
XFSはSGIのIRIX、JFSはIBMのAIXやOS/2で利用されているファイルシステムです。どちらも商用利用実績のある、大規模ストレージ向けのファイルシステムであり、総じて次のような特徴を持っています。
●ジャーナリングファイルシステム
ファイルシステムへの操作をジャーナルとしてディスク上に保存し、後からリプレイすることで停電などによるファイルシステムの一貫性異常を回避できます。XFS/JFSは、ファイルシステムの管理情報(メタデータ)のジャーナリングだけを行います。これにより、再起動時のファイルシステムチェックを回避でき、システムの起動時間の短縮が図れます。
●大規模ストレージ対応
4Tbytes以上の大きさのファイルシステム(パーティション)を作成できるため、大容量データを扱うようなシステムで使用することが可能です。カーネル2.6はブロックI/Oの改善(編注)も行われて大容量ファイルシステムを構築できるようになったので、商用ファイルシステムの大容量ストレージ機能をフルに活用できます。
編注:詳しくは、全貌を現したLinuxカーネル2.6[第1章]を参照。
●大容量ファイルサイズ対応
ビデオ配送システムやビデオキャプチャシステムの普及に伴い、ファイルサイズは年々増大化する傾向にあります。XFS/JFSは4Tbytes以上のファイルサイズをサポートしており、大規模データベースやHDDレコーダ、動画配信などの分野での利用が期待できます。
●Posix ACLや拡張属性のサポート
Posixで規定されているACL(Access Control List:後述)や拡張属性など、商用UNIXで一般に利用されている機能を使用することができます。これにより、商用UNIXを前提にこれらの機能を使用しているシステムをLinuxに移行させることも可能となります。
●オンラインリサイズ機能のサポート
ファイルシステムがあるパーティションのサイズをシステム実行中に変更する機能をオンラインリサイズといいます。現在はXFSでオンラインリサイズ機能が利用可能です。ほかのファイルシステム(JFS/ext2/ext3)でも、同機能のサポートが予定されています。
ext3/ReiserFS/JFS/XFSの各ファイルシステムの機能比較を表1に示します。
ext3 | ReiserFS | JFS | XFS | ||
---|---|---|---|---|---|
ジャーナリング対象領域 | メタデータ+データ | メタデータ+データ (対応予定) |
メタデータ | メタデータ | |
ファイルシステムの最大サイズ | 16Tbytes | 16Tbytes | 4Pbytes | 16Ebytes | |
ファイルの最大サイズ | 4Tbytes | 16Tbytes | 16Tbytes | 16Tbytes | |
ACL/拡張属性の使用 | 可 | 不可 | 可 | 可 | |
オンラインリサイズ | 対応予定 | なし | 対応予定 | あり | |
表1 カーネル2.6におけるジャーナリングファイルシステムの比較 |
■Posix ACLのサポート
カーネル2.6から、ext2/ext3/JFS/XFSの各主要ファイルシステムでPosix ACLがサポートされます。ACLは、WindowsやAIX、Solaris、IRIXなどの商用OSではすでに一般的に利用されており、エンタープライズ分野で使用するうえで必須の機能といえます。
ACLとは、任意のユーザーに任意のアクセス権を設定するアクセス制御機能です。これは、ファイルにアクセス可能なユーザー(またはグループ)とユーザーに認可されるアクセス権の組からなるリストをファイルシステム内に保持することで実現します。カーネルは、アクセス要求とACLに含まれるユーザーのアクセス権を比較し、アクセスの可否を決定します。
従来のLinuxは、古典的なUNIXと同様に、Owner/Group/Public制御によるアクセス制御しかできませんでした。これは、ファイルにアクセスするユーザーを以下の3種類に分類し、それぞれに対して認可する手段を設定するものです。
- ファイルの所有者(Owner)
ファイルを作成したユーザーまたはchownコマンドなどによりファイルの所有者として設定されたユーザー。 - ファイルが所属するグループ(Group)
ファイルのグループ属性で指定されたグループのメンバー。 - そのほかのユーザー(Other)
ファイルの所有者でもファイルが所属するグループのメンバーでもないユーザー。
Owner/Group/Public制御では、ファイルの所属グループが1つしかないため、任意のユーザーに対して異なる認可を与えることができないという問題があります。
それに対してACLを用いたアクセス制御では、(従来、Otherに属していたユーザーを含め)任意のユーザーに任意のアクセス権を設定することが可能となります(図1)。これにより、従来よりも複雑なセキュリティ方針に基づくアクセス制御を実現できるようになります。
●ext3ファイルシステムでの利用例
ext3ファイルシステムでACLを利用する場合を例に、具体的な設定方法を紹介します。ext3ファイルシステムでACLを設定するには、getfacl/setfaclコマンド(注)を用います。
注:これらのコマンドはfile-utilsに統合される予定です。
例えば、ユーザーgeorgeに対してfile1.txtの読み書きを許可する場合、setfaclコマンドを以下のように実行します。
$ setfacl -m u:george:rw file1.txt
ACLの参照には、getfaclコマンドを用います。
$ getfacl file1.txt # file: file1.txt # owner: kato # group: users user::rwx group::rwx other::r-x user:george:rw
Copyright © ITmedia, Inc. All Rights Reserved.