Linuxのブロックデバイスとは?HDDやSSDなどディスク型デバイスの仕組みを初心者向けに解説
生徒
「Linuxのブロックデバイスって、ハードディスクやSSDのことですか?」
先生
「代表的なのはHDDやSSDですが、それだけではありません。Linuxでは、一定の大きさのデータ単位で読み書きできるストレージ系の装置をブロックデバイスとして扱います。」
生徒
「普通のファイルやUSBメモリとは、どんな違いがあるんですか?」
先生
「Linuxではデバイスも特別なファイルとして扱います。ブロックデバイス、デバイスファイル、パーティション、ファイルシステムの関係を順番に見ていきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. Linuxのブロックデバイスとは?
Linuxの読み方はLinux(リナックス)です。ブロックデバイスは英語でblock device(ブロックデバイス)といい、データを一定の大きさのまとまりで読み書きする装置をLinuxが扱うときのデバイス分類です。HDD、SSD、NVMe SSD、USBメモリ、仮想ディスクなどが代表的な例です。
ブロックの読み方はblock(ブロック)です。ストレージでは大量のデータを一文字ずつ個別に扱うのではなく、ある程度まとまった単位で読み書きします。Linuxでは、このようなストレージ系の装置をブロックデバイスとして扱います。
初心者の方は、大きな倉庫から荷物を箱単位で出し入れするイメージで考えるとわかりやすいでしょう。必要な場所を指定してデータを読み出したり書き込んだりできるため、HDDやSSDのような記憶装置に向いています。
ただし、ブロックデバイスという言葉は「ファイルシステムの一ブロック」と同じ意味ではありません。ブロックデバイスは装置の種類を表す言葉であり、ファイルシステムのブロックはデータ管理単位を表す言葉です。Linuxのストレージ管理では、この違いを区別することが重要です。
2. ブロックデバイスとキャラクタデバイスの違い
Linuxのデバイスは大きく分けると、ブロックデバイスとキャラクタデバイスとして扱われるものがあります。キャラクタデバイスの読み方はcharacter device(キャラクタデバイス)です。
ブロックデバイスは、HDDやSSDのようにデータの場所を指定しながらまとまり単位で読み書きできる装置です。一方、キャラクタデバイスは、端末や一部の入出力装置のように、データを連続した流れとして扱う装置で使われます。
Linuxではデバイスを/devというディレクトリにある特別なデバイスファイルを通して扱います。たとえば/dev/sdaはディスクを表すことがあり、/dev/ttyは端末に関係するキャラクタデバイスです。
デバイスファイルの種類はls -lでも確認できます。行の先頭がbならブロックデバイス、cならキャラクタデバイスを表します。
ls -l /dev/sda /dev/tty
brw-rw---- 1 root disk 8, 0 Aug 10 08:00 /dev/sda
crw-rw-rw- 1 root tty 5, 0 Aug 10 08:00 /dev/tty
実際の権限、日時、デバイス名はLinux環境によって異なります。特に仮想環境やNVMe SSDを使っている場合は、/dev/sdaが存在しない場合もあります。
3. lsblkコマンドでブロックデバイスを一覧表示する
Linuxでブロックデバイスを確認するときに最も基本的なコマンドの一つがlsblkです。lsblkの読み方はlsblk(エルエスブロック)です。Linuxが認識しているディスクやパーティションなどを階層構造で一覧表示できます。
lsblk
NAME SIZE TYPE MOUNTPOINTS
sda 120G disk
sda1 120G part /
この例ではsdaがディスク本体で、sda1がその中に作られたパーティションです。TYPEのdiskはディスク、partはパーティションを表します。MOUNTPOINTSには、そのファイルシステムがどこへマウントされているかが表示されます。
lsblkは、LinuxでHDDやSSDが認識されているか確認したいとき、追加したストレージを調べたいとき、パーティション構成を確認したいときなどに役立ちます。読み取り中心の確認コマンドなので、初心者でも比較的安全に利用できます。
4. HDDやSSDやNVMe SSDもブロックデバイスとして扱われる
HDDの読み方はHDD(エイチディーディー)、SSDの読み方はSSD(エスエスディー)です。HDDは磁気ディスクを回転させてデータを記録する記憶装置で、SSDは半導体メモリを利用してデータを保存する記憶装置です。
Linuxから見ると、どちらもストレージとしてデータを読み書きするため、ブロックデバイスとして扱われます。接続方式や内部構造が違っていても、Linuxの上位層ではブロックデバイスという共通した考え方を使って扱える点が重要です。
NVMeの読み方はNVMe(エヌブイエムイー)です。NVMe SSDでは、デバイス名が/dev/nvme0n1のようになることがあります。従来型のSATA接続ディスクでは/dev/sdaのような名前がよく見られます。
デバイス名や種類はlsblkで確認できます。環境によって名前が異なるため、「Linuxのディスクは必ずsda」と覚えるのではなく、自分の環境の表示を確認する習慣を付けることが大切です。
5. ブロックデバイスとパーティションの関係
パーティションの読み方はpartition(パーティション)です。パーティションとは、一台のストレージを複数の領域に分けて使う仕組みです。Linuxでは、ディスク本体だけでなく、その中に作られたパーティションもブロックデバイスとして扱われます。
たとえば/dev/sdaがディスク本体なら、/dev/sda1や/dev/sda2はそのディスク内のパーティションを表すことがあります。NVMe SSDでは/dev/nvme0n1p1のような名前になることがあります。
次のコマンドでは、デバイス名、サイズ、種類を確認できます。
lsblk -o NAME,SIZE,TYPE
NAME SIZE TYPE
sda 120G disk
sda1 1G part
sda2 119G part
ディスク全体とパーティションは親子のような関係で表示されます。この階層構造を見ると、一台のストレージがどのように分割されているかを初心者でも把握しやすくなります。
なお、パーティションの作成や削除はデータを失う可能性がある操作です。確認のためのlsblkと、実際に構成を変更する操作は別物として考え、慣れないうちは不用意に変更しないことが大切です。
6. ブロックデバイスとファイルシステムの関係
ファイルシステムの読み方はfile system(ファイルシステム)です。ファイルシステムとは、ストレージ上のデータをファイルやディレクトリとして整理し、名前、場所、容量、所有者、アクセス権限などを管理する仕組みです。
ブロックデバイスがストレージをLinuxから扱うための土台だとすると、その上でファイルやディレクトリを使えるようにする管理方式がファイルシステムです。Linuxではext4やXFSなどのファイルシステムがよく使われます。
どのブロックデバイスにどのファイルシステムが存在するか確認するときは、lsblk -fが便利です。
lsblk -f
NAME FSTYPE MOUNTPOINTS
sda
sda1 ext4 /
FSTYPEにはファイルシステムの種類が表示されます。この例ではsda1にext4のファイルシステムがあり、ルートディレクトリへマウントされています。
初心者の方は、ストレージ装置、ブロックデバイス、パーティション、ファイルシステム、マウントという順番で考えると理解しやすくなります。それぞれは同じものではなく、Linuxのストレージ管理を構成する別々の役割です。
7. デバイスファイルとメジャー番号やマイナー番号の役割
Linuxではブロックデバイスも/dev配下にあるデバイスファイルを通して扱われます。デバイスファイルは普通の文書ファイルとは異なり、Linuxカーネルが管理しているデバイスへアクセスするための入口として働きます。
Linuxカーネルの読み方はLinux kernel(リナックスカーネル)です。カーネルは、ハードウェア、メモリ、プロセス、デバイスなどを管理するLinuxの中心部分です。
デバイスファイルにはメジャー番号とマイナー番号があります。メジャー番号の読み方はmajor number(メジャーナンバー)、マイナー番号の読み方はminor number(マイナーナンバー)です。これらはカーネルがデバイスを識別するときに使われます。
ls -lでブロックデバイスを見ると、ファイルサイズの代わりにメジャー番号とマイナー番号が表示されることがあります。
ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Aug 10 08:00 /dev/sda
この例では8と0がメジャー番号とマイナー番号です。実際の番号はデバイスやLinux環境によって異なります。初心者の段階では番号を暗記する必要はありませんが、デバイスファイルが単なる名前ではなく、カーネルと装置を結び付ける仕組みの一部だと理解しておくとよいでしょう。
8. ブロックデバイスはマウントしてファイルとして利用する
マウントの読み方はmount(マウント)です。Linuxでは、ファイルシステムをディレクトリ構造の特定の場所へ接続して利用できるようにすることをマウントといいます。
ブロックデバイスそのものを普段の文書ファイルのように直接操作するのではなく、一般的にはパーティションなどにファイルシステムを用意し、それをマウントしてファイルやディレクトリとして利用します。
現在のルートディレクトリがどのデバイスから提供されているか確認するにはfindmntが便利です。findmntの読み方はfindmnt(ファインドマウント)です。
findmnt -T /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime
この例では、/dev/sda1にあるext4ファイルシステムがルートディレクトリへマウントされていることがわかります。実際のSOURCEやFSTYPEはLinux環境によって異なります。
Linuxでは複数のストレージを一つのディレクトリツリーへ組み込めるため、追加したディスクを/dataなどのディレクトリから利用する構成も可能です。この仕組みを理解すると、Windowsのドライブ文字とは異なるLinuxのストレージ管理がわかりやすくなります。
9. Linux初心者がブロックデバイスで覚えておきたいポイント
Linuxのブロックデバイスは、HDDやSSDなどのストレージ系装置を扱うための基本的なデバイス分類です。データをまとまった単位で読み書きでき、必要な場所へアクセスできることが特徴です。
LinuxではHDD、SSD、NVMe SSD、USBメモリ、仮想ディスクなどがブロックデバイスとして扱われることがあります。さらにディスク内のパーティションもブロックデバイスとして扱われ、/dev/sda1や/dev/nvme0n1p1などのデバイスファイルを通してLinuxから認識されます。
ブロックデバイスを調べる基本コマンドとしてはlsblkが非常に重要です。ディスクやパーティションの階層、容量、種類、マウント先を確認でき、lsblk -fを使えばファイルシステムの種類も確認できます。またfindmntを使うと、どのデバイスがどのディレクトリへマウントされているか確認できます。
ブロックデバイスという考え方は、Linuxがさまざまなストレージ装置を共通した仕組みで扱うために重要です。物理的なHDDだけでなく、SSDや仮想環境のディスクなども共通したインターフェースを通して扱えるため、アプリケーションやファイルシステムは装置ごとの細かな違いをすべて意識する必要がありません。
また、ブロックデバイスとブロックサイズは別の用語です。ブロックデバイスは装置の分類を表し、ファイルシステムのブロックサイズはデータ管理の単位を表します。セクタもストレージ装置に近い単位なので、これらを同じ意味として覚えないことが大切です。
Linuxのファイルシステムやストレージ管理を学ぶときは、ブロックデバイス、デバイスファイル、パーティション、ファイルシステム、マウントという流れをつなげて理解すると、ディスク管理の全体像が見えやすくなります。最初はlsblkやlsblk -fなどの確認コマンドを実際に使い、自分のLinux環境がどのようなストレージ構成になっているか観察することから始めると理解が深まります。
Linuxのブロックデバイスは、HDDやSSDなどのストレージをまとまったデータ単位で読み書きするためのデバイス分類です。/devのデバイスファイル、lsblk、パーティション、ファイルシステム、マウントの関係を理解すると、Linuxのディスク型デバイスとストレージ管理の基本がわかりやすくなります。