ブロックデバイスとパーティション
ハードディスクやSSD、USBメモリは「ブロックデバイス」として扱われ、/dev/sda や /dev/nvme0n1 のような名前で表されます。1台のディスクは複数の「パーティション」に分割でき、/dev/sda1 のように末尾の数字で区別します。まず lsblk でデバイスとパーティションの構成をツリー表示して全体像をつかむのが基本です。パーティション操作は fdisk や parted で行いますが、対象を間違えると既存データを失うため、必ずデバイス名を確認してから実行します。
Linuxはストレージの扱いがとても素直だ。ハードディスクもSSDもUSBメモリも、ほとんど同じやり方で使える。
見た目はまるで違うのに同じように扱えるのは、Linuxがこれらを「ブロックデバイス」という一つの種類として見ているからだ。
ブロックデバイスとは、データを512バイトや4096バイトといった一定サイズの「ブロック」単位でまとめて読み書きし、任意の位置へrandom(ランダム)にアクセスできる装置のことだ。1文字ずつ流れてくるキーボードやシリアルポートのような「キャラクタデバイス」と対比される。
ファイルを置いて保存する用途の装置は、ほぼすべてこのブロックデバイスにあたる。
Linuxでは、こうした装置も /dev ディレクトリの下に1つのファイルとして現れる。これをデバイスファイルと呼ぶ。種類の違う記憶装置を同じ作法で扱える土台が、この「ブロックデバイスというファイル」だ。
🏷 デバイスファイルの名前の付き方
デバイスファイルは、名前を見れば「どの装置か」が分かる。名前の付き方に規則があるからだ。
SATA接続のディスクやUSBメモリは /dev/sda、/dev/sdb、/dev/sdc のように、接続された順に末尾のアルファベットが振られる。最近主流のNVMe接続のSSDは /dev/nvme0n1 のような名前になる(nvme0 が何番目のコントローラか、n1 がその中の何番目の名前空間か、を表す)。
ここで大事なのは、これらの名前が「装置そのもの」を指している点だ。たとえば /dev/sda は1台目のディスク全体を表す。この一枚岩のディスクをどう使い分けるか――そこで次の「区切る」という話につながる。
✂ ディスクは、どう区切られるのか
1台のディスクは、そのまま丸ごと使うこともできる。だが多くの場合は、複数の領域に区切って使う。この区切られた1つ1つの領域がパーティションだ。
わざわざ区切るのは利点があるからだ。パーティションに分けると、OS用とデータ用を分離したり、領域ごとに別々のファイルシステムを置いたりできる。片方がいっぱいになっても、他方に影響しにくい。
パーティションのデバイス名は、元になったディスク名の末尾に番号を付けて表す。たとえば /dev/sda というディスクを3つに区切ると、/dev/sda1・/dev/sda2・/dev/sda3 という3つのパーティションになる。NVMeの場合は /dev/nvme0n1p1 のように、間に p が挟まる点が少し異なる。
どこをどう区切ったかという情報は、ディスクの先頭にあるパーティションテーブルという領域に記録される。その方式には、古くからのMBRと、大容量に対応した新しいGPTの2種類がある。
では、この区切り具合を、自分の目でどう確かめればよいのか。
🔍 まず lsblk で全体像をつかむ
ストレージ作業の出発点は、いま自分のマシンにどんなブロックデバイスが、どう区切られて存在するのかを把握することだ。これに最適なのが lsblk(list block devices)である。
引数なしで lsblk と打つだけで、ディスクとその下のパーティションが、親子関係のツリー構造で一覧表示される。出力にはデバイス名(NAME)・サイズ(SIZE)・種別(TYPE:disk か part か)・マウント先(MOUNTPOINT)などが並ぶ。たとえば sda という disk の下に sda1・sda2 という part がぶら下がる、という構成が一目で読み取れる。
「いまどのディスクが何ギガで、どこに接続されていて、どう使われているか」を最初に lsblk で確認する。この習慣が、後のすべての操作の土台になる。
もう一歩踏み込んで、そのパーティションの中身は何なのかを知りたくなったら、blkid を使う。blkid は各パーティションの UUID(世界で一意な識別子)やファイルシステム種別(TYPE)、ラベル(LABEL)を表示する。
たとえば blkid /dev/sda1 とすると、そのパーティションが ext4 なのか xfs なのか、UUID は何かが分かる。この UUID は、後で /etc/fstab に永続マウントを書くときに、安定した指定方法として重要な役割を果たす。
🛠 パーティションは、何で作り変えるのか
パーティションを新しく作ったり削除したりするには、fdisk または parted を使う。
fdisk /dev/sda のように対象のディスクを引数に渡して起動し、対話形式でコマンドを打って操作する。fdisk 内では p で現在のパーティション表を表示、n で新規作成、d で削除、そして w で変更を書き込んで終了、q で書き込まずに終了する。
parted はより新しいツールで、GPT形式や大容量ディスクの扱いに優れる。parted /dev/sda print のようにコマンドを直接渡す使い方もできる。
どちらを使う場合も、操作の対象はパーティション(/dev/sda1)ではなく、それを含むディスク全体(/dev/sda)を指定する点に注意したい。この「全体を指定する」というひと癖が、次に語る事故と背中合わせになっている。
⚠ つまずいたら、まず確認
パーティション操作は、ストレージ作業の中でもとりわけ慎重さが求められる領域だ。fdisk や parted で対象のディスク名を1文字間違えるだけで、まったく別のディスクの区切りを書き換えてしまう。そこに入っていた既存データを、まるごと失う恐れがある。
とくに fdisk の w(書き込み)や parted での変更確定は、実行した瞬間にディスクの構造を上書きするため、やり直しがきかない。
事故を防ぐ作法はシンプルだ。操作の前に必ず lsblk と blkid でデバイス名・サイズ・現在の中身を確認し、「いま自分が触ろうとしているのは本当にこのディスクか」を声に出して確かめるくらいの慎重さで臨む。
サイズ表示を見れば、512GBのシステムディスクと32GBのUSBメモリを取り違える、といった事故にも気づける。USBメモリのように後から挿した装置は、挿し直すと /dev/sdb が /dev/sdc に変わることもある。思い込みで作業せず、その都度 lsblk で確認する癖をつけたい。
つまずいたら、まず lsblk と blkid。これが鉄則だ。