Windowsのドライブ

Windowsでは、ハードディスクやストレージデバイスは「ドライブ」という概念で扱われる。ドライブにはアルファベットで番号が付けられる慣例になっており、システムがインストールされる基本ドライブにはC:という名前が付けられるようになっている。

  • Windows 10のドライブのサンプル

    Windows 10のドライブのサンプル

ハードディスクや光学ドライブを追加すると、次のようにドライブが増える。以下のスクリーンショットの例では、E:、F:、G:が新たに追加されたドライブだ。

  • 新しく追加されたドライブ

    追加されたドライブ

Windowsではドライブ名が絶対パスの最も上に表示され、パスには必ずドライブ名が含まれている。

デバイスファイルとマウントの仕組み

一方、Linuxにはドライブという概念が存在しない。Linuxは他のUNIX系オペレーティングシステムと同様に、外部リソースはすべてファイルという概念で扱う。デバイスを意味するファイルはデバイスファイルと呼ばれ、/dev/以下に配置される仕組みになっている。

  • /dev/以下のデバイスファイルなど - Ubuntu 18.04 LTS

    /dev/以下のデバイスファイルなど - Ubuntu 18.04 LTS

例えば上のケースでは、/dev/vdaがハードディスク(この場合は仮想ディスクだが)に対応しており、/dev/vda1と/dev/vda2が論理パーティションで区切られたそれぞれの領域ということになっている。

Windowsではディスクはドライブとして認識されC:やD:といったユニークな名前が付けられるが、Linuxでは/dev/以下にファイルとして表示される。このファイル(デバイスファイル)のままではファイルシステムとしては利用できない。ファイルシステムとして利用するには、マウントという処理を行ってディレクトリに設置する(マウントする)必要がある。

dfコマンドで確認するとわかると思うが、このシステムでは/dev/vda2にファイルシステムが展開されており、これが/にマウントされている。状況としては/dev/vdaのディスクがこのシステムのファイルシステムとして展開されている状況になっている。

  • /dev/vda2が/としてマウントされている

    /dev/vda2が/としてマウントされている

Windowsではドライブとしてユニークな扱いになるが、LinuxやUNIX系オペレーティングシステムではディスクのファイルシステムは任意のディレクトリにマウントできる。つまり、C:やD:のようにユニークな存在として扱われるのではなく、ファイルシステムツリーの任意の場所にマウントして使われる。

  • デバイスファイルや各各種ファイルシステムとマウント先

    デバイスファイルや各種ファイルシステムとマウント先

Windowsではパスの一番上はC:やD:のようなドライブ名になっているが、LinuxやUNIX系オペレーティングシステムではファイルシステムの一番上は「/」であり、唯一これしか存在していない。このため、ディスクのようなストレージは「/」以下のどこかにマウントしてアクセスされる仕組みになっている。これがWindowsのドライブとLinuxのデバイスファイルおよびマウントという考え方の違いだ。

シンプルで扱いやすいファイルとファイルシステム

Linuxに限らず、UNIX系のオペレーティングシステムに一般的に言えることだが、シンプルな概念を好む傾向が強い。デバイスはファイルという概念で抽象化するし、さまざまな機能がシステムシステムとして実装されている。慣れないうちは奇妙に感じるかもしれないが、ファイルとファイルシステムという抽象化の方法はシンプルで扱いやすい。利用するシステムコールが増えにくいという特徴もあり、利用するほうとしてはつぶしの効きやすい仕組みと言える。

現在のデスクトップ向けのLinuxディスクディストリビューションはよく出来ており、自分で外部ストレージをマウントして利用するという機会は少なくなっているかもしれない。

しかし、マウントの仕組みは知っておくと便利であることには間違いないし、サーバとしてLinuxを利用している場合は自分で明示的に処理する必要があるだろう。

この辺りの詳しい操作方法はおいおい紹介していくつもりだ。まずは今回取り上げた概念の違いを理解しておいていただければと思う。