EC2 で Linux のファイルシステムの拡張




https://dev.classmethod.jp/articles/lim_ec2_ebs_connect/

EC2 のボリュームサイズを変更したけど、何をやってるのかよくわからなかったので軽く調べる。

まずはボリュームを作成して EC2 にアタッチする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364773/e0a0ae02-a017-e21f-81d4-9b9c0cf086bd.png)

## ファイルシステムを拡張する

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

> 2.各ボリュームで使用中のファイルシステムを確認するには、df -hT コマンドを使用します。

> 3.ボリュームに拡張が必要なパーティションがあるかどうかを確認するには、lsblk コマンドを使用して、インスタンスにアタッチされているブロックデバイスに関する情報を表示します。

【memo】
Linux は自分が動作しているハードウェア上のデバイスをほぼ全てファイルとして表現している。
ファイルとしてアクセスするデバイスを、キャラクタデバイスとブロックデバイスの２種類に分類している。
- キャラクタデバイス
    - ターミナル
    - マウス
    - キーボード
- ブロックデバイス
    - SSD
    - HDD
    - などのストレージデバイス

### ボリュームアタッチ前

```
$ df -hT
ファイルシス      タイプ       サイズ   使用  残り 使用% マウント位置
devtmpfs       devtmpfs   474M     0  474M    0% /dev
tmpfs          tmpfs      483M     0  483M    0% /dev/shm
tmpfs          tmpfs      483M  408K  483M    1% /run
tmpfs          tmpfs      483M     0  483M    0% /sys/fs/cgroup
/dev/xvda1     xfs        8.0G  1.6G  6.5G   20% /
tmpfs          tmpfs       97M     0   97M    0% /run/user/1000
```

【memo】
Linux のファイルシステムには複数種類がある。`ext4` `xfs` `Btrfs` など。
ストレージデバイスのデータ構造や、処理のためのプログラムが異なる。
扱えるファイルのサイズ、作成や I/O の速度もそれぞれ違う。

【memo】
`tmpfs` はメモリベールのファルシステム。
電源を切るとなくなってしまうが、ストレージデバイスへのアクセスをおこなわないため高速。


```
$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
```

【memo】
[lsblk](https://atmarkit.itmedia.co.jp/ait/articles/1802/02/news021.html)
> 「lsblk」（list block devices）は、現在利用できるブロックデバイスを一覧表示するコマンドです

[パーティション](https://linuc.org/study/knowledge/347/)


### ボリュームアタッチ後

```
$ df -hT
ファイルシス      タイプ       サイズ  使用   残り  使用% マウント位置
devtmpfs       devtmpfs   474M     0  474M    0% /dev
tmpfs          tmpfs      483M     0  483M    0% /dev/shm
tmpfs          tmpfs      483M  412K  483M    1% /run
tmpfs          tmpfs      483M     0  483M    0% /sys/fs/cgroup
/dev/xvda1     xfs        8.0G  1.6G  6.5G   20% /
tmpfs          tmpfs       97M     0   97M    0% /run/user/1000
```


```
$ 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   5G  0 disk
```

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

> 3.ボリュームに拡張が必要なパーティションがあるかどうかを確認するには、lsblk コマンドを使用して、インスタンスにアタッチされているブロックデバイスに関する情報を表示します。

今回追加したボリュームは 5GB。
EBS をアタッチしたことでルートボリューム`xvdf`が追加された。
`xvdf` にはパーティションがないため作成する必要がありそう。

```
$ sudo fdisk /dev/xvdf
```

```
$ 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   5G  0 disk
└─xvdf1 202:81   0   5G  0 part
```

`xvdf` に新しいパーティション `xvdf1` が作成された。

```
$ df -hT
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   474M     0  474M    0% /dev
tmpfs          tmpfs      483M     0  483M    0% /dev/shm
tmpfs          tmpfs      483M  416K  483M    1% /run
tmpfs          tmpfs      483M     0  483M    0% /sys/fs/cgroup
/dev/xvda1     xfs        8.0G  1.6G  6.4G   20% /
tmpfs          tmpfs       97M     0   97M    0% /run/user/1000
```

ファイルシステムはまだ拡張されていない。



https://dev.classmethod.jp/articles/lim_ec2_ebs_connect/#:~:text=5G%20%200%20part-,EBS%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E4%BD%9C%E6%88%90,-%E7%8F%BE%E5%9C%A8%E3%80%81%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E4%B8%8A

あとは記事に従って、EBSボリュームにファイルシステム作成 と EBSボリュームのマウント を行った

### EBSボリュームにファイルシステム作成

```
$ sudo mkfs.xfs /dev/xvdf1
```

```
$ sudo file -s /dev/xvdf1
/dev/xvdf1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
```

### EBSボリュームのマウント

```
sudo mount /dev/xvdf1 ~/ebs_data/
```


```
$ df -hT
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   474M     0  474M    0% /dev
tmpfs          tmpfs      483M     0  483M    0% /dev/shm
tmpfs          tmpfs      483M  416K  483M    1% /run
tmpfs          tmpfs      483M     0  483M    0% /sys/fs/cgroup
/dev/xvda1     xfs        8.0G  1.6G  6.4G   20% /
tmpfs          tmpfs       97M     0   97M    0% /run/user/1000
/dev/xvdf1     xfs        5.0G   38M  5.0G    1% /home/ec2-user/ebs_data
```

`/home/ec2-user/ebs_data` が拡張できた。

今回は、EBS を拡張したんじゃなくて、追加したから、もしルートディレクトリを拡張したい場合は、ルートディレクトリをマウントしてる `/xvda1`の EBS を拡張する必要がありそう。

### その他の参考

https://www.amazon.co.jp/%E8%A9%A6%E3%81%97%E3%81%A6%E7%90%86%E8%A7%A3-Linux%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF-%E5%AE%9F%E9%A8%93%E3%81%A8%E5%9B%B3%E8%A7%A3%E3%81%A7%E5%AD%A6%E3%81%B6OS%E3%81%A8%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98-%E6%AD%A6%E5%86%85-%E8%A6%9A/dp/477419607X/ref=asc_df_477419607X/?tag=jpgo-22&linkCode=df0&hvadid=295678107984&hvpos=&hvnetw=g&hvrand=7267956516079826151&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009318&hvtargid=pla-525083184667&psc=1&th=1&psc=1