fdisk / parted(ディスクパーティション管理)
『fdisk』と『parted』は Linux でディスクのパーティションを管理するコマンドです。『fdisk』は対話形式でパーティションを作成・削除・変更でき、伝統的な MBR(Master Boot Record)形式に加え GPT(GUID Partition Table)にも対応しています。『parted』はスクリプトからも利用しやすい非対話モードを持ち、2 TB を超える大容量ディスクや GPT パーティションの管理に適しています。MBR は最大 4 つのプライマリパーティション・最大 2 TB のディスクサイズという制限がありますが、GPT はパーティション数・容量ともにその制限を大幅に超えられます。
構文
# -----------------------------------------------
# fdisk の基本構文
# -----------------------------------------------
# fdisk -l
# → システム上のすべてのディスクとパーティションを一覧表示します
# 例: sudo fdisk -l
# fdisk -l {デバイス}
# → 指定したデバイスのパーティション情報を表示します
# 例: sudo fdisk -l /dev/sdb
# fdisk {デバイス}
# → 指定したデバイスの対話モードを起動します
# 例: sudo fdisk /dev/sdb
#
# 対話モードのサブコマンド:
# p → 現在のパーティションテーブルを表示する (print)
# n → 新しいパーティションを作成する (new)
# d → パーティションを削除する (delete)
# t → パーティションタイプを変更する (type)
# 例: 8e = Linux LVM, 82 = Linux swap, 83 = Linux
# g → GPT パーティションテーブルを新規作成する
# o → MBR(DOS)パーティションテーブルを新規作成する
# w → 変更をディスクに書き込んで終了する (write)
# q → 変更を保存せずに終了する (quit)
# m → ヘルプを表示する
# -----------------------------------------------
# parted の基本構文
# -----------------------------------------------
# parted {デバイス}
# → 指定したデバイスの対話モードを起動します
# 例: sudo parted /dev/sdb
#
# 対話モードのサブコマンド:
# print → 現在のパーティションテーブルを表示する
# mklabel {形式} → パーティションテーブルを新規作成する(gpt / msdos)
# mkpart {タイプ} {ファイルシステム} {開始} {終了}
# → パーティションを作成する
# タイプ: primary / logical / extended
# 例: mkpart primary ext4 1MiB 50GiB
# rm {番号} → 指定番号のパーティションを削除する
# resizepart {番号} {新しい終了位置}
# → パーティションの終了位置を変更する
# quit → 対話モードを終了する
# parted {デバイス} {サブコマンド}
# → 非対話モードで 1 コマンドだけ実行します(スクリプトに適します)
# 例: sudo parted /dev/sdb print
# 例: sudo parted /dev/sdb mklabel gpt
構文一覧
| コマンド/操作 | 説明 |
|---|---|
fdisk -l | システム上のすべてのディスクとパーティションを一覧表示します。ディスク名の確認に使用します。 |
fdisk -l /dev/sdb | 指定したデバイスのパーティション情報のみを表示します。 |
fdisk /dev/sdb | 対話モードを起動します。n で作成・d で削除・w で書き込みます。 |
n(fdisk 対話) | 新しいパーティションを作成します。プライマリ・論理・開始セクタ・終了セクタを対話形式で指定します。 |
d(fdisk 対話) | パーティションを削除します。番号を指定して削除対象を選びます。 |
p(fdisk 対話) | 現在のパーティションテーブルを表示します。作業前後の確認に使います。 |
t(fdisk 対話) | パーティションタイプを変更します。LVM 用は 8e、swap は 82、通常の Linux は 83 です。 |
g(fdisk 対話) | GPT パーティションテーブルを新規作成します。既存のテーブルはすべて消去されます。 |
w(fdisk 対話) | 変更をディスクに書き込んで終了します。w を実行するまで変更は反映されません。 |
q(fdisk 対話) | 変更を保存せずに終了します。誤操作をキャンセルしたい場合に使います。 |
parted /dev/sdb print | 指定デバイスのパーティションテーブルを表示します。GPT・MBR 双方に対応しています。 |
parted /dev/sdb mklabel gpt | GPT パーティションテーブルを作成します。2 TB を超えるディスクや UEFI 環境に適しています。 |
parted /dev/sdb mklabel msdos | MBR(DOS)パーティションテーブルを作成します。旧来の BIOS 環境との互換性が必要な場合に使用します。 |
parted /dev/sdb mkpart primary ext4 1MiB 50GiB | 開始位置 1MiB・終了位置 50GiB のプライマリパーティションを作成します。 |
parted /dev/sdb rm 1 | パーティション番号 1 を削除します。 |
parted /dev/sdb resizepart 1 100GiB | パーティション番号 1 の終了位置を 100GiB に変更します。 |
lsblk | ブロックデバイスの一覧をツリー形式で表示します。パーティションの確認に便利です。 |
lsblk -f | ファイルシステム・UUID・マウントポイントも含めて表示します。 |
使用例
fdisk でパーティションを作成する
# ----------------------------------------------- # 新しいディスク /dev/sdb にパーティションを 2 つ作成します # (岡部倫太郎のラボ増設ディスクを想定) # ----------------------------------------------- # まず現在の状態を確認します sudo fdisk -l /dev/sdb # fdisk の対話モードを起動します sudo fdisk /dev/sdb # --- 以下は対話モード内の操作 --- # p: 現在のパーティションテーブルを確認します(初期は空の状態) # g: GPT パーティションテーブルを新規作成します # (MBR が必要な場合は o を使います) # n: 1 つ目のパーティションを作成します # Partition number: 1(デフォルト) # First sector: (デフォルトのまま Enter) # Last sector: +50G(50 GB を割り当てます) # n: 2 つ目のパーティションを作成します # Partition number: 2(デフォルト) # First sector: (デフォルトのまま Enter) # Last sector: (デフォルトのまま Enter → 残り全領域を使います) # t: 2 つ目のパーティションのタイプを LVM に変更します # Partition number: 2 # Partition type: 31(Linux LVM) # p: 変更内容を確認します # w: 変更をディスクに書き込んで終了します # パーティション作成後にカーネルに変更を通知します sudo partprobe /dev/sdb # 結果を確認します lsblk /dev/sdb
実行するコマンドは次の通りです。
$ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb 8:16 0 200G 0 disk ├─sdb1 8:17 0 50G 0 part └─sdb2 8:18 0 150G 0 part
parted で GPT パーティションを作成する
# ----------------------------------------------- # /dev/sdc に parted を使って GPT パーティションを作成します # (牧瀬紅莉栖の実験データ保存用ディスクを想定) # ----------------------------------------------- # ディスクの現状を確認します sudo parted /dev/sdc print # GPT パーティションテーブルを作成します # (既存のデータはすべて消去されるため慎重に実行してください) sudo parted /dev/sdc mklabel gpt # 1 つ目のパーティション: 先頭 1MiB を空けてから 100GiB まで # (先頭 1MiB を空けることでアライメントの問題を防ぎます) sudo parted /dev/sdc mkpart primary ext4 1MiB 100GiB # 2 つ目のパーティション: 100GiB から残り全領域 sudo parted /dev/sdc mkpart primary xfs 100GiB 100% # パーティションテーブルを確認します sudo parted /dev/sdc print
実行するコマンドは次の通りです。
$ sudo parted /dev/sdc print Model: ATA QEMU HARDDISK (scsi) Disk /dev/sdc: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 107GB 107GB ext4 primary 2 107GB 500GB 393GB xfs primary
パーティションのリサイズと確認
# ----------------------------------------------- # /dev/sdc の 1 番パーティションを 200GiB まで拡張します # (椎名まゆりの動画データ増加に対応) # ----------------------------------------------- # resizepart でパーティション 1 の終了位置を 200GiB に変更します sudo parted /dev/sdc resizepart 1 200GiB # 変更後の状態を確認します sudo parted /dev/sdc print # ファイルシステムも拡張します(ext4 の場合) # ※ resize2fs はマウントしたまま実行できます(ext4 のオンラインリサイズ) sudo resize2fs /dev/sdc1 # ファイルシステム・UUID・マウントポイントも含めて確認します lsblk -f /dev/sdc
実行するコマンドは次の通りです。
$ lsblk -f /dev/sdc NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sdc ├─sdc1 ext4 1.0 a1b2c3d4-e5f6-7890-abcd-ef1234567890 185.3G 3% /data/kurisu └─sdc2 xfs data f0e1d2c3-b4a5-6789-0fed-cba987654321
概要
『fdisk』と『parted』は Linux でディスクのパーティションテーブルを管理するための主要ツールです。『fdisk』は操作の直感性が高く学習コストが低いため、日常的な管理作業やスポットでの確認に向いています。一方『parted』は 2 TB を超える大容量ディスクや GPT の取り扱い、スクリプトによる自動化に優れています。パーティションを作成しただけではファイルシステムは存在しないため、mkfs によるフォーマットを別途行う必要があります。また、複数のパーティションをまとめて柔軟に管理したい場合は LVM(Logical Volume Manager) の利用も検討してください。ディスクの追加・交換作業では lsblk や fdisk -l でデバイス名を確認してから作業を進めると、誤ったデバイスを操作するミスを防げます。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。