Linux(および1980年代のUnix)では、ストレージデバイス(多くの場合、いくつかのハードディスクまたはSSDのディスクパーティション)はブロックデバイス(これを参照)であるため、ブロックの [サブ]シーケンス(これは物理 I / Oの基本単位)。物理ブロックサイズはハードウェア(古いIDEディスクのブロックサイズは512バイト、新しい大容量SATAディスクのブロックサイズは4Kバイト、Advanced Format wiki ページを読んでください)、およびファイルシステムを作成するとき(たとえば、mke2fsを参照) (8)mkfs
)物理ブロックサイズの倍数(多くの場合、1を含む2の小さなべき乗)である論理ブロックサイズを指定できます。論理ブロックのアドレス指定についてもお読みください。
過去(1990年代のSun3ワークステーションのように)、ディスクは、ヘッドがセクターに編成されたシリンダーで構成され(CHS wikiページを参照)、セクターにブロックが含まれていました。今日、これらはまだ残っていますが、ハードディスクコントローラ(ディスク自体の回路)によって提供される人工的な人工物です。一部のOSでは、ブロックヘッドドライバーは、ディスクヘッドの移動と回転待ち時間を最小限に抑えるために、IO要求を再スケジュールおよび順序変更しました。
このように、ファイルシステムはあらゆる種類のストレージデバイス(従来のハードディスク、SSD、USBフラッシュドライブなど)で動作でき、ストレージデバイスのデバイスドライバーのみが変更されます。
はい、しかし、悪は詳細にあります(SSDに固有のTRIMおよびWrite Amplificationについて読んでください)。そして詳細は重要なので、実際の実装は図よりも単純ではありません。ファイルシステムについての詳細を読んでください(SMBやNFSを含むクラスター化されたリモートファイルシステムについて考えてください。LogicalVolume Managerについても読んでください)。
オペレーティングシステムを読む:3つの簡単なピース(およびその永続化部分)。
FreeBSDではブロックデバイスがなくなっていることに注意してください(実際には、キャラクターデバイスとブロックデバイスに共通の抽象化を提供します)。WindowsでもOSはパーティション、ブロックサイズなどを知っていると思います(ただし、確認する必要があります)。