ブロックデバイスとパーティション
ハードディスクやSSD、USBメモリは「ブロックデバイス」として扱われ、/dev/sda や /dev/nvme0n1 のような名前で表されます。1台のディスクは複数の「パーティション」に分割でき、/dev/sda1 のように末尾の数字で区別します。まず lsblk でデバイスとパーティションの構成をツリー表示して全体像をつかむのが基本です。パーティション操作は fdisk や parted で行いますが、対象を間違えると既存データを失うため、必ずデバイス名を確認してから実行します。
ストレージを扱う作業は、まず「Linuxはディスクをどう見ているのか」を知るところから始まります。ハードディスク・SSD・NVMe・USBメモリといった記憶装置を、Linuxはブロックデバイスという種類のデバイスとして扱います。ブロックデバイスとは、データを512バイトや4096バイトといった一定サイズの「ブロック」単位でまとめて読み書きし、任意の位置へランダムにアクセスできる装置のことです。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 または 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 で確認する癖をつけてください。