はじめに

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

addpartはディスク上に新しいパーティションを追加するコマンドです。既存のディスクに新しいパーティションを作成したい時に使う、やや上級者向けのコマンドですね。

ディスク管理ツールの中でも、ちょっとニッチだけど知ってると便利なコマンドです。

addpartコマンドとは

addpartは、ブロックデバイス(ディスク)上に新しいパーティションを追加する外部コマンドです。

既存のディスクにパーティションを動的に追加できます。ディスク管理ツールの一種で、fdiskpartedよりもシンプルな操作が可能です。パーティションテーブルに直接新しいエントリを追加し、カーネルに新しいパーティションを認識させます。

基本構文

1
addpart device partition_number start end
  • device: ディスク装置(例:/dev/sda)
  • partition_number: パーティション番号(例:3)
  • start: 開始セクタ番号
  • end: 終了セクタ番号

主なオプション

addpartはオプションが少なく、シンプルな構文です。

オプション 説明
--help ヘルプを表示
--version バージョン情報を表示

使用例

例1: 基本的なパーティション追加

1
sudo addpart /dev/sda 3 1048576 2097151

実行結果:

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

/dev/sdaに3番目のパーティションを追加します。セクタ1048576から2097151までの範囲です。

例2: バージョン情報を確認

1
addpart --version

実行結果:

1
addpart from util-linux 2.37.2

addpartのバージョンを確認します。

例3: ヘルプの表示

1
addpart --help

実行結果:

1
2
3
4
Usage:
 addpart <device> <partition number> <start> <end>

Add a partition to a block device.

addpartの使い方を確認できます。

例4: 複数のパーティション追加

1
2
sudo addpart /dev/sdb 1 2048 1048575
sudo addpart /dev/sdb 2 1048576 2097151

実行結果:

1
(各コマンドが成功時は何も表示されない)

新しいディスク/dev/sdbに複数のパーティションを連続で追加します。

例5: 大容量パーティションの作成

1
sudo addpart /dev/sdc 1 2048 1099511627775

実行結果:

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

大容量のパーティションを作成します。

例6: パーティション追加後の確認

1
2
sudo addpart /dev/sda 4 2097152 4194303
lsblk

実行結果:

1
2
3
4
5
6
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda         8:0    0  100G  0 disk
├─sda1      8:1    0   20G  0 part /
├─sda2      8:2    0   30G  0 part /home
├─sda3      8:3    0   25G  0 part /var
└─sda4      8:4    0   25G  0 part

パーティション追加後、lsblkで確認します。新しいパーティションが認識されます。

例7: fdiskで詳細確認

1
2
sudo addpart /dev/sdd 1 2048 104857599
sudo fdisk -l /dev/sdd

実行結果:

1
2
3
4
5
6
7
8
9
Disk /dev/sdd: 50 GiB, 53687091200 bytes, 104857600 sectors
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: 0x00000000

Device     Boot Start       End   Sectors Size Id Type
/dev/sdd1        2048 104857599 104855552  50G 83 Linux

fdiskでパーティション情報を詳しく確認します。

例8: スクリプトでの使用例

1
2
3
4
5
6
7
8
9
#!/bin/bash
DEVICE="/dev/sde"
START=2048

for i in {1..4}; do
  END=$((START + 1048575))
  sudo addpart "$DEVICE" "$i" "$START" "$END"
  START=$((END + 1))
done

実行結果:

1
(各パーティションが順番に追加される)

スクリプトで複数のパーティションを一括作成します。

Tips・注意点

root権限が必須

addpartを実行するにはroot権限が必要です。

1
sudo addpart /dev/sda 3 1048576 2097151

sudoを忘れずに。

セクタ番号を正確に計算する

パーティションのセクタ範囲を正確に計算する必要があります。重複や隙間がないように注意します。

1
2
# セクタサイズを確認
fdisk -l /dev/sda | grep "Units:"

既存データの上書きに注意

誤ったセクタ範囲を指定すると、既存データを上書きする危険があります。必ずバックアップを取ってから実行してください。

パーティションテーブルの種類を確認

MBR(DOS)とGPTで対応が異なる場合があります。

1
sudo parted -l /dev/sda

実践的な使い方

新しいディスクへのパーティション作成

1
2
3
# 新しいディスク /dev/sdf に複数パーティションを作成
sudo addpart /dev/sdf 1 2048 524287999      # 250GB
sudo addpart /dev/sdf 2 524288000 1048575999  # 250GB

新しく接続したディスクに効率的にパーティションを作成できます。

クラウド環境でのディスク拡張

1
2
# 既存ディスクを拡張
sudo addpart /dev/sda 5 $(parted /dev/sda unit s print | tail -1 | awk '{print $3}' | tr -d 's') $(parted /dev/sda unit s print | grep "^/dev" | tail -1 | awk '{print $NF}' | tr -d 's')

クラウド環境でディスクサイズを拡張したときに新しいパーティションを追加します。

自動パーティション作成スクリプト

1
2
3
4
#!/bin/bash
for disk in /dev/sd{b..e}; do
  [ -e "$disk" ] && sudo addpart "$disk" 1 2048 1099511627775
done

複数ディスクに対して一括パーティション作成します。

まとめ

addpartコマンドのポイント:

  • ディスクに新しいパーティションを追加するコマンド
  • root権限: sudo必須
  • セクタ指定: 開始セクタと終了セクタを正確に指定
  • データ保護: 既存データを損失しないよう慎重に
  • 確認ツール: fdiskやlsblkで追加後を確認
  • よく使う組み合わせ: sudo addpartsudo fdisk -llsblk

ディスク管理は慎重さが大事!addpartで効率的にパーティションを追加できますよ。