「fdiskを使ってみたけど、GPTには対応していないって表示される」
サーバーの構築やディスク増設で、パーティションの確認・操作が必要になる場面は少なくありません。
この記事では、
fdisk コマンドを中心に、パーティション管理の実践的な手順を解説します。lsblk や blkid によるディスク情報の確認から、fdisk の対話モードでの操作、GPTディスクに対応した gdisk・parted の使い分け、トラブルシュートまで、現場で必要な知識をまとめました。でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
パーティションとは(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
ファイルシステムの種類も確認したい場合は、
-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.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.
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
partprobe は parted パッケージに含まれています。インストールされていない場合は 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)
# アンマウント $ 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 # 確認 $ lsblk /dev/sdb
この場合はアンマウント後に
partprobe を実行してください。最終手段として再起動すれば、確実にパーティション情報が再読み込みされます。【重要】パーティション操作の危険性
パーティションの削除やテーブルの書き換えは、データ消失に直結する非常に危険な操作です。以下の点を必ず守ってください。・対象デバイスの確認:操作前に
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 |
| MBR/GPT両対応でパーティション情報を表示 | sudo parted /dev/sda print |
| パーティション変更をカーネルに通知 | sudo partprobe /dev/sdb |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
