ファイルシステムもブロックストレージを使用しますか?

ファイルシステムもブロックストレージを使用しますか?

ファイルシステムの実際の内部動作が混乱しています。問題は、ファイルストレージとブロックストレージに関するものです。私が理解しているように、違いはデータにアクセスするレベルです。つまり、ファイルレベルのファイルストレージとブロックレベルのブロックストレージです。

私の質問は:ファイルリポジトリもファイルをチャンクに分割し、別のチャンクとして再度保存しますか?もしそうなら、違いは、ファイルを形成するためにチャンクを結合する責任が実際に誰にあるのかということです。ブロックストレージの場合、これは対応するブロックサーバーのオペレーティングシステムによって実行され、ファイルストレージの場合はファイルシステムの助けを借りてオペレーティングシステムによって実行されます。

フォローアップ:ブロックストレージの場合、オペレーティングシステムはファイルシステムを使用せずに、同じファイル内の個々のブロックをどのように追跡しますか?

ベストアンサー1

ディスクドライバはディスクまたはディスクパーティションに接続し、システムにディスクブロック1からNまでのアクセスを提供する。ディスクドライバは、デフォルトの「デバイス」にアクセスする汚れた詳細を隠します。物理ディスクはシリンダー/ヘッド/セクター(C / H / S)を介してアクセスされ、実際にシリンダーの変更には物理的な操作(読み取り/書き込みヘッドを出入りするスライドアーム)が含まれます。磁気ヘッドはディスクプラッタの上に「飛ぶ」。ヘッドスワッピングは電子速度で発生しますが、セクタはディスクが回転するのを待つ必要があります。最適化には、C/H/S によるディスク I/O の順序付け、暗方向の変更の最小化、単一ヘッドの下のすべてのセクタの読み書きをブロックする、すべてのディスクとディスクのようなデバイス間のバッファリングなどがあります。詳細はさまざまです。ディスクドライバを使用すると、プログラムはこれらの詳細を無視できます。すべてのディスクドライブはブロック1からNまで存在します。

ディスクはGPTまたは以前のMBRによって制限されます。各パーティションはディスクのように「見えます」(ブロック1〜N)。ウィキペディアで詳しく説明します。

パーティションが「マウント」されると、man hierファイルシステム階層()の場所が割り当てられ、ファイルシステムの一貫性が確認され、必要に応じて回復されます。

i-nodesファイルシステムはこれらのディスクブロック(ブロック1〜N)を割り当て、mkfs生成ファイルシステムを実行するときにそれ自身を割り当てるディスクブロック(オーバーヘッドブロック)を追跡します。読むman mkfs fsck。ファイルシステムは、I / O最適化のためにブロックを「クラスタ」と「スーパークラスタ」で構成します。すべてのI / O(ユーザーデータ、フライシステムオーバーヘッド)はバッファリングされ、定期的にのみディスクにフラッシュされます。システムがクラッシュし、ファイルシステム割り当てブロックとファイルシステムメタデータのディスクコピーが一致しなくなる可能性があります。ファイルシステムは冗長性とロギングを使用してエラーを防ぎます。不一致を修復します。

ユーザプログラムは、システムが実施するアクセス規則に応じて、文字または(バイナリ)データブロックの形でファイルを読み書きすることができる。

ユーザーとハードウェアの間の各層は、他の層を変更することなく最適化できます(ただし、バッファにすべてのメモリを使用しますか?)。ブロック1からNまで。

おすすめ記事