Linux標準のファイルシステム知識共有(Ext 2/Ext 3/Ext 4)
全称Linux extended file system,extfs,すなわちLinux拡張ファイルシステム,Ext 2は第2世代ファイル拡張システムを代表し,Ext 3/Ext 4はこれらのようにExt 2のアップグレード版であり,ログ機能を追加しただけで互いに下向きに互換性があるため,Ext 2はインデックスファイルシステムと呼ばれ,Ext 3/Ext 4はログファイルシステムと呼ばれている.
備考:Linuxは多くのファイルシステムをサポートし、ネットワークファイルシステム(NFS)、WindowsのFatファイルシステムを含む。
ls -l /lib/modules/$(uname -r)/kernel/fs
cat /proc/filesystems
データ領域
これらの要素は比較的安定しており、ディスクをフォーマットすると固定されます。
1、inode(インデックスノード)
ファイルの権限、属性、およびデータが存在するブロックblockの番号を記録し、各ファイルにはinodeが1つしかなく、各inodeには独自の番号があり、inodeをドキュメントインデックスとして簡単に理解することができる。
2、block(データブロック)
格納されたファイルの内容は、データブロック(data block)とも呼ばれ、各blockには独自の番号があり、Ext 2がサポートする単位block容量は1 k、2 k、4 kにすぎない。メモ:inodeの記録を容易にするため、ディスクのフォーマット後、blockのサイズは固定されています。各ブロックには1つのファイルのデータしか保存できません。ファイルが大きすぎると、複数のblockが占有されます。ファイルが小さすぎるとblockの空き領域が使用できなくなり、ディスク領域が浪費されるため、ディスクパーティション化後、ファイルシステムがフォーマットされる前に、ファイルシステムの予想使用状況をよく考えてください。
仲介データ(metadata)
これらの要素はファイルシステムの状態を維持するために設計され、主にファイルシステムの動的構成情報を代表し、記述的な情報に属する。
1、superblock(スーパーブロック)
inode/blockの総量、使用量、残量、サイズ、およびファイルシステムのフォーマットおよび関連情報を含むファイルシステム(filesystem)の全体情報を記録する。
备注:全体のファイルシステムの基本的な情报はすべてsuperblockで记录して、その大きさは普通1024 Bytesで、もしそれが死んだら、大量の时间を费やして救済します!!!
2、blockグループ(ブロックグループ)
考えてみてください。もし私たちのディスク容量が数百Gに達したら、私たちのフォーマット後、inodeとblockは非常に膨大になります。管理を容易にするために、Extファイルシステムはフォーマット時にブロックグループ(block group)の概念を導入し、各ブロックグループは独立したinode/block/superblockを維持し、固定数のblockを持っています。これにより、最も基礎的なサブファイルシステムのグループに分けられます。
メモ:superblockはファイルシステムにとって重要ですが、ファイルシステムのsuperblockはもう一つしかありません。そのため、最初のblockグループにsuperblockが含まれているほか、後続のblockグループにはバックアップのsuperblockが含まれている可能性があります。superblockが単一の点で救助できない問題を避けるためです。3、block bitmap(ブロック対照表)
1つのblockは1つのファイルでしか使用できません。ファイルを追加するときは、新しいblockを使用してファイルデータを記録する必要があります。では、どのblockが新しいのか、どのように迅速に知ることができますか?どのblockがすでに使われていますか?block bitmapはこのように設計され、使用および未使用のblock番号をすべて記録する。同様に、ファイルを削除するときは、block bitmapから対応するblock番号を見つけてから、未使用のフラグを更新し、最後にblockを解放します。inode bitmap(inode対照表)
block bitmapと同じデザインコンセプトですが、使用済みと未使用のinode番号が記録されているだけで、ここでは説明しません。
group descriptor
各セグメント(block group)の開始および終了のblock番号を記述し、各セグメント(inodemap、blockmap、inode table)がそれぞれどのblock番号の間にあるかを説明する。
blkid
dumpe2fs /dev/vda1
