はじめに

こんにちは!今回はfdiskコマンドについて解説します。

fdiskはディスクのパーティションを管理・作成・削除するコマンドです。サーバーのセットアップやストレージの初期化など、システム管理者が絶対に覚えておくべき重要なコマンドですね。

新しいディスクを接続したり、既存のパーティションを変更したりするときに活躍します。ただし、データ消失のリスクがあるので、取り扱いには要注意!

fdiskコマンドとは

fdiskは、ディスクのパーティションテーブルを表示・編集するための外部コマンドです。“format disk"の略で、ディスクの分割管理に使われます。

ディスクを複数のパーティションに分けたり、パーティションのサイズを変更したり、ブートフラグを設定したりできます。MBR(マスターブートレコード)形式のパーティション管理に特化しているため、最近はGPT形式のpartedgdiskに徐々に置き換わっていますが、まだまだ現役です。

基本構文

1
fdisk [オプション] デバイス名

デバイス名は通常/dev/sda/dev/sdbなどです。パーティション指定(/dev/sda1など)はできません。

主なオプション

オプション 説明
-l パーティション情報を表示(編集モードに入らない)
-u セクタ単位で表示
-c DOSモードを無効化
-s パーティションサイズを表示
-v バージョン情報を表示

使用例

例1: パーティション一覧を表示

1
sudo fdisk -l

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00051177

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048 2099199  2097152    1G 83 Linux
/dev/sda2     2099200 209715199 207616000 99GB 83 Linux

全ディスクのパーティション情報を表示します。-lオプションは安全な表示モード。

例2: 特定のディスクのパーティション情報を確認

1
sudo fdisk -l /dev/sda

実行結果:

1
2
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
(詳細なパーティション情報が表示される)

特定のディスク(/dev/sda)の情報のみを表示します。

例3: ディスクのサイズを確認

1
sudo fdisk -s /dev/sda

実行結果:

1
104857600

ディスクの総容量をキロバイト単位で表示します。この例では約100GB。

例4: インタラクティブモードで パーティション管理(新規パーティション作成)

1
sudo fdisk /dev/sdb

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Welcome to fdisk (util-linux 2.36.1).
Changes will not be written to disk until explicitly told to.

Command (m for help): m

Generic advice:
  q quit without saving changes
  w write table to disk and exit

(メニューが表示される)

デバイス名のみ指定すると、インタラクティブなエディタモードになります。パーティションの作成・削除・編集ができます。

例5: インタラクティブモードでメニューを表示

1
2
sudo fdisk /dev/sdb
Command (m for help): m

実行結果:

1
2
3
4
5
6
7
8
9
Help:
  d   delete a partition
  l   list known partition types
  m   print this menu
  n   add a new partition
  p   print the partition table
  q   quit without saving changes
  t   change a partition type
  w   write table to disk and exit

主要なコマンド一覧が表示されます。

例6: パーティションテーブルを表示(インタラクティブモード)

1
2
sudo fdisk /dev/sdb
Command (m for help): p

実行結果:

1
2
3
4
5
Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes

Device       Start       End   Sectors Size Type
/dev/sdb1     2048 104857599 104855552  50G Linux

現在のパーティション配置を確認できます。

例7: 新しいパーティションを作成する

1
2
3
4
5
6
sudo fdisk /dev/sdb
Command (m for help): n
Partition number (1-4, default 1): 2
First sector (104857600-104857599, default 104857600):
Last sector ...: +10G
Command (m for help): w

実行結果:

1
2
3
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

新しいパーティションを作成します。nでパーティション追加、wで書き込み。

例8: パーティションを削除する

1
2
3
4
sudo fdisk /dev/sdb
Command (m for help): d
Partition number (1,2, default 2): 2
Command (m for help): w

実行結果:

1
2
Partition deleted.
The partition table has been altered.

パーティションを削除します。dで削除、wで書き込み。

例9: ブートフラグを設定

1
2
3
4
sudo fdisk /dev/sda
Command (m for help): a
Partition number (1,2, default 1): 1
Command (m for help): w

実行結果:

1
The boot flag has been set to '/dev/sda1'.

ブートパーティションを指定します。

例10: パーティションのタイプを変更

1
2
3
4
sudo fdisk /dev/sdb
Command (m for help): t
Partition number (1-4, default 1): 1
Hex code or alias for type (type L to list all): 83

実行結果:

1
Changed type of partition 'Linux' to 'Linux'.

パーティションタイプを変更します。83はLinux標準タイプ。

Tips・注意点

危険!データが消える

1
2
# ⚠️ 絶対に間違えないで!
sudo fdisk /dev/sda

fdiskで誤ったデバイスをいじると、システムが起動しなくなったり、大事なデータが消えたりします。デバイス名をしっかり確認してから実行してください。

変更は即座には反映されない

1
2
3
4
5
6
7
8
# まず確認
sudo fdisk -l /dev/sdb

# インタラクティブモード
sudo fdisk /dev/sdb
# ...編集...
# wで書き込むまで安全
Command (m for help): w

wコマンドで明示的に書き込むまでは、変更が保存されません。これは安全な仕様です。

新しいパーティションを使う前に

1
2
3
4
5
# パーティション作成後、ファイルシステムをフォーマット
sudo mkfs.ext4 /dev/sdb1

# マウント
sudo mount /dev/sdb1 /mnt

fdiskでパーティションを作成しただけでは、まだ使えません。mkfsでファイルシステムを作成し、mountでマウントして初めて使用可能になります。

GPT形式のディスクはgdiskを使う

1
2
# 最近のディスク(GPT形式)の場合
sudo gdisk /dev/sda

fdiskはMBR形式に特化。GPT形式のディスクにはgdiskpartedを使いましょう。

実践的な使い方

新しいディスクを初期化する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. ディスク一覧確認
sudo fdisk -l

# 2. インタラクティブモードで編集
sudo fdisk /dev/sdb

# 3. パーティション作成(n)
# 4. 確認(p)
# 5. 書き込み(w)

# 6. ファイルシステム作成
sudo mkfs.ext4 /dev/sdb1

# 7. マウント準備
sudo mkdir /mnt/data
sudo mount /dev/sdb1 /mnt/data

新しいディスクをシステムに統合するまでの一連の流れです。

デュアルブート環境を設定

1
2
3
4
5
# ブート可能にしたいパーティションを指定
sudo fdisk /dev/sda
Command (m for help): a
Partition number: 1
Command (m for help): w

ブートフラグを正しいパーティションに設定することで、デュアルブート環境を構築できます。

ディスク容量を再配分

1
2
3
4
5
6
7
8
9
# 既存パーティションを削除
sudo fdisk /dev/sda
Command (m for help): d
Partition number: 2

# 新しいサイズで再作成
Command (m for help): n
# ...サイズ指定...
Command (m for help): w

パーティションを削除・再作成することで容量を再配分できます。ただし、データバックアップは必須!

まとめ

fdiskコマンドのポイント:

  • ディスクパーティション管理の基本ツール
  • -l: パーティション情報表示(安全)
  • -s: ディスク容量表示
  • インタラクティブモード(デバイス名のみ指定)でパーティション編集
  • n: 新規パーティション作成
  • d: パーティション削除
  • w: 変更を書き込む(これまで戻せない!)
  • q: 変更を捨てて終了
  • よく使う組み合わせ: sudo fdisk -l, sudo fdisk /dev/sdb

ディスク管理は重要だけど危険。本番環境では特に慎重に!バックアップを取ってから作業することを強くお勧めします。