はじめに

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

partedはディスクのパーティションを管理するコマンドで、特にGPT(GUID Partition Table)形式に対応しています。最新のサーバーやPCでは、古いfdiskよりもpartedがよく使われていますね。

2TB以上の大容量ディスクを扱う場合は、partedが必須。MBR形式とGPT形式の両方に対応できるオールラウンダーです!

partedコマンドとは

partedは、ディスクパーティションを表示・作成・削除・編集するための外部コマンドです。“partition editor"の略で、GDISKやfdiskよりも新しく、より多くの機能を持っています。

MBR形式(最大2TB)とGPT形式(2TB以上対応)の両方をサポート。さらに、ext4やNTFSなどの複数のファイルシステムに対応しており、パーティションのリサイズもできます。最近のLinuxディストリビューションではデフォルトで含まれていることが多いです。

基本構文

1
parted [オプション] [デバイス名] [コマンド]

デバイス名は/dev/sda/dev/sdbなどです。コマンドを指定しないと、インタラクティブモードになります。

主なオプション

オプション 説明
-l すべてのディスクのパーティション情報を表示
-s スクリプトモード(確認なしで実行)
-m 指定デバイスのパーティション情報を表示
-v バージョン情報を表示

使用例

例1: すべてのディスクのパーティション情報を表示

1
sudo parted -l

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
Model: QEMU HARDDISK (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB 1050MB  1049MB  primary  ext4         boot
 2      1050MB 107GB   106GB   primary  ext4

Model: Samsung SSD 860 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End     Size    File system Name     Flags
 1      1049kB 1000GB  1000GB  ext4       storage

全ディスクの詳細なパーティション情報を表示します。

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

1
sudo parted -m /dev/sda

実行結果:

1
2
3
/dev/sda:107GB:scsi:512B:512B:msdos:QEMU HARDDISK;
1:1049kB:1050MB:1049MB:ext4::boot;
2:1050MB:107GB:106GB:ext4::;

機械可読形式(CSV形式)で表示。スクリプトで処理する際に便利。

例3: インタラクティブモードでパーティション管理

1
sudo parted /dev/sdb

実行結果:

1
2
3
4
GNU Parted 3.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

デバイス名を指定するとインタラクティブモードになります。

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

1
2
sudo parted /dev/sdb
(parted) print

実行結果:

1
2
3
4
5
6
7
8
9
Model: Samsung SSD 860 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End     Size    File system Name    Flags
 1      1049kB 500GB   500GB   ext4       data1
 2      500GB  1000GB  500GB   ext4       data2

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

例5: GPTパーティションテーブルを初期化

1
sudo parted /dev/sdb mklabel gpt

実行結果:

1
2
Warning: The existing disk label will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes

ディスク全体をGPT形式でフォーマット。元のデータは消えます。

例6: 新しいGPTパーティションを作成

1
sudo parted /dev/sdb mkpart primary ext4 0% 50%

実行結果:

1
(成功時は何も表示されない)

ディスク容量の0%~50%を使用してプライマリパーティションを作成します。

例7: パーティションのサイズを変更

1
sudo parted /dev/sdb resizepart 1 600GB

実行結果:

1
(成功時は何も表示されない)

パーティション1のサイズを600GBに変更します。

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

1
sudo parted /dev/sdb rm 2

実行結果:

1
(成功時は何も表示されない)

パーティション2を削除します。データは失われます。

例9: ディスクの詳細情報を確認

1
sudo parted /dev/sdb print details

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Model: Samsung SSD 860 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End      Size     File system Name Flags
 1      2097152B  536870912000B 536870910000B ext4 storage

Partition 1
 UUID: a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d
 Type: Linux filesystem
 Flags: boot

各パーティションの詳細情報(UUIDなど)を表示します。

例10: コマンドラインでパーティションを作成

1
sudo parted -s /dev/sdb mkpart primary ext4 0GB 100GB

実行結果:

1
(成功時は何も表示されない)

-sオプション(スクリプトモード)で、確認なしに実行。スクリプトから呼び出すときに便利。

Tips・注意点

GPT vs MBR

1
2
3
4
5
# GPT形式(推奨、2TB以上対応)
sudo parted /dev/sdb mklabel gpt

# MBR形式(レガシー、最大2TB)
sudo parted /dev/sdb mklabel msdos

2TB以上のディスクを使う場合はGPT形式一択。古いシステムとの互換性が必要な場合のみMBRを使います。

パーティション作成前にファイルシステムをフォーマット

1
2
3
4
5
# パーティション作成
sudo parted /dev/sdb mkpart primary ext4 0GB 100GB

# ファイルシステムをフォーマット
sudo mkfs.ext4 /dev/sdb1

partedでパーティションを作成するだけではまだ使えません。別途mkfsコマンドでフォーマットが必要です。

大容量ディスクの場合はparted必須

1
2
3
# 3TB以上のディスクを使う場合
sudo parted /dev/sdc mklabel gpt
sudo parted /dev/sdc mkpart primary ext4 0% 100%

fdiskは2TBまでしか対応していません。3TB以上の場合、必ずpartedを使いましょう。

インタラクティブモードでのヘルプ

1
(parted) help

コマンド一覧を表示します。

実践的な使い方

新しいディスクをシステムに統合する

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

# 2. GPTテーブルを作成
sudo parted /dev/sdb mklabel gpt

# 3. パーティション作成
sudo parted /dev/sdb mkpart primary ext4 0% 100%

# 4. ファイルシステムをフォーマット
sudo mkfs.ext4 /dev/sdb1

# 5. マウント
sudo mkdir /mnt/data
sudo mount /dev/sdb1 /mnt/data

新しいディスク(/dev/sdb)をシステムに統合するまでの完全な流れです。

既存パーティションのサイズを変更

1
2
3
4
5
6
7
8
# 1. 変更前のサイズを確認
sudo parted /dev/sda print

# 2. リサイズ(拡張)
sudo parted /dev/sda resizepart 1 500GB

# 3. ファイルシステムもリサイズ
sudo resize2fs /dev/sda1

パーティションを拡張する際の手順。resize2fsでファイルシステム側も対応させる必要があります。

複数パーティションを作成

1
2
3
4
5
6
7
8
9
sudo parted -s /dev/sdb mklabel gpt
sudo parted -s /dev/sdb mkpart primary ext4 0GB 200GB
sudo parted -s /dev/sdb mkpart primary ext4 200GB 400GB
sudo parted -s /dev/sdb mkpart primary ext4 400GB 600GB

# フォーマット
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
sudo mkfs.ext4 /dev/sdb3

1つのディスクを複数のパーティションに分割する例。

まとめ

partedコマンドのポイント:

  • GPT形式に対応した最新パーティション管理ツール
  • -l: すべてのディスクのパーティション情報表示
  • -m: 機械可読形式で表示
  • -s: スクリプトモード(確認なし)
  • mklabel: パーティションテーブルを初期化
  • mkpart: 新規パーティション作成
  • rm: パーティション削除
  • resizepart: パーティションのサイズ変更
  • よく使う組み合わせ: sudo parted -l, sudo parted /dev/sdb mklabel gpt

2TB以上のディスクを扱うならpartedは必須。最新のサーバーセットアップにはもう欠かせないコマンドです。ただし、実行時は十分注意してください!