fdiskコマンドでパーティションを管理する方法|lsblkでの確認やGPT対応も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > fdiskコマンドでパーティションを管理する方法|lsblkでの確認やGPT対応も
「ディスクのパーティション構成を確認したいけど、どうやればいいの?」
「fdiskを使ってみたけど、GPTには対応していないって表示される」
「2TB以上のディスクはfdiskで扱えないの?」
サーバーの構築やディスク増設で、パーティションの確認・操作が必要になる場面は少なくありません。

この記事では、fdisk コマンドを中心に、パーティション管理の実践的な手順を解説します。
lsblkblkid によるディスク情報の確認から、fdisk の対話モードでの操作、GPTディスクに対応した gdiskparted の使い分け、アライメント確認・スクリプト自動化・パーティション拡張といった実務Tips、トラブルシュートまで、現場で必要な知識をまとめました。RHEL 9 / Rocky Linux 9で動作確認済みです。

この記事のポイント

・fdisk -l でディスクとパーティション情報を一覧確認できる
・fdiskの操作はwを押すまで書き込まれない(途中でqで取り消し可能)
・2TB以上のディスクにはfdiskではなくpartedまたはgdiskを使う
・パーティション作成後はmkfsでフォーマットしてからマウントする
・partedはコマンド実行と同時にディスクに即時反映される(fdiskと異なり取り消し不可)


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

パーティションとは(MBRとGPTの違い)

パーティションとは、1台の物理ディスクを論理的に分割した領域のことです。
例えば「OSの領域」「データの領域」「スワップ領域」のように分けることで、障害時の影響範囲を限定したり、用途ごとに容量を管理できるようになります。

パーティションの構成情報は「パーティションテーブル」に記録されます。この形式には、大きく分けて2種類あります。

方式 対応容量 最大パーティション数 主な用途
MBR(Master Boot Record) 最大2TBまで 基本4つ(拡張含め最大15) 古いサーバー・BIOS環境
GPT(GUID Partition Table) 2TB超に対応 128(理論値) UEFI環境・大容量ディスク
現在のサーバーでは、UEFI+GPTが主流になっています。ただし、古い環境やBIOSブートのサーバーではMBRが使われていることもあるため、両方の知識が必要です。

※ どちらの形式かは fdisk -l の出力で「Disklabel type: dos」(MBR)または「Disklabel type: gpt」(GPT)で判別できます。

ディスク情報を確認する方法

パーティションの操作を行う前に、まず現在のディスク構成を正確に把握することが重要です。確認に使う代表的なコマンドを3つ紹介します。

1. lsblkでブロックデバイスを一覧表示する

lsblk(list block devices)は、ディスクとパーティションの構成をツリー形式で一覧表示するコマンドです。現在のディスク構成をざっくり把握するのに最適です。

# ブロックデバイスの一覧を表示 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 4G 0 part [SWAP] └─sda3 8:3 0 45.5G 0 part / sdb 8:16 0 100G 0 disk └─sdb1 8:17 0 100G 0 part /data

TYPEの列で「disk」が物理ディスク、「part」がパーティションです。どのパーティションがどこにマウントされているかも一目でわかります。

ファイルシステムの種類も確認したい場合は、-f オプションを付けてください。

# ファイルシステムの種類も表示 $ lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs a1b2c3d4-e5f6-7890-abcd-ef1234567890 /boot ├─sda2 swap b2c3d4e5-f6a7-8901-bcde-f12345678901 [SWAP] └─sda3 xfs c3d4e5f6-a7b8-9012-cdef-123456789012 /

2. fdisk -lでパーティション情報を表示する

fdisk -l は、ディスクのパーティションテーブルを詳細に表示します。パーティションのセクタ範囲やサイズ、タイプなどを確認できます。

fdisk -l の実行にはroot権限が必要です。一般ユーザーでは情報が表示されません。

# 全ディスクのパーティション情報を表示 $ sudo fdisk -l Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors Disklabel type: dos Disk identifier: 0x000a1b2c Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1026047 1024000 500M 83 Linux /dev/sda2 1026048 9414655 8388608 4G 82 Linux swap /dev/sda3 9414656 104857599 95442944 45.5G 83 Linux

「Disklabel type: dos」はMBR形式であることを示しています。GPTの場合は「Disklabel type: gpt」と表示されます。

特定のディスクだけを確認したい場合は、デバイスパスを指定します。

# 特定のディスクを指定して表示 $ sudo fdisk -l /dev/sdb

3. blkidでUUIDとファイルシステムを確認する

blkid は、各パーティションのUUID(一意識別子)とファイルシステムの種類を表示するコマンドです。/etc/fstab でマウント設定を記述する際に、UUIDが必要になります。

# UUID・ファイルシステム情報を表示 $ sudo blkid /dev/sda1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="xfs" PARTUUID="000a1b2c-01" /dev/sda2: UUID="b2c3d4e5-f6a7-8901-bcde-f12345678901" TYPE="swap" PARTUUID="000a1b2c-02" /dev/sda3: UUID="c3d4e5f6-a7b8-9012-cdef-123456789012" TYPE="xfs" PARTUUID="000a1b2c-03"

デバイス名(/dev/sdaなど)はディスクの接続順によって変わる可能性がありますが、UUIDは変わりません。/etc/fstab にはデバイス名ではなくUUIDで記述するのが現在の標準です。

fdiskでパーティションを操作する

ここからは、fdisk の対話モードを使ってパーティションの作成・削除を行う手順を説明します。

※ パーティション操作はデータ消失に直結します。必ず対象のデバイスが正しいことを確認し、重要なデータはバックアップを取ってから作業してください。

4. 対話モードの基本操作

fdisk にデバイスパスを指定して起動すると、対話モードに入ります。

# fdiskの対話モードを起動(/dev/sdbの場合) $ sudo fdisk /dev/sdb Welcome to fdisk (util-linux 2.37.4). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):

対話モードで使用する主要なコマンドは以下のとおりです。

m:ヘルプを表示する
p:現在のパーティションテーブルを表示する
n:新しいパーティションを作成する
d:パーティションを削除する
t:パーティションのタイプを変更する
w:変更をディスクに書き込んで終了する
q:変更を保存せずに終了する

重要なポイントとして、w を実行するまでは変更はディスクに反映されません。操作を間違えた場合は q で終了すれば、何も変更されずに抜けられます。

5. 新しいパーティションを作成する

対話モードで n を入力すると、パーティションの作成が始まります。ここでは、空のディスク /dev/sdb にパーティションを1つ作成する例を示します。

# 対話モードで n を入力 Command (m for help): n # MBRの場合、パーティション種別を選択 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p # パーティション番号を指定(通常はデフォルトのまま) Partition number (1-4, default 1): 1 # 開始セクタを指定(デフォルトのまま Enter) First sector (2048-209715199, default 2048): # 終了セクタを指定(全体を使う場合はデフォルトのまま) # 特定のサイズを指定する場合は +50G のように入力 Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +50G Created a new partition 1 of type 'Linux' and of size 50 GiB.

サイズの指定は、+10G(10ギガバイト)、+500M(500メガバイト)のように記述します。残りの領域を全て使う場合は、そのままEnterを押してください。

この時点ではまだディスクに書き込まれていません。p で内容を確認してから w で書き込みましょう。

6. パーティションを削除する

対話モードで d を入力すると、既存のパーティションを削除できます。

# 対話モードで d を入力 Command (m for help): d Partition number (1-3, default 3): 3 Partition 3 has been deleted.

パーティションが1つしかない場合は、番号の入力を求められずにそのまま削除されます。削除後も w を実行するまではディスクに反映されないため、間違えた場合は q で抜けてください。

7. 変更を書き込む(w)と取り消す(q)

パーティションの作成・削除が終わったら、p で内容を確認してから w で書き込みます。

# 現在の設定を確認 Command (m for help): p # 問題なければ書き込み Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.

w を実行した瞬間にパーティションテーブルがディスクに書き込まれます。この操作は取り消せません。

書き込みたくない場合は q で終了してください。

# 変更を保存せずに終了 Command (m for help): q

※ パーティションを作成しただけでは、まだ使えません。mkfs コマンドでファイルシステムを作成し、mount でマウントする必要があります。

# ファイルシステムを作成(xfsの場合:RHEL/Rocky Linux推奨) $ sudo mkfs.xfs /dev/sdb1 # ext4の場合(Ubuntu推奨) $ sudo mkfs.ext4 /dev/sdb1 # マウントポイントを作成してマウント $ sudo mkdir /data $ sudo mount /dev/sdb1 /data # マウント確認 $ df -hT /data

OS再起動後も自動でマウントされるようにするには、/etc/fstab にUUIDで追記します。デバイス名(/dev/sdb1)はディスクの接続順で変わる可能性があるため、UUIDを使うのが安全です。

# UUIDを確認する $ sudo blkid /dev/sdb1 /dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="xfs" PARTUUID="..." # /etc/fstabに追記する(以下の行をエディタで追加) UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /data xfs defaults 0 0 # 設定を検証する(エラーがなければOK) $ sudo mount -a

応用・実務Tips

GPTディスクの操作(gdisk / sgdisk)

fdisk は現在のバージョン(util-linux 2.26以降)ではGPTの読み書きに対応していますが、GPTディスクを本格的に操作する場合は gdisk(GPT fdisk)の方が確実です。

gdisk の対話モードは fdisk とほぼ同じ操作感で使えます。

# gdiskの対話モードを起動 $ sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.3 # 主要コマンドはfdiskと同じ # p: 表示、n: 作成、d: 削除、w: 書き込み、q: 終了 Command (? for help): p

スクリプトで自動化したい場合は、sgdisk(gdiskのコマンドライン版)が便利です。

# sgdiskでGPTパーティションを作成(+0は残り全体を使用) $ sudo sgdisk -n 1:0:+50G /dev/sdb # パーティション情報を表示 $ sudo sgdisk -p /dev/sdb

gdisk / sgdisk がインストールされていない場合は、以下のコマンドでインストールしてください。

# RHEL系(dnf) $ sudo dnf install gdisk # または(yum) $ sudo yum install gdisk

partedコマンドとの使い分け

parted は、MBRとGPTの両方に対応したパーティション操作ツールです。fdisk/gdisk との主な違いを整理すると以下のようになります。

比較項目 fdisk gdisk parted
MBR対応
GPT対応 △(制限あり) ◯(完全対応) ◯(完全対応)
2TB超のディスク ×
スクリプト自動化 △(expect等が必要) ◯(sgdiskで対応) ◯(-sオプション)
変更の即時反映 wコマンドで確定 wコマンドで確定 実行と同時に反映
パーティション拡張 × × ◯(resizepart)
【重要な注意点】partedfdisk と異なり、変更が即座にディスクに反映されます。取り消しができないため、操作前には必ずバックアップを取ってください。

parted の基本的な使い方を示します。

# partedでパーティション情報を表示 $ sudo parted /dev/sda print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 525MB 524MB primary xfs boot 2 525MB 4820MB 4295MB primary linux-swap(v1) 3 4820MB 53.7GB 48.9GB primary xfs

2TB以上の大容量ディスクを扱う場合は、parted でGPTパーティションテーブルを作成してから使います。

# /dev/sdc(4TBディスク)にGPTでパーティションを作成する $ sudo parted /dev/sdc (parted) mklabel gpt # GPTパーティションテーブルを作成する(既存データは全て失われる) (parted) unit GiB # 単位をGiBに設定する (parted) mkpart primary xfs 1GiB 100% # 1GiBから終端まで1つのパーティションを作成する # ※先頭1GiBを空けるのはアライメント最適化のための慣例 (parted) print Number Start End Size File system Name Flags 1 1.00GiB 4096GiB 4095GiB primary (parted) quit # フォーマットする $ sudo mkfs.xfs /dev/sdc1

使い分けの目安は以下のとおりです。

fdisk:MBRディスクの操作に最適。対話モードで安全に操作できる(wまで反映されない)
gdisk:GPTディスクの操作に最適。fdiskと同じ操作感
parted:MBR/GPT両対応。2TB超のディスクやリサイズ・スクリプト自動化に強い。ただし変更が即時反映されるため注意

partedの非インタラクティブモード(-s オプション)

parted -s(スクリプトモード)を使うと、対話プロンプトなしにコマンドを直接実行できます。シェルスクリプトからディスクセットアップを自動化したい運用現場でよく使われます。

# -s オプションでGPTラベルを非インタラクティブに設定する $ sudo parted -s /dev/sdb mklabel gpt # 続けてパーティションを作成する $ sudo parted -s /dev/sdb mkpart primary xfs 1MiB 100% # シェルスクリプトでまとめて実行する例 #!/bin/bash set -euo pipefail DISK="/dev/sdb" sudo parted -s "${DISK}" mklabel gpt sudo parted -s "${DISK}" mkpart primary xfs 1MiB 512MiB sudo parted -s "${DISK}" mkpart primary xfs 512MiB 100% sudo parted -s "${DISK}" print

注意:-s オプションは確認プロンプトをスキップするため、既存データがあるディスクに対して実行すると取り返しのつかない消去が発生します。実行前に必ず lsblk でデバイス名を確認してください。

パーティションのアライメント確認(align-check)

SSDや4KネイティブセクタのHDDでは、パーティションの開始位置が物理セクタ境界と合っていない(アライメントずれ)と、読み書き性能が著しく低下することがあります。partedalign-check サブコマンドで確認できます。

# パーティション番号1のアライメントを確認する $ sudo parted /dev/sdb align-check optimal 1 1 aligned ← 「aligned」であればOK # NGの場合(アライメントずれ) $ sudo parted /dev/sdb align-check optimal 1 1 not aligned ← パーティションを作り直す必要がある

mkpart の開始位置を 1MiB で指定しておけば、ほとんどの環境でアライメントが正常になります。問題が発生した場合は、パーティションを削除して 1MiB 開始で作り直してください。

既存パーティションを拡張する(resizepart)

ディスクを拡張した後などに、既存パーティションをディスク末尾まで広げたい場合は partedresizepart を使います。

# パーティション1をディスク末尾まで拡張する # 書式: resizepart パーティション番号 新しい終了位置 $ sudo parted /dev/sdb resizepart 1 100% # 拡張後の確認 $ sudo parted /dev/sdb print

重要:resizepart はパーティションの境界を移動するだけです。ファイルシステム自体を拡張するには、XFSなら xfs_growfs、ext4なら resize2fs を別途実行する必要があります。

# XFSファイルシステムを拡張する(マウントしたまま実行可能) $ sudo xfs_growfs /data # ext4ファイルシステムを拡張する(アンマウント推奨) $ sudo resize2fs /dev/sdb1

パーティション操作後のカーネル通知(partprobe)

パーティションテーブルを変更しても、OSのカーネルが古い情報をキャッシュしていて、変更が反映されないことがあります。そのような場合は partprobe コマンドでカーネルにパーティション情報の再読み込みを指示します。

# パーティションテーブルの変更をカーネルに通知 $ sudo partprobe /dev/sdb # 反映されたか確認 $ lsblk /dev/sdb

partprobeparted パッケージに含まれています。インストールされていない場合は sudo dnf install parted(RHEL系)でインストールしてください。

トラブルシュート・エラー対処

「Warning: The existing disk label on /dev/sdX will be destroyed.」が表示された場合

partedmklabel を実行すると、次のような警告が表示されることがあります。

Warning: The existing disk label on /dev/sdb will be destroyed. Continue? Yes/No?

この警告はパーティションテーブル(構成情報)が上書きされることを示しています。データ本体への直接被害はありませんが、パーティション情報が消えると既存データへのアクセスが事実上不可能になります。

新規ディスクの場合:「Yes」で続行して問題ありません
既存データがある場合:必ず「No」で中断し、バックアップを取ってから再実行してください

「Device or resource busy」が出た時の対処法

パーティションの削除や変更時に以下のエラーが表示されることがあります。

Re-reading the partition table failed.: Device or resource busy

このエラーは、対象のパーティションがマウント中やスワップとして使用中の場合に発生します。

対処手順は以下のとおりです。

手順1:マウント状態を確認する

# マウント状態を確認 $ mount | grep sdb /dev/sdb1 on /data type xfs (rw,relatime)

手順2:アンマウントしてから再度操作する

# アンマウント $ sudo umount /dev/sdb1 # スワップパーティションの場合 $ sudo swapoff /dev/sdb2

手順3:それでもbusyの場合、プロセスが使用していないか確認する

# 対象デバイスを使用しているプロセスを確認 $ sudo lsof /data # または $ sudo fuser -mv /data

パーティション変更が反映されない場合の確認手順

fdiskw を実行したのに、lsblk の表示が変わらない場合があります。

原因1:カーネルがパーティションテーブルを再読み込みしていない

# partprobeでカーネルに通知 $ sudo partprobe /dev/sdb # それでも反映されない場合 $ sudo partx -a /dev/sdb # udevadmで変更を反映させる方法も有効 $ sudo udevadm settle # 確認 $ lsblk /dev/sdb

原因2:既存パーティションがマウント中のため、カーネルが更新を拒否している
この場合はアンマウント後に partprobe を実行してください。最終手段として再起動すれば、確実にパーティション情報が再読み込みされます。

また、2TB以上のディスクに対してfdiskでパーティションを作成しようとした場合、以下の警告が表示されることがあります。

WARNING: The size of this disk is 4.0 TB (4398046511104 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use parted(1) and opt for GPT.

この場合は fdisk ではなく、parted コマンドを使ってGPT形式でパーティションを作成してください(前述の「partedコマンドとの使い分け」参照)。

【重要】パーティション操作の危険性

パーティションの削除やテーブルの書き換えは、データ消失に直結する非常に危険な操作です。以下の点を必ず守ってください。

対象デバイスの確認:操作前に lsblk でデバイス名を必ず確認する。/dev/sda と /dev/sdb を間違えると、OSごと消えます
バックアップ:重要なデータは操作前に必ずバックアップを取る
本番サーバーでの注意:稼働中のシステムパーティション(/や/boot)は絶対に操作しない。メンテナンスモードやレスキューモードで作業すること
fdiskの安全弁を活用:w を実行するまで変更は反映されない。不安な場合は q で抜ける
partedは即時反映:partedfdisk と違い、コマンド実行と同時にディスクに反映される。取り消しができないため、特に慎重に操作すること

本記事のまとめ

やりたいこと コマンド
ディスクとパーティションの構成をツリー表示 lsblk
パーティションテーブルの詳細を表示 sudo fdisk -l
UUIDとファイルシステムを確認 sudo blkid
MBRディスクのパーティションを操作 sudo fdisk /dev/sdb
GPTディスクのパーティションを操作 sudo gdisk /dev/sdb
GPTパーティションをスクリプトで作成 sudo sgdisk -n 1:0:+50G /dev/sdb
2TB以上のディスクにGPTパーティションを作成 sudo parted /dev/sdc mklabel gpt
MBR/GPT両対応でパーティション情報を表示 sudo parted /dev/sda print
partedを非インタラクティブで実行(スクリプト用) sudo parted -s /dev/sdb mklabel gpt
パーティションのアライメントを確認 sudo parted /dev/sdb align-check optimal 1
既存パーティションをディスク末尾まで拡張 sudo parted /dev/sdb resizepart 1 100%
パーティションをxfsでフォーマット sudo mkfs.xfs /dev/sdb1
パーティション変更をカーネルに通知 sudo partprobe /dev/sdb

ディスク追加・パーティション設計から、サーバー構築の全体像を学びませんか?

fdiskでパーティションを設計・管理できるようになると、サーバーの柔軟な構成が可能になります。その力を活かして、体系的にLinuxサーバー構築を学んでみませんか。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。