EBSのサイズを拡張した際のパーティション拡張作業


# この記事で書いている内容
* このページは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で確認するとバーティションを拡張する必要がある事がわかる。

#  パーティションの拡張手順

1. 起動中のEC2を __停止__ する
1. 作業中の事故に備えてEBSボリュームのスナップショットを作成する
1. EBSボリュームをセカンダリボリュームとしてマウントし作業するためのEC2を、__EBSがアタッチされていたEC2と同一AZ上にローンチする__
1. 作業用インスタンスにEBSをアタッチし、作業を行う
1. 作業終了後、EBSを作業用インスタンスからデタッチし、元のインスタンスにアタッチする
1. 元のインスタンス上で作業と確認を行う

以上の手順で進めていきます

# 注意点

### 作業対象のEC2とEBSのidを控えましょう

### EBSのルートデバイスのマウントポイントを必ず確認しましょう。

![EC2_Management_Console.jpg](https://qiita-image-store.s3.amazonaws.com/0/52141/aef3fb6e-b94d-8bad-0aef-8535cadedd36.jpeg "EC2_Management_Console.jpg")

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

```

無事、容量の拡張ができました

---

# 参考
[Linux パーティションを拡張する](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/storage_expand_partition.html#expanding-partition-parted)