【EC2】Deep Learning AMI (Ubuntu) Version 22.0のインスタンスを立てる際の注意点【ボリューム】

# はじめに
EC2のDeep Learning AMI (Ubuntu)を使って開発をすることが多くなり、詰まったところをメモ程度に残します。

# デフォルトの75GBでは絶対に容量が足りない
```
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
udev           devtmpfs    499264        0    499264   0% /dev
tmpfs          tmpfs       101444     3324     98120   4% /run
/dev/xvda1     ext4      76171508 75792680    362444 100% /
tmpfs          tmpfs       507212        0    507212   0% /dev/shm
tmpfs          tmpfs         5120        0      5120   0% /run/lock
tmpfs          tmpfs       507212        0    507212   0% /sys/fs/cgroup
/dev/loop1     squashfs     18304    18304         0 100% /snap/amazon-ssm-agent/1068
/dev/loop0     squashfs     16896    16896         0 100% /snap/amazon-ssm-agent/784
/dev/loop2     squashfs     93312    93312         0 100% /snap/core/6531
/dev/loop3     squashfs     91648    91648         0 100% /snap/core/6818
/dev/loop4     squashfs     89984    89984         0 100% /snap/core/5742
tmpfs          tmpfs       101444        0    101444   0% /run/user/1000
```
/dev/xvda1がメインのボリュームですが、インスタンスを建てたときにすでに容量がほぼいっぱいになっています。

```
$ conda create -n new_env --clone pytorch_p36
```
などで新しい仮想環境をつくっただけでも途中で容量がいっぱいになります。

# インスタンスを立てる際のボリューム設定

![スクリーンショット 2019-05-02 12.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223279/3919de0b-1e24-23f2-616e-7d5e9e434da7.png)

ここがデフォルトでは75GBになっているので、適宜必要な値を入力します。自分は１００GBで作成しました。

# インスタンスを建ててしまった後の対応
![スクリーンショット 2019-05-02 12.35.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223279/173a3927-6f7d-9697-bdde-e3df496eae56.png)
サイドバーのボリュームを選択後にインスタンスを選び、アクションからボリュームの変更でサイズを変更します。

```
$ lsblk
```
で確認しても反映されていないことが確認されます。

```
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  100G  0 disk 
└─xvda1 202:1    0   75G  0 part /
loop0     7:0    0 16.5M  1 loop /snap/amazon-ssm-agent/784
loop1     7:1    0 17.9M  1 loop /snap/amazon-ssm-agent/1068
loop2     7:2    0 91.1M  1 loop /snap/core/6531
loop3     7:3    0 89.4M  1 loop /snap/core/6818
loop4     7:4    0 87.9M  1 loop /snap/core/5742
```
以下のコマンドを打ちます。

```
$ sudo growpart /dev/xvda 1
```
するとボリュームのパーティションが変更されます。

```
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  100G  0 disk 
└─xvda1 202:1    0  100G  0 part /
loop0     7:0    0 16.5M  1 loop /snap/amazon-ssm-agent/784
loop1     7:1    0 17.9M  1 loop /snap/amazon-ssm-agent/1068
loop2     7:2    0 91.1M  1 loop /snap/core/6531
loop3     7:3    0 89.4M  1 loop /snap/core/6818
loop4     7:4    0 87.9M  1 loop /snap/core/5742
```
次にファイルシステムに拡張になります。

```
$ df -h
```
で確認すると、まだ75GBのままです。

```
Filesystem      Size  Used Avail Use% Mounted on
udev            488M     0  488M   0% /dev
tmpfs           100M  3.3M   96M   4% /run
/dev/xvda1       73G   73G     0 100% /
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/loop1       18M   18M     0 100% /snap/amazon-ssm-agent/1068
/dev/loop0       17M   17M     0 100% /snap/amazon-ssm-agent/784
/dev/loop2       92M   92M     0 100% /snap/core/6531
/dev/loop3       90M   90M     0 100% /snap/core/6818
/dev/loop4       88M   88M     0 100% /snap/core/5742
tmpfs           100M     0  100M   0% /run/user/1000

```
そこで以下のコマンドでファイルの拡張を行います。

```
$ sudo resize2fs /dev/xvda1
```
もう一度確認すると100GBになっているはずです。

```
Filesystem      Size  Used Avail Use% Mounted on
udev            488M     0  488M   0% /dev
tmpfs           100M  3.3M   96M   4% /run
/dev/xvda1       97G   73G   25G  75% /
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/loop1       18M   18M     0 100% /snap/amazon-ssm-agent/1068
/dev/loop0       17M   17M     0 100% /snap/amazon-ssm-agent/784
/dev/loop2       92M   92M     0 100% /snap/core/6531
/dev/loop3       90M   90M     0 100% /snap/core/6818
/dev/loop4       88M   88M     0 100% /snap/core/5742
tmpfs           100M     0  100M   0% /run/user/1000

```


これで仮想環境作っても容量不足になりません。