Linux / ディスク管理 / パーティション、フォーマット、マウント

Linuxの新しいデータ用ディスクは、対象の確認、パーティション作成、ファイルシステム作成、マウントの順で準備します。以下は使い捨ての仮想マシンへ追加した空ディスクを対象とする例です。起動用・使用中・既存データのあるディスクでは実行せず、対象の型式・容量・マウント状況とバックアップを先に確認してください。 関連する条件と手順は、ディスク・パーティション・ファイルシステムを区別して確認するを参照できます。 関連する条件と手順は、ファイルシステムのマウントとストレージ管理を参照できます。

取り付けられたディスクの確認

  • まずlsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODELで構成を確認します。次はls -l /dev/sd*の古い出力例で、現在の機器一覧ではありません。lsはデバイスファイルを表示するだけで、ディスクの使用状況までは判定しません。
  • /dev/sda・/dev/sdbなどはディスク、/dev/sda1などはそのパーティションを示す例です。NVMeなら/dev/nvme0n1など別形式になり、名前は環境ごとに異なります。
brw-rw----. 1 root disk 8,  0 Oct 16 13:12 /dev/sda
brw-rw----. 1 root disk 8,  1 Oct 16 13:12 /dev/sda1
brw-rw----. 1 root disk 8,  2 Oct 16 13:12 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 16 13:12 /dev/sdb
brw-rw----. 1 root disk 8, 32 Oct 16 13:12 /dev/sdc

ファイルシステムは以下の二つの方法で確認できます。

  • df -T:マウントされたファイルシステムの種類と使用量を確認します。物理パーティションだけに限定されません。
  • sudo blkid /dev/sd*:一致するデバイスの識別情報を確認します。全デバイスを網羅する指定ではなく、NVMe・論理ボリュームなどは対象に応じて指定します。

パーティション作成

  • パーティション表を編集する道具の一つがfdiskです。以下の図は元のutil-linux 2.23.2の画面に対応した日本語の操作説明で、画面の再現ではありません。古い図のセクター番号を別のディスクへ流用しないでください。現在のfdiskのマニュアルも確認します。
  • 確認した空ディスクが実際に/dev/sdbである場合に限り、次の対話操作へ進みます。容量や既存構成が想定と違う場合は保存せず中止します。
sudo fdisk /dev/sdb

専用の空ディスクを確認してfdiskを起動する説明図

  1. 対話画面でmを入力して、その版の操作一覧を確認します。pで構成を表示し、qなら未保存の変更を捨てて終了できます。

fdiskのヘルプ・一覧表示・保存せず終了する操作の説明図

  1. nで必要なパーティションを作成します。開始位置は機器の配置条件に合わせた提示値を確認し、末尾は例えば+4Gのように必要な容量で指定します。番号や選択肢はパーティション表の形式・空き領域・版で変わります。

fdiskで新しいパーティションの開始位置とサイズを指定する説明図

  1. 必要なパーティションを用意し、pで対象・サイズ・形式を再確認します。正しい場合だけwでディスクへ保存します。保存前ならqで中止できますが、保存後はqで元に戻せません。

パーティションの対象とサイズを確認してから保存する説明図

保存後はsudo fdisk -l /dev/sdbとlsblk -fでパーティションの対応を確認します。まだファイルシステムは作成していません。カーネルが使用中の表を再読込できなかった場合は、使用状態を解消して反映を確認してから進みます。

パーティション表とブロックデバイスの対応を確認する説明図

512バイトの論理セクターを使うMBR(Master Boot Record)では約2TiBの制限があります。これはすべてのディスクで単純に「2TB超は不可」という意味ではありません。次は4TB級の例として元原稿にある4TiBデバイスの診断表示です。新規の大容量ディスクではGPT(GUID Partition Table)を検討します。

The size of this disk is 4 TiB (4398046511104 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT).

新規の空ディスクでGPTを使うと決めた場合は、パーティション作成前にgで新しい表を作ります。既存のMBRをデータごと安全に変換する操作ではありません。次は対話画面の表示例で、GUIDの値は環境ごとに異なります。

Command (m for help): g
Created a new GPT disklabel (GUID: F13C6D0D-1E30-4448-B015-A61F3AE9EA48).

フォーマットする

  • ファイルシステムの作成は既存データを失わせます。lsblk -fで保存後のパーティションを確認し、未使用・未マウントの対象だけを選びます。ext4とXFSは以下のどちらか一方を選ぶ別の例です。/dev/sdb1にext4を作る場合は次を使います。
sudo mkfs.ext4 /dev/sdb1
  • XFSを選ぶ場合は、ext4の例を続けて実行せず次を使います。既存の署名が検出されて拒否された場合は、対象と保持すべきデータを再確認します。mkfs.xfsの-fは既存の署名があっても強制作成する指定なので、この手順では付けません。
sudo mkfs.xfs /dev/sdb1

マウントする

  • 作成したファイルシステムをディレクトリへ接続すると、そこからファイルを利用できます。/mntが既に使われていないかfindmnt /mntで確認し、空のマウント先を用意します。既存データの上にマウントすると、その内容は接続中に隠れます。
  • 以下は確認済みの/dev/sdb1を/mntへ一時的にマウントする例です。成功後はfindmnt /mntとdf -T /mntで接続元・種類・使用量を確認します。
sudo mount /dev/sdb1 /mnt
  • 使用後はファイルを閉じ、作業場所を別のディレクトリへ移して解除します。指定方法は2つあり、sudo umount /dev/sdb1または以下のマウント先指定のどちらかを使います。使用中のエラーでは利用プロセスを調べ、むやみに強制解除しません。
sudo umount /mnt
  • 起動時にも接続したい場合は、/etc/fstabをバックアップして管理者権限で編集します。以下はXFSを選んだ場合の例で、実際の形式に合わせます。後述のUUID形式を使う場合は、この行へ重複追加せず置き換えます。
  • 各列はデバイス、マウント先、形式、オプション、dump、起動時検査の順です。末尾の0 0もXFSの例であり、ext4へ形式名だけ変えて同じ値を機械的に流用しません。fstabの各フィールドを確認してください。
/dev/sdb1 /mnt xfs defaults 0 0
  • まずfindmnt --verify --verboseで設定を検査し、警告を解決します。systemd環境では編集後にsudo systemctl daemon-reloadも行います。下のmount -aは今回の1行だけでなく、fstabの対象全体を処理するため他の設定も確認してください。既にマウント中のオプションをすべて変更する操作ではありません。失敗したら再起動せず設定をバックアップへ戻します。
sudo findmnt --verify --verbose &&
sudo mount -a

UUIDを使用する

/dev/sdbや/dev/sdb1の名前は認識順で変わる場合があります。通常のファイルシステムをfstabへ指定する場合は、そのファイルシステムのUUID(Universally Unique Identifier)を使うと名前変更の影響を減らせます。ディスクの製造番号ではなく、再フォーマットで変わり、複製すると重複する場合もある識別子です。 関連する条件と手順は、追加ディスクの準備とfstab自動マウントを参照できます。

  • sudo blkidで識別情報を調べます。以下は元原稿の出力例で、実際のUUIDは自分の環境で確認します。LVM2_memberはそのまま通常のファイルシステムとしてマウントする対象ではありません。
/dev/sda1: UUID="69d9add5-2153-4bc2-ad99-1560fb205c4b" TYPE="ext4" PARTUUID="aa61ba4b-01"
/dev/sda2: UUID="PuMuNg-5YHg-qikJ-tc10-iPIM-7W1q-4fUqyc" TYPE="LVM2_member" PARTUUID="aa61ba4b-02"
/dev/mapper/cl-root: UUID="79c8cfcb-c9e2-4243-8cf2-cf10eab57c40" TYPE="xfs"
/dev/mapper/cl-swap: UUID="b69a5fc3-98db-4a27-b3d4-a7ef76244ad1" TYPE="swap"
/dev/mapper/cl-home: UUID="fd372a6b-ee76-41d6-b7e6-6e6a7cf8193b" TYPE="xfs"
/dev/sdb1: UUID="fd95c93f-03fc-418a-a6db-c26b921ec93b" TYPE="xfs" PARTUUID="e5f55ef6-01"
  • 対象のXFSが以下のUUIDであれば、fstabのデバイス列をUUIDに置き換え、同じ/mntへ接続します。既存の/homeへ新しい空のディスクを重ねる例ではありません。記入後は前節と同じ検査を行い、findmnt /mntで確認します。関連するfdiskの詳しい操作も参照してください。
UUID=fd95c93f-03fc-418a-a6db-c26b921ec93b /mnt xfs defaults 0 0