はじめに
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件の返信
[…] ストレージ上にパーティションを作成する手順はこちらの投稿を参照してください。 […]