メタデータとは何ですか?「fsck」プロセスでどのように役立ちますか?


8

私がそれを正しく理解していれば、クラッシュが発生した後、UNIXシステムで「fsck」を使用してディスク内の内部整合性をチェックします。それでは、「メタデータ」を使用してファイルシステムのすべてが一貫していることを確認する方法を考えていました。たとえば、fsckプロセスが復元および修復するために必要な手順は何ですか。

->編集:この図で「同期ライトスルー」が何を指しているのかを誰かが明確にできれば、それも役に立ちます。


これは、おそらくU&Lの話題になりそうです。

回答:


13

メタデータはデータに関する情報です。テキストファイルについて考える場合、そのテキストファイルの文字のシーケンスは、ファイルに含まれる実際のデータです。ただし、ファイルには名前、所有者、作成日、記憶媒体上の場所などがあります。この情報はすべてメタデータです。メタデータはデータと同じ方法で処理できることに注意してください。たとえば、Unixはファイルメタデータをディレクトリと呼ばれるデータファイル(またはこの新しいコンピューティング時代のフォルダ:-)に保存します

Unixファイルシステムは、iノードと呼ばれるストレージの基本単位を使用します。個々のiノードには、実際のファイルデータ、ディレクトリ情報(メタデータ)を含めることも、未使用(無料)にすることもできます。新しいファイルを作成する操作には、iノードの状態を空きから割り当て済みに変更すること、データを新しいファイルに書き込むこと、メタデータをディレクトリファイルに書き込むことが含まれます。このタイプの操作の途中でコンピュータがクラッシュする可能性があります。その場合、ファイルシステムが破損する可能性があります

ファイルシステムチェックは、すべてのiノードを読み取り、破損の問題をできるだけ多く解決しようとすることで構成されます。たとえば、iノードが空きiノードのリストにないが、このiノードがファイルシステムが認識しているディレクトリのいずれかにあるファイルの一部であるというディレクトリエントリがないとします。このiノードは、空きiノードのリストに戻すことができます。

同期ライトスルーは、クラッシュが発生した場合にファイルシステムを回復できるようにディスクへの書き込みを実行する方法です。たとえば、新しいファイルを作成する場合は、iノードを割り当て、メタデータセットを使用してiノードを作成してから、ディレクトリ情報を含むファイルを更新する必要があります。同期書き込みスルー、これらは、そのために別のアクションを1つずつ、として行われます。ディレクトリが書き込まれる前にクラッシュが発生した場合は、iノードを空きリストに戻すことができ、ファイルの作成は行われませんでした。

他のタイプのファイルシステムチェックも可能です。


6

UnixまたはLinuxファイルシステムのコンテキストでは、「メタデータ」はファイルに関する情報です。ファイルの所有者のユーザーID、権限、ファイルタイプ(特殊、通常、名前付きパイプなど)、ファイルが使用するディスクブロック。これは通常、「iノード」と呼ばれるディスク上の構造に保持されます。iノードの情報の1つは、ファイルへの「リンク」の数です。通常のファイルには通常1がありますが、ディレクトリ(ほとんどの場合、特別な「I'm a directory」ファイルタイプマークが付いたファイルです)には少なくとも2つのリンクがあります。ファイルシステムに表示されるものはすべて、それが表示されるディレクトリからのリンクが1つありますが、すべてのディレクトリには「。」があるためです。名前とその通常の名前には、2つのリンクがあります。

fsckファイルシステムの「iノードブロック」(iノードデータ構造を含むディスクブロック)をスキャンして、リンク数が0より大きいiノードを見つけることができます。リンク数が0より大きいiノードによって表されるファイルは、どこかにディレクトリ。そのiノードがディレクトリに表示されない場合fsck、ファイルを既知のディレクトリ(通常は「lost + found」)に配置します。Unix / Linuxファイルシステムでは、通常、iノードがどのディレクトリに属しているかに関するメタデータがiノードに含まれておらず、ディレクトリに含まれるファイルに関する情報のみがディレクトリファイルに含まれています。

fsckどのディスクブロックにファイルのデータが含まれるかなど、他のメタデータを使用できます。fsckiノードがファイルに属していると言うディスクブロックが、ファイルシステムのディスクブロックの「未割り当てリスト」に表示されるかどうかを確認できます。潜在的にfsck、2つ以上のiノードに同じディスクブロックが含まれているかどうかをチェックできます。これは、ある種の複数割り当ての破損を示します。

ファイルへのディスクブロックの割り当ては、ディスク上のiノードに表示されます。ファイルシステムのディレクトリメンバーシップツリー構造は、ディレクトリに表示されます。iノードは表示されず、ディレクトリにも割り当てられません。fsckこの分離を利用して修復を行います。これは、「ファイルアロケーションテーブル」がツリー構造(ディレクトリメンバーシップ)とディスクブロックアロケーションの両方を保持していたMS-DOSや初期のWindowsなどのシステムとはかなり異なります。「FAT」を破損すると、ディスクブロックをスキャンして、何が含まれているか、どのように組み合わされるかを確認する必要があります。


5

メタデータは「データに関するデータ」です。

* nixファイルシステムの場合、fsck各データブロックのヘッダーから使用されるメタデータは、ディレクトリエントリまたは次のデータブロックとディレクトリ内の対応するエントリを指します。fsckブロックをスキャンし、ディレクトリエントリが一致し、次のブロックへの前方ポインタが正しいことを確認します。

これはファイルシステムによって大きく異なります。実際、どのメタデータが保存され、どこに保存されるかが、さまざまな* nixファイルシステムを最も区別するものです。より新しいものは、ディレクトリ構造への変更のログファイルも保持します。


気になるところですが、最新の実装がメタデータをディスクにどのようにまたはどこに格納するか知っていますか?
Kaitlyn Mcmordie、2011年

1
@ KaitlynMcmordie、fsに依存します。ext [234]の場合、ほとんどのメタデータはファイルのiノードに格納されます。名前はディレクトリに保存されます。つまり、ディレクトリフラグとメインデータの特定の形式を持つファイルのデータ部分です。ファイルデータはデータブロックに格納され、inodeはfsのフォーマット時に割り当てられるiノードテーブルに格納されます。iノード内の他のデータには、所有者、権限、アクセスタイムスタンプ、およびデータブロックへのポインタが含まれます。
psusi '25年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.