【独学するコンピュータサイエンス】Linuxファイルシステム
ファイルシステムとは?
HDDなどへの書き込みを代替するための機構
ディレクトリ
ファイルをカテゴリ別に整理できるようにするために、ファイルを格納するための特殊なファイルのこと。
じつはディレクトリもファイルだったんですね
ファイルってなに?っておもったひとはこちら
(ファイル (コンピュータ) - Wikipedia)
ファイルシステムには大きくわけて3つある
ext4
XFS
Btrfs
違い
ファイルシステムの不整合があったときの挙動
ジャーナリングで管理
ext4
XFS
コピーオンライトで管理
btrfs
コピーオンライトとは?
ファイルをつねに同じ場所で管理するのではなく、書き込むごとに異なった場所で管理する方式
デバイスもファイルとして扱っている
Linuxは自分が動作しているハードウェア上のデバイスをほぼすべてファイルとして表現しています。なので、デバイスもファイルと同様、open()やread()、write()などのシステムコールによってアクセスできてしまいます。
デバイスといっても、さまざまな種類があり、Linuxはファイルとしてアクセスするデバイスを
- キャラクタデバイス
- ブロックデバイス
という二種類に分類しています。これらをデバイスファイル(デバイスファイル - Wikipedia)といいます。
それぞれの特徴
キャラクタデバイス
読みだしと書き込みはできるが、シーク(ファイルの途中から読み込み(書き込み))はできない
シークについて
シーク (コンピュータ) - Wikipedia
(ちなみに、ブロックデバイスではシークできるわけですが、物理的駆動をともなわない分、SSDのほうがファイルアクセスが高速になります。いいかえると、シークタイムが短くて済みます)
ブロックデバイス
単なるファイルの読み書き以外に、ランダムアクセスができます。代表的なブロックデバイスはHDDやSSDなどのストレージデバイスです。