年々大容量化するディスクや仮想ディスクなどの普及により、大容量のストレージを生かすファイル・システムが求められている。高い信頼性とスケーラビリティを実現した新しいファイルシステムReFSについて解説する。
Windows Server 2012では、新しく「ReFS(Resilient File System。復元性のあるファイル・システム)」というファイル・システムが導入されている。Windows NTの登場以来、ずっとNTFSがメインのファイル・システムとして使われてきたが、より大容量のストレージ・サポートや信頼性の向上などを目指して、新たに開発されたのがReFSである。今回はこのReFSについて見ていく。
ReFSは、信頼性と耐障害性の向上や、大容量のストレージ・サポートなどに重点を置いて設計された新しいファイル・システムである。特に信頼性とスケーラビリティを最大限重視して再設計されている。ファイル・システムが壊れてデータがアクセスできなくなるという事態を最も避けなければならないものと考え、ディスクの更新には、効率よりも信頼性を重視する方法を採用している。たとえ障害が発生してもその影響を局所的な部分にとどめたり、可能な限り破損したデータを救出(サルベージ)したりできるようにし、修復中でもファイル・システム全体をオフラインにしない、ファイルのメタ・データにはチェックサムを付け(ユーザー・データに付けることも可能)、常にファイル・システム・データの正当性をチェックする、構造をシンプルにする、などの特長を持っている。ReFSの主な特長を次に示しておく。
機能改善点 | 内容 |
---|---|
データの整合性の維持(インテグリティ) | ・メタデータの障害の検出(常時)とユーザー・データの障害の検出(オプション) ・記憶域プールとの連携による障害の自動検出と修復(事前予防的な障害の検出と修復) |
スケーラビリティ | ・Tbytesクラスの物理ディスクや、Pbytes(=Gbytesの1024倍)やEbytes(=Pbytesの1024倍)といったさらに巨大なサイズのファイルの処理 |
アベイラビリティ | ・耐障害性能力の向上 ・障害の局所化とサービスの継続(障害が発生して修復できなくても、それ以外の部分はオンラインでサービスを継続) ・chkdskが不要なアーキテクチャ(ファイル・システムの障害チェックと修復はバックグラウンドで随時行われ、chkdskのような長期のオフライン作業は不要) |
アプリケーション互換性の維持 | ・NTFSとの互換性の最大限の維持 |
ReFSの機能概要 |
ReFSの概要については、以下のサイトも参考にしていただきたい。データの自動修復機能を持つデータベース・システムを使う場合など、ReFSで自動的な整合性維持の処理が不要なら、APIを使って特定のファイルを整合性チェックの対象から外すこともできる。
以下、特徴的な機能をいくつか解説する。
ReFS内には、ファイルのユーザ−・データを保存する領域のほかに、フォルダなどの管理用のメタ・データ領域があるが、それらにチェックサムを付け(ユーザー・データ用のチェックサムはオプション)、読み出し時には、データの内容に不整合が起こっていないかどうかを常にチェックする。これにより、データの誤りを検出し、可能ならデータの修復も行う。ReFSのデータの修復機能は、Windows Server 2012の記憶域プール機能と連動しており(「記憶域プール」については、Windows 8連載の第14回「ディスクを仮想化する記憶域プール機能」参照)、ミラー記憶域上にReFSボリュームを作成しておくと、エラー発生時にはミラー記憶域を構成する各ディスクから複製された情報を読み出して、データの修復(ミラー・データの読み出しと別の場所への再書き込み)を行う。さらにReFSでは整合性をチェックするプロセス(「スクラバ」と呼ばれる)が定期的にディスクをスキャンすることにより、より積極的にディスクの検証と修復を行う。
またエラーが発生した場合の修復処理でも、処理を局所化することにより、ボリューム全体を止めることなく、オンラインのまま修復を行う。これにより、アベイラビリティが向上する。
ReFSではユーザー・データやメタ・データの書き込みに、「書き込み時割り当て」と呼ばれる方法を利用して、データ書き込み(更新)時の信頼性を向上させている。これは、ファイルに新しいデータを書き込む場合に、元のクラスタの場所に上書きするのではなく、新しい別のクラスタ(シャドウ・ページ)を割り当てて書き込むという方式である。データを上書き方式で更新していると、書き込み途中の電源断などの障害が発生した場合、書き込みが中途半端になって、どこまで書き込んだのかが分からなり、元のデータと上書きしたデータの両方を失ってしまう可能性がある。これに対して新しいデータ領域を割り当てて書き込む方式では、書き込みが完全に完了してから、新しい領域を指すようにデータ構造などを変更する。これにより、データ更新時の不整合を極力抑えられるし、関連するデータ・ブロックをなるべく集中するように割り当てておけば、ディスク読み出しパフォーマンスの向上も期待できる。
ReFSでは、NTFSの場合よりも大きなストレージやボリューム、ファイル・サイズのサポートを実現している。例えばNTFSの内部ではクラスタ番号を32bitで保持していたため、ボリューム・サイズの上限は256Tbytesとなっていたが(この場合、クラスタ・サイズは64Kbytesする必要がある)、これを64bit幅に拡大することにより、事実上、ほぼ無制限のディスク・サイズがサポートされることになる。実際にこのサイズの物理ディスクを使うことはないだろうが、例えばスパース・ファイル*1にして大量のデータを保存するというような用途なら、論理的なファイル・サイズはいくらあっても、大きすぎることはないだろう。Windows Server 2012において、ReFSとNTFSでサポートされているファイル・システムの諸元を次に記す。
*1 スパース・ファイル(疎なファイル)
「スパース・ファイル(sparse file)」、ファイル・サイズとしては大きいが、実際にデータが書き込まれている部分は少なく、ほとんどの領域が未割り当て状態となっているようなファイルのこと。ディスクには実際に使われている部分だけが記録されるので、必要なディスク・サイズを大幅に削減できる。データベースなどで使われる。ReFSではTbytesやPbytesといったファイル・サイズがサポートされているので、スパース・ファイルは有用性が高い。こちらの解説も参照。
項目 | ReFS | NTFS |
---|---|---|
ファイル・サイズ・フィールド | 64bit幅 | 64bit幅 |
最大ファイル・サイズ | 理論上は2の64乗まで(Windows Server 2012では255Tbytesまでだった) | 255Tbytesまで(以前のWindows OSでは16Tbytesまで) |
クラスタ・サイズ | 理論上は物理セクタ・サイズ以上の任意のサイズ(Windows Server 2012の場合は64Kbytesのみ) | 512〜64Kbytes(256Tbytesのボリュームの場合はクラスタ・サイズは64Kbytesにすること) |
クラスタ番号フィールド | 64bit幅 | 32bit幅 |
最大ボリューム・サイズ | 理論上は2の64乗×クラスタ・サイズまで | 255Tbytes(クラスタ・サイズ=64Kbytesの場合) |
1フォルダ内のファイル数 | 2の64乗ファイルまで | − |
1ボリューム内のディレクトリ数 | 2の64乗フォルダまで | − |
ファイルID | 128bit | 64bit |
NTFSとReFSにおけるファイル・システムの諸元 ReFSではクラスタ番号やファイル・サイズのフィールドなどがすべてが64bit化されているので、理論的にはほぼ無制限だが、現状のWindows Server 2012ではこのようにいくらかの制限がある。将来は緩和される可能性がある。 |
ReFSは、NTFSとはAPIレベルで高い互換性を維持しようとしているが、その内部アーキテクチャの違いなどにより、いくつかの機能はサポートされていないし、MFT(マスター・ファイル・テーブル。ファイルの割り当て情報などを保存するメタデータ)をアクセスするようなユーティリティも利用できない。そのため現在のReFSではNTFSを完全に置き換えることはできないし、Windows Server 2012のブート/インストール用のボリュームとしては(今のところ)利用することもできない。基本的には、高い信頼性が要求される大容量のデータ・ボリューム用ファイル・システムとして利用されることを想定している。ちなみに、ReFSはWindows 8では利用できない。
NTFSとReFSの主な機能の違いは次の通りである。基本的な機能は備えているが、(現状では)圧縮や暗号化、クォータ制限などの機能がサポートされていない。そのため、ユーザー・データ用として使うよりも、データベースや共有のファイル・サーバ、仮想マシン用のディスクやインストール・イメージの保存といった、容量が大きくなりがちなファイルを大量に保存するといった用途に向いていると言えそうである。
機能 | ReFS | NTFS |
---|---|---|
ファイル名における大文字/小文字の区別 | ○ | ○ |
ファイル名の大文字/小文字種別の保持 | ○ | ○ |
Unicodeファイル名 | ○ | ○ |
ACL(アクセス制御リスト)の保持と強制 | ○ | ○ |
スパース・ファイル(※1) | ○ | ○ |
リパース・ポイント | ○ | ○ |
FileIDでのオープン | ○ | ○ |
USNジャーナル | ○ | ○ |
ファイル単位の圧縮 | × | ○ |
ディスク・クォータ | × | ○ |
オブジェクトID | × | ○ |
暗号化ファイル・システム | × | ○ |
名前付きストリーム | × | ○ |
トランザクション | × | ○ |
ハードリンク | × | ○ |
拡張属性 | × | ○ |
8.3形式の短い名前 | × | ○ |
MFTへのアクセス | ×(ReFSにはMFTはない) | ○ |
ファイル・サーバ・リソース・マネージャによる管理 | × | ○ |
NTFSとReFSのサポート機能の違い ReFSとNTFSにおける機能の違い。ReFSはNTFSとなるべく互換性を持つように設計されているが、現状のWindows Server 2012では一部の機能は実装されていない(将来どうなるかは未定)。そのため、これらの機能を使う場合は注意が必要である。 |
ReFSで実装されている、APIレベルでのNTFSとの互換性情報については、以下の情報を参考にしていただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.