たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

【独学するコンピュータサイエンス】Linuxファイルシステム

   

ファイルシステムとは?

HDDなどへの書き込みを代替するための機構

ディレクトリ
ファイルをカテゴリ別に整理できるようにするために、ファイルを格納するための特殊なファイルのこと。
じつはディレクトリもファイルだったんですね

ファイルってなに?っておもったひとはこちら
ファイル (コンピュータ) - Wikipedia

ファイルシステムには大きくわけて3つある

ext4

XFS

Btrfs

違い

ファイルシステムの不整合があったときの挙動

ジャーナリングで管理
ext4

XFS

コピーオンライトで管理
btrfs

コピーオンライトとは?
ファイルをつねに同じ場所で管理するのではなく、書き込むごとに異なった場所で管理する方式

デバイスもファイルとして扱っている

Linuxは自分が動作しているハードウェア上のデバイスをほぼすべてファイルとして表現しています。なので、デバイスもファイルと同様、open()やread()、write()などのシステムコールによってアクセスできてしまいます。

デバイスといっても、さまざまな種類があり、Linuxはファイルとしてアクセスするデバイスを

  • キャラクタデバイス
  • ブロックデバイス

という二種類に分類しています。これらをデバイスファイル(デバイスファイル - Wikipedia)といいます。

それぞれの特徴

キャラクタデバイス

読みだしと書き込みはできるが、シーク(ファイルの途中から読み込み(書き込み))はできない
シークについて
シーク (コンピュータ) - Wikipedia
(ちなみに、ブロックデバイスではシークできるわけですが、物理的駆動をともなわない分、SSDのほうがファイルアクセスが高速になります。いいかえると、シークタイムが短くて済みます)

ブロックデバイス

単なるファイルの読み書き以外に、ランダムアクセスができます。代表的なブロックデバイスはHDDやSSDなどのストレージデバイスです。

 - コンピュータサイエンス