カテゴリー
インフラ

partedコマンドでパーティション管理

はじめに

AWS EC2インスタンス(Amazon Linux)に、新しいEBS(ストレージデバイス)を追加して、これをフォーマットする手順を紹介します。

これまでパーティションを操作するコマンドとしてfdiskコマンドが主流でしたが、ストレージ容量の巨大化、EFIBIOSへの対応などの流れからpartedコマンドが主流になっています。

ラベル作成

新品のストレージの場合、パーティションテーブル自体が未設定の状態となります。下記の様なメッセージが表示されます。この例では3つ目のストレージ(xvdc)を操作しています。

# parted /dev/xvdc
(parted) p
Error: /dev/xvdc: unrecognised disk label  ← パーティションテーブルが未設定のためエラーメッセージが表示される。

まずは、パーティションテーブルとしてGPTを作成します。

(parted) mklabel gpt

パーティション作成

現在のパーティションを確認できるようになります。下記はまだパーティションが1つも作成されていないときの表示です。

(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

今回、すべての容量を1つのパーティションに割り当てることにします。表示単位をセクターに切り替えて、2048s(sはセクターを表します)から、末尾のセクターを指定します。末尾のセクターは管理領域との境目を知るため、ますはストレージ末尾のセクターを指定して、その際表示される警告メッセージから取得します。

(parted) unit s
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 41943040s  ← ストレージの末尾のセクター
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart 1 ext4 2048s 41943039s  ← ストレージの末尾のセクターから1小さいセクターを指定する。
Warning: You requested a partition from 2048s to 41943039s.
The closest location we can manage is 2048s to 41943006s.  ← GPTで管理できる範囲が示される。
Is this still acceptable to you?
Yes/No? N  ← 末尾のセクターを確認しただけなのでNを入力して作成をキャンセルする。

(parted) mkpart 1 ext4 2048s 41943006s  ← 末尾のセクターを指定してパーティションを作成する。
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End        Size       File system  Name  Flags
 1      2048s  41943006s  41940959s               1  ← 指定したとおりのセクター範囲でパーティションが作成された。

セクター数の求め方

今回、容量全体を指定しました。たとえば、256MiBのパーティションを作成したい、といった場合は、終点のセクターを下記の計算式で求めることができます。

始点のセクター番号 = 2048s
終点のセクター番号 = 526335s = 256 * 2048 + 2048 - 1

一般化すると、

始点のセクター番号 = <直前のパーティションの終点のシリンダ番号(これが1つ目のパーティションなら2047)> + 1
終点のセクター番号 = <目的の容量[MiB] * 1024 * (1024 / <セクターサイズ=512>) + <始点セクター番号> - 1

となります。1つ目の場合は始点のセクター番号は2048s固定ですが、2つ目以降はこの計算式で目的のサイズのパーティションを作成できるようになります。

表示する単位の切り替え

セクター単位のままだとパーティションサイズがわかりづらいので、適宜見やすい単位を指定して確認します。

(parted) unit B  ← 単位をバイトにする。
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 21474836480B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start     End           Size          File system  Name  Flags
 1      1048576B  21474819583B  21473771008B               1

(parted) unit GiB  ← 単位をギビバイトにする。
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start    End      Size     File system  Name  Flags
 1      0.00GiB  20.0GiB  20.0GiB               1

フォーマット実行

パーティションを作成できました、次はOSがマウントできるようにファイルシステムとしてフォーマットします。

(parted) quit  ← partedコマンドを終了する。
Information: You may need to update /etc/fstab.  ← /etc/fstabを更新するようメッセージが表示される。

# mkfs.ext4 /dev/xvdc1  ← /dev/xvdc の1つ目のパーティション、つまり/dev/xvdc1を指定する。
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 5242619 4k blocks and 1310720 inodes
Filesystem UUID: d7fd922a-8914-4363-940c-8dfbd3b54ae2
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

パーティション再確認

先ほどパーティションを作成したとき、ファイルシステムの項目は空欄でした。今回、ファイルシステムext4でフォーマットしたので、partedコマンドでパーティションを表示すると、ファイルシステムにきext4ときちんと表示されていることが確認できます。

# parted /dev/xvdc
GNU Parted 2.1
Using /dev/xvdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  21.5GB  21.5GB  ext4         1  ← ファイルシステムとしてext4が表示される。

(parted) quit

マウント

OS(Amazon Linux)にマウントできるようになりましたので、早速マウントしましょう。ここでは、/dev/xvdc1を/mntにマウントすることにします。

# mount /dev/xvdc1 /mnt
# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda1       8123812 1433664   6589900  18% /
devtmpfs          499744      72    499672   1% /dev
tmpfs             508684       0    508684   0% /dev/shm
/dev/xvdb1       8125844 1672716   6017316  22% /var/www
/dev/xvdc1      20510312   44992  19400416   1% /mnt  ← 無事マウントされた。

「partedコマンドでパーティション管理」への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください