「Ext4」の版間の差分
削除された内容 追加された内容
m r2.7.1) (ロボットによる 追加: fa:Ext4 |
m 外部リンクの修正 http:// -> https:// (git.kernel.org) (Botによる編集) |
||
(30人の利用者による、間の45版が非表示) | |||
1行目:
{{小文字}}
{{Infobox filesystem
| name = ext4
| developer = Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, [[セオドア・ツォー]], Eric Sandeen, Sam Naghshineh 他
| full_name = Fourth extended file system
| introduction_date = [[2006年]][[10月10日]]
| introduction_os = [[Linux]] 2.6.19
| partition_id = <tt>0x83</tt> ([[マスターブートレコード|MBR]])<br /> <tt>EBD0A0A2-B9E5-4433-<br />87C0-68B6B72699C7</tt> ([[GUIDパーティションテーブル|GPT]])
| directory_struct = テーブル, ツリー
| file_struct = ビットマップ, テーブル
| bad_blocks_struct = テーブル
| max_file_size = 16[[テビバイト|TiB]]
| max_files_no =
| max_filename_size =
| max_volume_size = 1[[エクスビバイト|EiB]]
| filename_character_set = <tt>NULL('\0')</tt>と<tt>/</tt>以外使用可能
| dates_recorded = 変更, 属性変更, アクセス, 作成, 削除
| date_range = 1901年12月14日から2514年4月25日
| date_resolution = ナノ秒
| forks_streams = 可能
| attributes = No-atime, append-only, synchronous-write, no-dump, h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete
| file_system_permissions = [[POSIX]]
| compression = できない
| encryption =
| single_instance_storage = 無し
| OS = [[Linux]]
}}
'''ext4'''(fourth extended file system)は、[[Linux]]の[[ファイルシステム]]で、[[ジャーナリングファイルシステム]]の一つである。[[ext3]]の後継のファイルシステムで、拡張機能を使っていない場合に限りext3としてマウントできる。1[[エクスビバイト|EiB]]までのストレージをサポートし、ファイルの断片化を防ぐextent file writingと呼ばれるシステムが導入される。ファイルのタイムスタンプは、ナノ秒単位で西暦1901年から2514年までの範囲をサポートする(ext3では秒単位で2038年まで)。
== 経緯 ==
[[ext3]]に対して後方互換性を保ちつつ、[[64ビット]]ストレージの制限を除き、パフォーマンスを向上させるために開発が始められた
最初の開発スナップショットはLinux 2.6.19に導入された。2008年10月11日には、ext4を安定コードとしたパッチがLinux 2.6.28のソースコードリポジトリに結合された<ref>{{cite web |title=ext4: Rename ext4dev to ext4 |publisher= Linus' kernel tree |url=
==特徴==
;大きなボリュームサイズとファイルサイズ
:ext4ファイルシステムは、最大1EiBまでのボリュームサイズ<ref>{{cite web|title=Migrating to Ext4 |url=http://www.ibm.com/developerworks/linux/library/l-ext4/ |accessdate=2008-12-14 | publisher = IBM | work = DeveloperWorks|archiveurl=https://web.archive.org/web/20080510122228/http://www.ibm.com/developerworks/linux/library/l-ext4/|archivedate=2008-05-10}}</ref>と、最大16TiBまでのファイルサイズをサポートする。
;エクステント
:
;後方互換性
:ext4ファイルシステムはext3およびext2に対する後方互換性を持つ。すなわち、ext3およびext2ファイルシステムをext4ファイルシステムとしてマウントすることができる。その場合でも、わずかにパフォーマンスの向上が見られる。なぜなら、ブロック確保アルゴリズムなどの新しい機能はext3やext2でも使用できるからである。
:ext3ファイルシステムは部分的にext4に対する前方互換性を持つ。すなわち、ext4ファイルシステムをext3パーティションとしてマウントできる(マウントするときは「ext3」をファイルシステムタイプとして指定する)。しかし、もしext4パーティションがエクステント(ext4の重要な新機能である)を使用しているなら、ext3としてマウントすることはできなくなる。
;永続的な事前確保
:ext4ファイルシステムはファイルのためのディスク空き領域の事前確保を可能にする。ほとんどのファイルシステムにおけるこれまでの方法論では、ファイルが作成されたときに予約されたスペースを0で埋める形で書き込まれる。
;遅延確保
:ext4ファイルシステムのパフォーマンス向上のテクニックとして、[[allocate-on-flush]]と呼ばれるものがある。これは''遅延確保''としても知られている。
;サブディレクトリの32000個制限の撤廃
:[[ext3]]ファイルシステムにおいては、1つのディレクトリに入れられるサブディレクトリ数が32,000個に制限されている。この制限がext4ファイルシステムでは
;ジャーナルのチェックサム
:ext4は信頼性を向上するため、ジャーナルにチェックサムを使用する。なぜならばジャーナルはディスクで最も使用されるファイルの一つだからである。この機能によってジャーナル過程の間ディスクI/Oの待機を安全に避ける事ができるという利点を持つ。これによりパフォーマンスが若干向上する。ジャーナルのチェックサムのテクニックは『IRON File Systems』というウィスコンシン州立大学の研究論文にインスパイアされたものである。(とりわけ
;オンラインのデフラグメンテーション
:e4defrag により、マウント中(オンライン)でのデフラグ
;より高速なファイルシステムチェック
:ext4において、確保されていないブロック群とi-nodeテーブル部は印をつけられる。これは[[e2fsck]]の実行時に全体のチェックを不要にし、ファイルシステムのチェックにかかる時間を大きく減少させる。この機能は2.6.24のLinuxカーネルで実装された。
;マルチブロックの確保
:ext3では、ファイルが追加される
;タイムスタンプの改良
:コンピューター
:
|url=https://www.redhat.com/archives/ext3-users/2006-October/msg00015.html
|title=Re: creation time stamps for ext4 ?
|author=Theodore Ts'o
|date=
|accessdate=2010-04-13
}}</ref>。そのため、ext4に保存された作成日時は、現在のところLinux上のユーザプログラムに対してstatx() APIによってのみ提供される<ref name="statx">{{cite web
}}</ref>▼
| url = https://lwn.net/Articles/718222/
| title = Extending statx()
| first = Jake | last = Edge
| date = 2017-03-31
| accessdate = 2019-04-20
▲}}</ref>。
== 欠点 ==
=== 遅延
遅延
このようなことが起こる典型的なシナリオは、[[fsync]]でディスクに書き出すことをせずにファイルの内容を書き換えるようなプログラムを使用する時である。実際に書き出しをする前にシステムがクラッシュすると、問題が起こる可能性がある。このような状況では、ext3のユーザーは、クラッシュ後に変更前か変更後のどちらかのデータがディスクに残されているということを期待することができた。一方、Linuxカーネル2.6.28のext4では、クラッシュ前にファイルの内容を消去するが新しいデータを書き出さず、結果としてデータが損失するということがしばしば見られた。
この問題に対処するためにfsyncを頻繁に使用すると、<code>data=ordered</code>フラグ(多くのLinuxディストリビューションではデフォルト)でマウントされたext3ファイルシステムでは深刻なパフォーマンス低下が起こる恐れがある。どちらのファイルシステムもしばらくの間使用されるだろうということを考えると、これはエンドユーザーアプリケーション開発者にとって非常に厄介な問題となる。このため、セオドア・ツォーは、上記のような場合の遅延
このパッチはメインライン・カーネル2.6.30に導入されているが、様々なディストリビューションは2.6.28や2.6.29へとバックポートすることができる。例えば、[[Ubuntu]]はバージョン9.04 Jaunty Jackalopeでカーネル2.6.28にそのパッチを導入した。
=== Linuxカーネルの機能への影響 ===
ext4はLinuxに限れば標準的なファイルシステムであるため、実際にはext4以外では使用できない機能があたかもファイルシステムに依存しないLinuxカーネルの機能として追加されてしまうことがある。実例として<code>fallocate()</code>がある。これはext4におけるファイルブロックの事前確保を実装したシステムコールであるが、これを期待通りのセマンティクスにて実装したファイルシステムはext4のみである。この影響で、[[POSIX]]では類似機能のシステムコールを<code>posix_fallocate()</code>として別に仕様に入れたり{{Efn2|<code>posix_fallocate()</code>は対象のファイルシステムが<code>fallocate()</code>をサポートしていない場合、実装依存で<code>fallocate()</code>のセマンティクスの一部をエミュレートすることができる。ただし、常にそうしなくとも構わない。<code>fallocate()</code>は対象のファイルシステムがこれをサポートしていない場合、常にエラーとする。}}、[[ZFS]]にて[[ZFS#制限事項|<code>fallocate()</code>が本質的に実装できない]]ことが機能不足として指摘されてしまう結果となった。
==ディストリビューション==
96 ⟶ 93行目:
== 脚注 ==
=== 注釈 ===
{{Notelist2}}
=== 出典 ===
{{Reflist}}
== 関連項目 ==
103行目:
== 外部リンク ==
*
* [
* [
* [
*
*
*
* [
* [
* [https://www.accum.se/~bosse/ Windows用ドライバ]
{{ファイルシステム}}
{{DEFAULTSORT:EXT4}}▼
{{Computer-stub}}
▲{{DEFAULTSORT:EXT4}}
[[Category:Linuxのファイルシステム]]
[[Category:2006年のソフトウェア]]
|