どーも!marusukeです!
この記事では、Linuxでディスクのパーティションを管理するfdiskコマンドについて解説します。
この記事で分かることは次のとおりです。
- パーティション情報を確認する方法
- 新しいパーティションを作成する方法
- パーティションを削除する方法
- GPTとMBRの違い
fdiskを使う際の注意点
注意
パーティション操作を誤ると、ディスク内のデータを失う可能性があります。重要なデータをバックアップし、操作対象のデバイス名を十分に確認してから実行してください。
fdiskコマンドとは
fdisk [オプション] デバイス
fdiskは、ディスクのパーティションテーブルを確認・作成・変更・削除するためのコマンドです。
現在のfdiskは、主に次のパーティションテーブルに対応しています。
- GPT
- MBR(DOS)
- BSD
- Sun
- SGI
以前はMBR用のツールとして扱われることが多くありましたが、現在のfdiskはGPTにも対応しています。
一般的な新しいPCやUEFI環境では、特別な理由がなければGPTを選択するのがおすすめです。
ディスクとパーティションの違い
fdiskを使う前に、デバイス名の違いを確認しておきましょう。
/dev/sdb ディスク全体
/dev/sdb1 /dev/sdb内の1番目のパーティション
/dev/sdb2 /dev/sdb内の2番目のパーティション
fdiskでパーティションを作成するときは、基本的に/dev/sdb1ではなく、ディスク全体を表す/dev/sdbを指定します。
NVMe SSDでは、次のような名前になります。
/dev/nvme0n1 ディスク全体
/dev/nvme0n1p1 1番目のパーティション
ディスクを確認する
最初にlsblkコマンドで、接続されているディスクを確認します。
lsblk
出力例は次のとおりです。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part /
sdb 8:16 0 20G 0 disk
この例では、/dev/sdaがシステムディスク、/dev/sdbが追加された20GBのディスクです。
以降は、練習用ディスクとして/dev/sdbを使用します。
パーティション情報を表示する
特定のディスクのパーティション情報を表示するには、-lオプションを使用します。
sudo fdisk -l /dev/sdb
すべてのディスクを表示する場合は、デバイスを省略します。
sudo fdisk -l
主な確認項目は次のとおりです。
| 項目 | 説明 |
|---|---|
| Disk | ディスク名と容量 |
| Sector size | 論理・物理セクターサイズ |
| Disklabel type | パーティションテーブルの種類 |
| Device | パーティション名 |
| Start / End | 開始・終了セクター |
| Size | パーティション容量 |
| Type | パーティションタイプ |
Disklabel typeがgptならGPT、dosならMBRです。
fdiskを起動する
ディスクのパーティションを操作するには、ディスク全体のデバイス名を指定します。
sudo fdisk /dev/sdb
起動後は対話モードになり、1文字のコマンドを入力して操作します。
主なコマンドは次のとおりです。
| コマンド | 説明 |
|---|---|
m | ヘルプを表示 |
p | 現在のパーティションテーブルを表示 |
n | 新しいパーティションを作成 |
d | パーティションを削除 |
t | パーティションタイプを変更 |
g | 新しいGPTパーティションテーブルを作成 |
o | 新しいMBRパーティションテーブルを作成 |
w | 変更をディスクへ書き込んで終了 |
q | 変更を保存せずに終了 |
wを実行するまでは、通常、変更はディスクへ書き込まれません。操作を間違えた場合は、qで終了してください。
GPTパーティションテーブルを作成する
新しい空のディスクにGPTを作成する場合は、fdiskを起動してgを入力します。
Command (m for help): g
Created a new GPT disklabel.
gを実行すると、新しいパーティションテーブルが作成されます。既存データがあるディスクでは実行しないでください。
現在の状態はpで確認できます。
Command (m for help): p
新しいパーティションを作成する
新しいパーティションを作成するには、nを入力します。
Command (m for help): n
パーティション番号と開始セクターは、通常はデフォルトのままEnterキーを押します。
Partition number (1-128, default 1):
First sector (2048-41943006, default 2048):
10GiBのパーティションを作成する場合は、終了位置に+10Gを指定します。
Last sector, +/-sectors or +/-size{K,M,G,T,P}: +10G
作成結果を確認します。
Command (m for help): p
問題がなければ、wで保存します。
Command (m for help): w
出力例:
The partition table has been altered.
Syncing disks.
これで、通常は/dev/sdb1というパーティションが作成されます。
パーティションを削除する
パーティションを削除するには、対話モードでdを入力します。
Command (m for help): d
複数のパーティションがある場合は、削除する番号を指定します。
Partition number (1,2, default 2): 2
pで結果を確認します。
Command (m for help): p
問題がなければwで保存します。
Command (m for help): w
パーティションを削除すると、その領域内のファイルへ通常の方法でアクセスできなくなります。デバイス名を必ず確認してください。
ファイルシステムを作成する
パーティションを作成しただけでは、通常はファイルを保存できません。
ext4ファイルシステムを作成する場合は、次のコマンドを実行します。
sudo mkfs.ext4 /dev/sdb1
この操作を実行すると、対象パーティション内の既存データは失われます。
パーティションをマウントする
マウント先のディレクトリを作成します。
sudo mkdir -p /mnt/data
作成したパーティションをマウントします。
sudo mount /dev/sdb1 /mnt/data
マウントできたことを確認します。
lsblk
または、次のコマンドでも確認できます。
df -h /mnt/data
💡 実は、このfdiskでのパーティション操作を「手を動かして練習」しようとすると、WSL2には操作できる空きディスクが無いという壁にぶつかります。
じゃあLinux学習はどこまでWSL2でできて、どこからVPS(本物のサーバー)が必要なのか? LPICのレベル別に整理しました。
→ Linux学習環境の作り方|WSL2とVPSの使い分け
fdiskの主なオプション
| オプション | 説明 |
|---|---|
-l, --list | パーティションテーブルを一覧表示 |
-x, --list-details | 詳細情報を表示 |
-b, --sector-size | セクターサイズを指定 |
-o, --output | 表示する列を指定 |
--bytes | 容量をバイト単位で表示 |
-h, --help | ヘルプを表示 |
-V, --version | バージョンを表示 |
通常の確認や作成では、主に-lを使用します。
利用できるオプションは、環境のバージョンによって異なる場合があります。次のコマンドでも確認できます。
fdisk --help
fdiskを使う際の注意点
操作するデバイス名を確認する
/dev/sdaと/dev/sdbを間違えると、システムや重要なデータを破壊する可能性があります。
操作前には、必ず次のコマンドで確認してください。
lsblk
sudo fdisk -l
使用中のディスクを操作しない
マウント中のパーティションや、システムが使用しているディスクの変更は避けてください。
必要に応じて、対象のパーティションをアンマウントします。
sudo umount /dev/sdb1
パーティションとファイルシステムは別物
fdiskが操作するのは、ディスク上のパーティションテーブルです。
ext4やXFSなどのファイルシステムを拡張・縮小する操作とは異なります。既存パーティションのサイズ変更では、ファイルシステム側の操作も必要です。
特に縮小は手順を誤るとデータを失うため、十分な知識がない状態では行わないでください。
自動処理にはsfdiskを検討する
fdiskは人が対話形式で操作することを主な目的としています。
スクリプトからパーティションを作成する場合は、sfdiskなどの利用を検討しましょう。
まとめ
fdiskは、Linuxでパーティションテーブルを管理するためのコマンドです。
基本的な操作の流れは次のとおりです。
lsblkで対象ディスクを確認するfdisk -lでパーティション情報を確認するfdisk /dev/sdbで対話モードを開始するnやdでパーティションを操作するpで変更内容を確認するwで変更を保存する- 必要に応じてファイルシステムを作成してマウントする
fdiskは便利な一方、操作を誤るとデータを失う可能性があります。必ずバックアップを取り、対象ディスクを確認してから実行しましょう。



コメント