この記事で書いている内容
- このページはEBSのサイズを拡張した際に行う、パーティションサイズ拡張の方法について記載しています。
- EBSはルートボリューム
- パーティションをガシガシ切ったりはしていない
- パーティションテーブル: gpt
前提
- EBSはコンソールから容量を拡張してある
- 拡張したEBSはEC2にアタッチされている
状態
EBSの容量を40GBから1000GBへ拡張したはずなのにEC2上では使えていなかった。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G 40G 0 100% /
tmpfs 1.8G 0 1.8G 0% /dev/shm
40GBしかない
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 1000G 0 disk
└─xvda1 202:1 0 40G 0 part /
lsblkで確認するとバーティションを拡張する必要がある事がわかる。
パーティションの拡張手順
- 起動中のEC2を 停止 する
- 作業中の事故に備えてEBSボリュームのスナップショットを作成する
- EBSボリュームをセカンダリボリュームとしてマウントし作業するためのEC2を、EBSがアタッチされていたEC2と同一AZ上にローンチする
- 作業用インスタンスにEBSをアタッチし、作業を行う
- 作業終了後、EBSを作業用インスタンスからデタッチし、元のインスタンスにアタッチする
- 元のインスタンス上で作業と確認を行う
以上の手順で進めていきます
注意点
作業対象のEC2とEBSのidを控えましょう
EBSのルートデバイスのマウントポイントを必ず確認しましょう。
EC2のマネジメントコンソール上で確認できます
必ず控えるようにしましょう
- EBSのスナップショット取得方法については省略します。
- EBSのディタッチ方法については省略します
取り外すEBSを間違えないよう注意してください
- 作業用のEC2を同一AZ上に立てる理由は、EBSのスナップショットはAZに紐付いているためです
- 作業用インスタンスのidを控えましょう
- 作業用インスタンスへのEBSのアタッチは省略します。マウントポイントが被らないかは注意しましょう
作業用EC2での作業
操作ログ
$ sudo parted /dev/xvdf
GNU Parted 2.1
/dev/xvdf を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit s
(parted) print
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvdf: 2097152000s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 2048s 83886046s 83883999s ext4 boot
(parted) rm 1
(parted) mkpart
パーティションの名前? []?
ファイルシステムの種類? [ext2]? ext4
開始? 2048s
終了? 100%
(parted) print
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvdf: 2097152000s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 2048s 2097149951s 2097147904s ext4
(parted) set 1 boot on
(parted) print
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvdf: 2097152000s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 2048s 2097149951s 2097147904s ext4 boot
補足
EBSがマウントされているか確認します
コマンド
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1000G 0 disk
└─xvdf1 202:81 0 40G 0 part
上記ではxvdfが今回作業するEBSです
コマンド
sudo parted /dev/xvdf
unit s
詳細情報を確認し、既存のパーティションを削除します
コマンド
rm 1
パーティションを作成
コマンド
(parted) mkpart
パーティションの名前? []? ←今回、名前のところが空欄だったので空欄でエンタ
ファイルシステムの種類? [ext2]? ext4 ←確認したところext4だったのでそれに従う
開始? 2048s ←確認した際開始が左記の通りだったため
終了? 100% ←容量の100%まで拡張するので
フラグからbootが消えているので追加
コマンド
set 1 boot on
作業に際して問題が無いか確認します
エラーチェック
コマンド
$ sudo e2fsck -f /dev/xvdf1
e2fsck 2.12.10 (10-Aug-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/xvdf1: 109662/2621440 files (0.5% non-contiguous), 10481390/10485499 blocks
lsblkで確認した際のパーティションを指定
コマンド
sudo e2fsck -f /dev/xvdf1
以上で作業用インスタンスでの作業は終了です。
インスタンスを停止し、EBSをデタッチ後、課金回避のため作業用EC2を削除してください
元のEC2での作業
- 作業用EC2からデタッチしたEBSを控えておいたポイントへ再度アタッチします(手順省略)
コマンド
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 1000G 0 disk
└─xvda1 202:1 0 1000G 0 part /
確認します
コマンド
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G 40G 0 100% /
tmpfs 1.8G 0 1.8G 0% /dev/shm
このままでは以前と同じなので拡張します
コマンド
$ sudo resize2fs /dev/xvda1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 3, new_desc_blocks = 63
Performing an on-line resize of /dev/xvda1 to 262143488 (4k) blocks.
The filesystem on /dev/xvda1 is now 262143488 blocks long.
けっこう時間かかりました
コマンド
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 985G 41G 895G 5% /
tmpfs 1.8G 0 1.8G 0% /dev/shm
無事、容量の拡張ができました