口上
単純に snapshot をとってそこから大きくしたいサイズの volume を作って インスタンス に アタッチ しなおして resize2fs
すればいーじゃんと思ってたら、"Nothing to do!" と出てしまいうまく行かなかったので、その時に対応した自分用メモ。Management Console の細かい操作については結構省いています。
対象インスタンスの環境
EC2 AMI : CentOS 6 (x86_64) - with Updates HVM
ディスク容量 : 8G → 36G
手順
-
対象インスタンスの snapshot を取得する(出来るなら停止させてからがベスト)
-
snapshot から volume を作成する。この際に拡張したいサイズで作成する(今回は36Gで)
-
AmazonLinux(HVM) でSSHの可能な EC2 作業用インスタンスを適当にたてる
-
作成したばかりの 3. の作業用インスタンスをいったん停止する
-
- で作成した volume を 3. の作業用インスタンスにアタッチする(デバイスはここでは /dev/sdf にしました)
-
作業用インスタンスを起動する
-
作業用インスタンスに SSH して、5. でアタッチした volumeを
lsblk
コマンド で確認する
$ 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 36G 0 disk
└─xvdf1 202:81 0 8G 0 part ← 36Gのvolumeなのに8Gしか使ってない
6. `parted`コマンド でパーティションを拡張する
```
$ sudo parted /dev/xvdf
GNU Parted 2.1
Using /dev/xvdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s ← 単位をセクタ数に変更
(parted) print ← 現在の状態を表示させる
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 75497472s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 16777215s 16775168s primary ext4 boot ← これが今の状態
(parted) rm 1 ← パーティションを一旦削除する
(parted) mkpart primary 2048s 100% ← パーティションを作成(セクタ2048から最後まで指定)
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 75497472s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 75497471s 75495424s primary ext4 ← 拡張したのがわかる
(parted) set 1 boot on ← Flags に boot を付与する
(parted)
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 75497472s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 75497471s 75495424s primary ext4 boot ← boot が Flags に付与された
(parted)
(parted) quit ← parted をぬける
Information: You may need to update /etc/fstab.
-
拡張したパーティションに
fsck
をかける (もし Fix? と聞かれたら全部 yes と応える)
$ sudo e2fsck -f /dev/xvdf1
e2fsck 1.42.12 (29-Aug-2014)
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: 25097/524288 files (0.2% non-contiguous), 828273/2096896 blocks
8. ファイルシステムを拡張する
```
$ sudo resize2fs /dev/xvdf1
resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/xvdf1 to 9436928 (4k) blocks.
The filesystem on /dev/xvdf1 is now 9436928 (4k) blocks long.
ここで `lsblk` で拡張っぷりを確認しておく
```
$ 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 36G 0 disk
└─xvdf1 202:81 0 36G 0 part ← 36G のvolume に対して 36G のパーティションであることがわかる
9. 作業用インスタンスを停止する
9. 拡張した volume を作業用インスタンスからデタッチする(この時点で作業用インスタンスは用済み)
10. 対象インスタンスを停止して、元々アタッチされていた volume をデタッチする
11. (容量を)拡張した volume を 対象インスタンスにアタッチする(たぶん /dev/sda1 で)
12. 対象インスタンスを起動する
# 参考にさせて頂いたページ
[EC2上のLinuxのパーティションを拡張する](http://blog.serverworks.co.jp/tech/2014/11/27/ecpanding_linux_partition/)
[Linux で EBS ボリュームのストレージ領域を拡張する](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-expand-volume.html)
[Linux パーティションを拡張する](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/storage_expand_partition.html)