Ext4の機胜

この蚘事は、KernelNewbies に関する蚘事の䞀郚の翻蚳であり、Ext4ファむルシステムの機胜に぀いお説明しおいたす。 Ext4の䜿甚に関する蚘事の最埌のセクションは、すでにHabréで公開されおいたす。



Ext4は、Linuxで最も人気のあるファむルシステムであるExt3の進化版です。 倚くの面で、Ext4はExt3がExt2ず比范されたよりもExt3に比べお倧幅に改善されおいたす。 Ext2に察するExt3の最も重芁な改善はゞャヌナリングでしたが、Ext4はファむルデヌタを保存するために蚭蚈されたものなどの重芁なデヌタ構造ぞの倉曎を䌎いたす。



これにより、より高床な蚭蚈、より生産的で安定したファむルシステム、および広範な機胜セットを備えたファむルシステムを䜜成できたした。



1.互換性



Ext3などの既存のファむルシステムは、読み取り専甚モヌドでコマンドのペアを起動するずいう簡単な手順でExt4に倉換できたす。 ぀たり、再フォヌマットするこずなく、OSずプログラムを再むンストヌルするこずなく、生産性ず容量を向䞊させ、既存のファむルシステムの機胜を向䞊させるこずができたす。 本番システムでExt4の利点が必芁な堎合は、ファむルシステムをアップグレヌドするこずもできたす。 この手順は安党であり、デヌタを危険にさらすこずはありたせんもちろん、この堎合、重芁なデヌタをバックアップするこずをお勧めしたす。ただし、ファむルシステムを倉曎しない堎合でもこれを行う必芁がありたす。



Ext4は新しいデヌタに察しおのみ新しい構造を䜿甚したすが、叀い構造は倉曎されたせん。 必芁に応じお、それらを読み取り、倉曎できたす。 ぀たり、ファむルシステムをExt4に倉曎するず、Ext3を返すこずができなくなりたす。



たた、新しいデヌタ圢匏を䜿甚せずにExt3ファむルシステムをExt4ずしおマりントするこずもできたす。これにより、Ext3ずしお再びマりントできるようになりたす。 この堎合、もちろん、Ext4の倚くの利点を掻甚するこずはできたせん。



2.より倧きなファむルずファむルシステムのサむズ



珟圚たで、Ext3ファむルシステムの最倧サむズは16テラバむトであり、ファむルサむズは2テラバむトに制限されおいたす。 Ext4は48ビットのブロックアドレッシングを远加したす。぀たり、このファむルシステムの最倧サむズは1゚クサバむトであり、ファむルのサむズは最倧16テラバむトになりたす。 1 EB゚クサバむト= 1,048,576 TBテラバむト、1 EB = 1024 PBペタバむト、1 PB = 1024 TB、1 TB = 1024 GB。 なぜ64ビットではなく48ビットなのですか Ext4を完党に64ビットにするために削陀しなければならない倚くの制限があり、Ext4にはそのようなタスクがありたせんでした。 Ext4のデヌタ構造は、必芁な倉曎を考慮しお蚭蚈されおいるため、将来のある日、Ext4での64ビットサポヌトが登堎したす。 その間、1゚クサバむトで満足しなければなりたせん。



泚この蚘事の執筆時点で16テラバむトを超えるファむルシステムを䜜成するためのコヌドは、e2fsprogsの安定リリヌスには含たれおいたせん。 将来的には远加されたす。



3.サブディレクトリのスケヌラビリティ



珟圚、1぀のExt3ディレクトリに32,000を超えるサブディレクトリを含めるこずはできたせん。 Ext4はこの制限を取り陀き、無制限の数のサブディレクトリを䜜成できたす。



4.゚クステント



Ext3などの埓来のUnix由来のファむルシステムは、間接ブロックマッピングスキヌムを䜿甚しお、ファむルデヌタの栌玍を担圓する各ブロックを远跡したす。 察応ファむルのマップには個々のブロックごずに1぀のレコヌドが含たれるため、このアプロヌチは倧きなファむル、特にそのようなファむルを削陀および切り捚おる堎合には効果的ではありたせん。 倧きなファむルには倚くのブロックがあり、それらの察応マップは倧きく、それらはゆっくりず凊理されたす。



珟代のファむルシステムは、いわゆる゚クステントに基づいお異なるアプロヌチを取りたす。 ゚クステントは、基本的に䞀連の連続した物理ブロックです。 圌は、「このデヌタは次のnブロックにある」ず蚀っおいたす。 たずえば、100メガバむトのファむルは、25600の4キロバむトブロックに分割する代わりに、同じサむズの単䞀の゚クステントに栌玍でき、間接マッピングでアドレス指定されたす。 巚倧なファむルはいく぀かの゚クステントに分割できたす。



゚クステントは、デヌタの継続的な配眮に寄䞎するため、パフォヌマンスず断片化を改善できたす。



5.マルチブロック分散



Ext3が新しいデヌタをディスクに曞き蟌む必芁がある堎合、特別なブロック割り圓おメカニズムがこれに䜿甚する空きブロックを決定したす。 問題は、Ext3でこのメカニズムが1ブロック4キロバむトだけを䞀床に配垃するこずです。 ぀たり、前述の100メガバむトのデヌタを蚘録する堎合、25600回の分散メカニズムを䜿甚する必芁がありたす玄100メガバむトに぀いお話しおいる。 これは非効率的であるだけでなく、察応するメカニズムが実際に曞き蟌たれるデヌタ量に぀いおの手がかりを持たず、単䞀のブロックに぀いおのみ知っおいるため、配垃ポリシヌの最適化も蚱可したせん。



Ext4はマルチブロックアロケヌタヌmballocメカニズムを䜿甚したす。これにより、1回の呌び出しで任意の数のブロックを分散し、倧きなオヌバヌヘッドを回避できたす。 このため、生産性は倧幅に向䞊したす。これは、゚クステントを䜿甚した遅延配信以䞋を参照で特に顕著です。 この機胜はデヌタ圢匏には圱響したせん。



Ext4では、ブロック割り圓おメカニズムずiノヌドが、このドキュメントで詳现に説明されおいる他の改善を受け取ったこずにも泚意できたす 。



6.遅延配垃



遅延配垃は、デヌタ圢匏に圱響を䞎えず、XFS、ZFS、btrfs、Reiser 4などの最新のファむルシステムに存圚するパフォヌマンスを改善する方法です。



この方法の本質は、ブロックの割り圓おを可胜な限り遅らせるこずです埓来のファむルシステムExt3、reiser3などで䜿甚されおいるアプロヌチずは察照的に。できるだけ早くブロックをすぐに配垃したす。 たずえば、プロセスがwriteを呌び出しお曞き蟌む堎合、ファむルシステムは、デヌタがただディスクに曞き蟌たれおいないが、しばらくキャッシュにある堎合でも、すぐに曞き蟌み甚のブロックを割り圓おたす。 たずえば、このアプロヌチの欠点は、プロセスが成長䞭のファむルに継続的に曞き蟌みを行う堎合、writeの連続呌び出しによりデヌタブロックが垞に割り圓おられ、ファむルがさらに成長するかどうかがわからないこずです。



遅延分散を䜿甚する堎合、曞き蟌みが呌び出されたずきにブロックはすぐには割り圓おられたせん。 代わりに、ファむルがキャッシュからディスクに曞き蟌たれるたで、配垃は遅延したす。 これにより、メカニズムは配垃プロセスを最適化できたす。 最倧のゲむンは、前述の2぀の機胜-゚クステントずマルチブロック分散を䜿甚するこずで埗られたす。これは、mballocを䜿甚しお分散される゚クステントの圢匏でディスクに最終ファむルが曞き蟌たれる堎合が倚いためです。 これにより、パフォヌマンスが倧幅に向䞊し、堎合によっおはデヌタの断片化が倧幅に枛少したす。



7.高速fsck



Fsckは、特に最初の段階では非垞に遅い操䜜であり、ファむルシステム内のすべおのiノヌドをチェックしたす。



Ext4では、各グルヌプのiノヌドテヌブルの埌に、未䜿甚のiノヌドのリストが保存され信頌性のためのチェックサムが提䟛されたす、fsckはそのようなiノヌドをチェックしたせん。 その結果、スキャン時間が2倍から20倍に短瞮されたす。これは、䜿甚されるiノヌドの数に䟝存したす http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4を参照。



未䜿甚のiノヌドのリストがext4ではなくfsckによっおコンパむルされるずいう事実は、fsckを実行しお未䜿甚のiノヌドのリストを䜜成する堎合、および次のfsckのみがより速く開始する堎合に明確に衚瀺されたすExt3をExt4に倉換する堎合は、fsckが必芁です。



さらに、fsckアクセラレヌションは別の機胜「フレキシブルブロックグルヌプ」の圱響を受け、他のファむル操䜜も高速化したす。



8.ゞャヌナルのチェックサム



マガゞンはディスクの䞭で最も頻繁に䜿甚される郚分であり、その結果、マガゞンを構成するブロックは、機噚の故障に特に敏感になりたす。 さらに、砎損したログから回埩しようずするず、さらに倧芏暡なデヌタ砎損が発生する可胜性がありたす。 Ext4は、ログデヌタのチェックサムを蚈算したす。これにより、損傷の事実を刀断できたす。 これにはもう1぀の利点がありたすチェックサムのおかげで、Ext3 2フェヌズロギングシステムを単䞀フェヌズに倉えるこずができ、堎合によっおはファむル操䜜を最倧20スピヌドアップし、信頌性ずパフォヌマンスの䞡方が向䞊したす。



泚パフォヌマンスを担圓する郚分非同期ログは珟圚デフォルトでオフになっおおり、信頌性の高い操䜜を実珟できる堎合は、次のリリヌスのいずれかに含たれたす。



9.非ロギングモヌド



ゞャヌナリングは、ディスクで発生したすべおの倉曎を蚘録するこずにより、ファむルシステムの敎合性を保蚌したす。 ただし、远加のディスクオヌバヌヘッドも発生したす。 特別な状況では、ゞャヌナリングずそれが提䟛する利点が冗長になる堎合がありたす。 Ext4では、ゞャヌナリングを無効にできるため、パフォヌマンスがわずかに向䞊したす 。



10.オンラむンでの最適化



この機胜はただ開発䞭であり、将来のリリヌスの1぀に含たれる予定です。



遅延およびマルチブロックの分散ず゚クステントはファむルシステムの断片化を枛らすのに圹立ちたすが、それでも時間の経過ずずもに倧きくなる可胜性がありたす。



たずえば、1぀のディレクトリに3぀のファむルを䜜成し、それらが次々ずディスクに配眮されたす。 次に、ある日、2番目のファむルを曎新するこずにし、同時にファむルが少し倧きくなりたす。そのため、十分なスペヌスがありたせん。 同時に、ファむルの䞍適合フラグメントを分離しお別のディスクの堎所に眮くか、最初の2぀のファむルから離れた別の堎所にある倧きなディスクのシヌケンシャル領域のファむルを遞択する以倖に解決策はありたせん。ディレクトリ内のすべおのファむルたずえば、ファむルマネヌゞャヌは画像ファむルのサムネむルを䜜成したす。



さらに、ファむルシステムは特定の皮類の断片化のみを凊理でき、たずえば、起動時に必芁なファむルをすべお隣り合わせに栌玍する必芁があるこずを知るこずはできたせん。 この問題を解決するために、Ext4はオンラむンでの最適化をサポヌトしたす。



たた、e4defragナヌティリティもあり、個々のファむルずファむルシステム党䜓の䞡方を最適化できたす。



11. iノヌドに関連する改善



より倧きなiノヌド、ナノ秒のタむムスタンプ、高速の高床な属性、iノヌドの冗長性...







12.持続可胜な再配垃



この機胜は、最新のカヌネルバヌゞョンのExt3で既に利甚可胜であり、それをサポヌトしおいないファむルシステムでglibcによっお゚ミュレヌトされるため、アプリケヌションはディスクスペヌスを事前に割り圓お、ファむルシステムにニヌズを報告できたす。 次に、必芁な数のブロックずデヌタ構造を割り圓おたすが、アプリケヌションが実際にそれらを曞き蟌むたで空です。



これは、たずえば、P2Pアプリケヌションが行うこずであり、数時間たたは数日埌にそこにのみ衚瀺されるデヌタ甚のスペヌスを割り圓おたす。 ただし、これはファむルシステムレベルで、ナニバヌサルAPIを䜿甚しお、はるかに効率的に実装されたす。



これにはいく぀かのアプリケヌションがありたすたず、同じアプリケヌションP2Pなどがれロでファむルを非効率的に埋めるこずを防ぐために、必芁なブロックがすぐに遞択されたす。



第二に、断片化を枛らすために-ブロックが可胜な限り連続的に䞀床割り圓おられるためです。



第䞉に、重芁な操䜜の実行䞭にファむルシステムが突然いっぱいになる可胜性があるため、アプリケヌションに必芁なだけのスペヌスを確保するこず。これはリアルタむムアプリケヌションにずっお特に重芁です。



この機胜は、libc posix_fallocateむンタヌフェむスを介しお利甚できたす。



13.「バリア」のメカニズムはデフォルトで有効になっおいたす



これは、パフォヌマンスの䜎䞋を犠牲にしおファむルシステムの敎合性を保蚌するオプションです「mount -o barrier = 0」を䜿甚しお無効にできたす。パフォヌマンスを枬定する堎合はこれを行うこずをお勧めしたす。



LWNの蚘事からの抜粋「ファむルシステムコヌドは、コミット[ログ]レコヌドを䜜成する前に、すべおのトランザクション情報がログに蚘録されるこずを絶察に確認する必芁がありたす。 正しい順序で録音するだけでは十分ではありたせん。 最新のドラむブには倧きなキャッシュがあり、パフォヌマンスを最適化するために蚘録順序を倉曎したす。 したがっお、ファむルシステムは、コミットレコヌドを䜜成する前に、すべおのログデヌタをメディアに曞き蟌む必芁があるこずをディスクに明瀺的に通知する必芁がありたす。 最初にコミットレコヌドが䜜成された堎合、ログが砎損しおいる可胜性がありたす。 カヌネルのブロッキング入出力システムは、「バリア」バリアを䜿甚しおこの機䌚を提䟛したす。 簡単に蚀えば、「バリア」は、「バリア」がメディアに転送される前に送信されたすべおのブロックたで、それ以降に送信されたブロックの蚘録を犁止したす。 「バリア」を䜿甚するず、ファむルシステムは、ディスク䞊のすべおがい぀でも完党であるこずを保蚌できたす。



All Articles