「fdiskを使ってみたけど、GPTには対応していないって表示される」
「2TB以上のディスクはfdiskで扱えないの?」
サーバーの構築やディスク増設で、パーティションの確認・操作が必要になる場面は少なくありません。
この記事では、
fdisk コマンドを中心に、パーティション管理の実践的な手順を解説します。lsblk や blkid によるディスク情報の確認から、fdisk の対話モードでの操作、GPTディスクに対応した gdisk・parted の使い分け、アライメント確認・スクリプト自動化・パーティション拡張といった実務Tips、トラブルシュートまで、現場で必要な知識をまとめました。RHEL 9 / Rocky Linux 9で動作確認済みです。この記事のポイント
・fdisk -l でディスクとパーティション情報を一覧確認できる
・fdiskの操作はwを押すまで書き込まれない(途中でqで取り消し可能)
・2TB以上のディスクにはfdiskではなくpartedまたはgdiskを使う
・パーティション作成後はmkfsでフォーマットしてからマウントする
・partedはコマンド実行と同時にディスクに即時反映される(fdiskと異なり取り消し不可)
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
パーティションとは(MBRとGPTの違い)
パーティションとは、1台の物理ディスクを論理的に分割した領域のことです。例えば「OSの領域」「データの領域」「スワップ領域」のように分けることで、障害時の影響範囲を限定したり、用途ごとに容量を管理できるようになります。
パーティションの構成情報は「パーティションテーブル」に記録されます。この形式には、大きく分けて2種類あります。
| 方式 | 対応容量 | 最大パーティション数 | 主な用途 |
|---|---|---|---|
| MBR(Master Boot Record) | 最大2TBまで | 基本4つ(拡張含め最大15) | 古いサーバー・BIOS環境 |
| GPT(GUID Partition Table) | 2TB超に対応 | 128(理論値) | UEFI環境・大容量ディスク |
※ どちらの形式かは
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
ファイルシステムの種類も確認したい場合は、
-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
特定のディスクだけを確認したい場合は、デバイスパスを指定します。
# 特定のディスクを指定して表示 $ 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"
/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.
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
/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) |
parted は fdisk と異なり、変更が即座にディスクに反映されます。取り消しができないため、操作前には必ずバックアップを取ってください。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
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では、パーティションの開始位置が物理セクタ境界と合っていない(アライメントずれ)と、読み書き性能が著しく低下することがあります。parted の align-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)
ディスクを拡張した後などに、既存パーティションをディスク末尾まで広げたい場合はparted の resizepart を使います。# パーティション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
partprobe は parted パッケージに含まれています。インストールされていない場合は sudo dnf install parted(RHEL系)でインストールしてください。トラブルシュート・エラー対処
「Warning: The existing disk label on /dev/sdX will be destroyed.」が表示された場合
parted で mklabel を実行すると、次のような警告が表示されることがあります。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)
# アンマウント $ sudo umount /dev/sdb1 # スワップパーティションの場合 $ sudo swapoff /dev/sdb2
# 対象デバイスを使用しているプロセスを確認 $ sudo lsof /data # または $ sudo fuser -mv /data
パーティション変更が反映されない場合の確認手順
fdisk で w を実行したのに、lsblk の表示が変わらない場合があります。・原因1:カーネルがパーティションテーブルを再読み込みしていない
# partprobeでカーネルに通知 $ sudo partprobe /dev/sdb # それでも反映されない場合 $ sudo partx -a /dev/sdb # udevadmで変更を反映させる方法も有効 $ sudo udevadm settle # 確認 $ lsblk /dev/sdb
この場合はアンマウント後に
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は即時反映:
parted は fdisk と違い、コマンド実行と同時にディスクに反映される。取り消しができないため、特に慎重に操作すること本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ディスクとパーティションの構成をツリー表示 | 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:ファイルシステムを検査する(fsck)
- 前のページへ:パーティションテーブルを表示する(fdisk -l)
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます