EC2 上の Insight SQL Testing Manager でデータ領域を拡張する方法

こんにちは、インサイトテクノロジーの松尾です！

本投稿では EC2 上に構築した Insight SQL Testing Manager でアセスメント結果や評価 SQL セットの保持に利用している領域を拡張する方法を紹介します。

## はじめに

Insight SQL Testing Manager でアセスメント結果や評価 SQL セットの保持に利用している領域は、`/mnt/piso-data` でマウントされているストレージとなります。デバイス名は `/dev/sdb` です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/5799da08-0a70-9707-757a-777664926615.png)

## まずは EBS を拡張

EBS ボリュームのサイズ拡張はオンラインで行うことができます。
以下のような形で、サイズを変更してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/fa0a687d-2e05-712a-8dbf-e540609c6cf6.png)

## 拡張されたことを確認

lsblk で確認してみます。

```bash
[ec2-user@idt ~]$ lsblk
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1     259:0    0   5G  0 disk /mnt/piso-data
nvme0n1     259:1    0  32G  0 disk
└─nvme0n1p1 259:3    0  32G  0 part /
nvme2n1     259:2    0   1G  0 disk /mnt/piso-backup
nvme3n1     259:4    0  20G  0 disk /mnt/pg-wal
```

デバイス名は異なりますが `/mnt/piso-data` が 5G に拡張されていますね。

そこで `/mnt/piso-data` でマウントされているストレージがどのボリュームに相当するかを確認するには以下を実行します。

```bash
[ec2-user@idt ~]$ lsblk -o +SERIAL
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT       SERIAL
nvme1n1     259:0    0   5G  0 disk /mnt/piso-data   vol0ee326ce6ec957ef2
nvme0n1     259:1    0  32G  0 disk                  vol0e69a560f0700a930
└─nvme0n1p1 259:3    0  32G  0 part /
nvme2n1     259:2    0   1G  0 disk /mnt/piso-backup vol0a35271d0d1262b07
nvme3n1     259:4    0  20G  0 disk /mnt/pg-wal      vol06c5644371e12421d
```

`vol0ee326ce6ec957ef2` がボリューム ID で、変更しているものと合致していることが確認できました。

参考：

https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/nvme-ebs-volumes.html#identify-nvme-ebs-device

> NVMe EBS ボリュームには、EBS ボリューム ID がデバイス ID のシリアル番号として設定されています。シリアル番号を一覧表示するには、lsblk -o +SERIAL コマンドを使用します。

## ストレージを OS 側で認識させる

拡張したディスクを OS で認識させるには `xfs_growfs` を実行します。実際に `df` コマンドにより、認識しているサイズも拡大したことを確認できると思います。

```bash
[ec2-user@idt ~]$ sudo xfs_growfs -d /mnt/piso-data
meta-data=/dev/nvme1n1           isize=512    agcount=8, agsize=32768 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=1      swidth=1 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 1310720
[ec2-user@idt ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.8G  1.2M  1.8G   1% /dev/shm
tmpfs           1.8G  8.5M  1.8G   1% /run
tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   32G   17G   16G  52% /
/dev/nvme3n1     20G  207M   20G   2% /mnt/pg-wal
/dev/nvme2n1   1014M   40M  975M   4% /mnt/piso-backup
/dev/nvme1n1    5.0G  159M  4.9G   4% /mnt/piso-data
tmpfs           360M  248K  360M   1% /run/user/1001
tmpfs           360M     0  360M   0% /run/user/1000
```

## おわりに

本投稿では、EC2 上の Insight SQL Testing Manager でデータ領域を拡張する方法をご紹介しました。実際に利用し始めて評価 SQL セットやアセスメントが増えてくると、デフォルトの 1G ではすぐに足りなくなってくると思います。アセスメント実行中などにストレージが枯渇してしまうと、途中まで実行したアセスメント結果も破棄しなければならないので、ディスクの空き容量については十分注意の上、Insight SQL Testing を活用いただければと思います。