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


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

この記事では、fdisk コマンドを中心に、パーティション管理の実践的な手順を解説します。
lsblkblkid によるディスク情報の確認から、fdisk の対話モードでの操作、GPTディスクに対応した gdiskparted の使い分け、トラブルシュートまで、現場で必要な知識をまとめました。

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

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

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

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

MBR(Master Boot Record):古くからある形式。最大4つのプライマリパーティション(または3つ+拡張パーティション)に対応。ディスク容量は最大2TBまでしか扱えない
GPT(GUID Partition Table):UEFIブートで使われる新しい形式。パーティション数は128個まで対応可能で、2TB超の大容量ディスクも扱える

現在のサーバーでは、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:0 0 100G 0 disk └─sdb1 8:1 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.32.1). 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): # 終了セクタを指定(全体を使う場合はデフォルトのまま) # 特定のサイズを指定する場合は +10G のように入力 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の場合) $ sudo mkfs.xfs /dev/sdb1 # マウントポイントを作成してマウント $ sudo mkdir /data $ sudo mount /dev/sdb1 /data

応用・実務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系 $ sudo yum install gdisk # または $ sudo dnf install gdisk

partedコマンドとの使い分け

parted は、MBRとGPTの両方に対応したパーティション操作ツールです。fdisk/gdisk と異なり、変更が即座にディスクに反映される点に注意してください。

# 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

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

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

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

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

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

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

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

「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 # 確認 $ lsblk /dev/sdb

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

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

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

対象デバイスの確認:操作前に 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
MBR/GPT両対応でパーティション情報を表示 sudo parted /dev/sda print
パーティション変更をカーネルに通知 sudo partprobe /dev/sdb

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

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

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

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

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

宮崎 智広

この記事を書いた人

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

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

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

\n\n\n\n\n\n\n\n\n