言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. fdisk / parted(ディスクパーティション管理)

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 gptGPT パーティションテーブルを作成します。2 TB を超えるディスクや UEFI 環境に適しています。
parted /dev/sdb mklabel msdosMBR(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) の利用も検討してください。ディスクの追加・交換作業では lsblkfdisk -l でデバイス名を確認してから作業を進めると、誤ったデバイスを操作するミスを防げます。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。