fc2ブログ
このブログは、日々頭の中に蓄積されては薄れていく技術情報を書き留めておく為のものです。
Linuxエンジニア日記
ext4について
2008-12-29-Mon  CATEGORY: Linux
Linux関連トピック中心のブログにするつもりでしたが
気付いたらあんまりLinux関連の記事をUPしてませんでした。。

なので今日は珍しくLinuxの話題を一つ。

karnel 2.6.19からリリースされているext4ですが、
世間一般にはあまり浸透してないようですね。

(ext4が既にリリースされている事を知っている人自体私の周りでもあまりいませんでした。。)

かくいう私も一度だけ話題作りの検証をしてみただけです。

検証したのが結構前で情報も乏しかったので今回は
とりあえずext4の特徴について纏めてみたいと思います。

まず初めにですが、ext4は今も開発中ですので機能リストは常に流動的です。
正確に把握しておきたいのであればsourceを読むかkarnel watchしておいて下さい。

今回は現時点の最新stable版2.6.28を中心に特徴を纏めます。

1. 16TB越ファイルシステムの利用(e2fsprogsではまだ未サポート)
  1EB(100万TB)まで利用可能らしい、誰が使うんでしょうかと言いたくなる数字です。
  ただ大規模なディスクアレイを組むシステムには(将来的にも)有用かも知れませんね。
  ちなみに現行主流であるext3は最大約8TB(or16TB)です。

2. メタデータのオーバヘッドを減らすエクステントフォーマット
  ext3ではブロックアルゴリズムで4Kbytesなどの単位(ブロック)に分けてディスク領域を
  管理しています。ブロックアルゴリズムではディスク上の実アドレスを特定する時サイズが
  小さめであれば直接参照できますが、サイズが大きくなると間接ブロックなるものを使用して
  間接参照しなければいけません。間接ブロックは使用するブロック数を減らせるのでそういう
  意味では非常に有難いのですが、直接参照と比べるとデータブロックへのアクセス回数も
  増えますのでパフォーマンスが低下します。さらに、サイズが大きくなるにつれ、一段間接、
  二段間接と多段になっていきますのでよりパフォーマンスが悪化します。
  そこで、ext4では「エクステント」方式を採用しています。
  エクステントとは、連続したブロック領域には一つのアドレス(開始アドレス)だけをサイズ、
  オフセットなどと一緒に論理セットとして渡してあげアドレッシングを効率化する方式です。
  ファイルサイズの大きいファイルの削除時などはこれによって削除時間が短縮できます。
  その他にもfsckの時間が短くなるといった利点もあります。

3. ファイル割り当ての改善 (複数ブロックアロケーション)
  ext3では連続データを書き込む時に都度空きブロックを探して割り当てていました。
  しかしext4ではブロックアロケーター自身が書込みデータ量に応じて必要となる合計
  ブロック数を認識し、単一コールで複数ブロックを一気に割り当てる事が可能になりました。
  これにより、ブロックアロケートによるオーバヘッドを緩和する事が出来ます。

4. 32000 のサブディレクトリ数制限の撤廃
  ext3では32000までとサブディレクトリの制限がありましたが、ext4では撤廃されました。

5. mtime, atime, ctime, create time(作成時刻) に nsec 単位のタイムスタンプ
  ext3やたいていファイルシステムでは秒単位のタイムスタンプですが、
  ext4ではナノ秒単位まで拡張します。

6. ディスク上での inode バージョンフィールド (NFSv4、Lustre)
  これらのファイルシステムで利用される64bitのバージョン番号が導入されました。

7. uninit_bg 機能による e2fsck 時間の削減
  ファイルシステム作成時に全てのグループを初期化しないので、
  ファイルシステム作成時間が短くなります。
  また、未初期化(未使用)部分はfsck時にスキップされるので、fsckの時間も短縮されます。

8. 頑健さと性能を向上させるジャーナルチェックサム機能
  ジャーナルデータにチェックサム機構を取り入れました。
  これにより信頼性とパフォーマンスが向上します。

9. 永続的事前割り当て(ストリーミングメディアやデータベース向け)
  実際の動作前に、予めアプリケーションが使用予定の領域を確保する場合、
  ほとんどのファイルシステムは確保済みだが未使用の領域には0を書き込みます。
  ext4はこの方法を使わず一括してディスク割当てが行われるので、フラグメンテーション
  を抑えられる。一部のデータベースやストリーミングではパフォーマンスが向上する。

10. 巨大ファイルのサポート
  ext3では2TBであった最大ファイルサイズが、ext4では16TBになりました。

11. 遅延割当て
  ext3では、データがバッファに書き込まれる際にディスク空間(ブロック)の割当てが
  行われていました。これに対してext4ではバッファからディスクに書き込まれる際に
  割当てが行われるようになったので、ディスク上でより連続した領域への保存が出来ます。
  また、短期間やテンポラリなファイルは物理ディスク空間が割り当てられる前に消去される
  可能性もあるので、パフォーマンスも向上します。

ざっとあげてみました。
この他にもflex_bgといった機能や将来的には
オンラインデフラグツールなんかもあるよとのことです。
(オンラインデフラグツールは実際にはもうありますがテストなどが充分ではないようです)

興味がある方は是非kernel sourceを読んで見てください。

詳解 Linuxカーネル 第3版詳解 Linuxカーネル 第3版
(2007/02/26)
Daniel P. BovetMarco Cesati

商品詳細を見る
メモリ管理とプロセス・スケジューリングの項が増補されている。プロセス管理、ファイルシステム、メモリ管理、割り込みハンドラ、同期などソースを交えて説明があるので結構分かりやすい。

スポンサーサイト



ページトップへ  トラックバック0 コメント0
コメント

管理者にだけ表示を許可する
 
トラックバック
TB*URL
<< 2023/05 >>
S M T W T F S
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -


余白 Copyright © 2005 Linuxエンジニア日記. all rights reserved.