Amazon Linux2のEBSボリュームを拡張してパーティション分割してみた

EC2のボリューム拡張後、Amazon Linux2でパーティション分割してみた内容を紹介します。
2020.06.11

みなさん、おはこんばんにちは!イベント盛りだくさんでブログになかなか手が出せないハウンです🐣

5月中に書き終える予定だったのが、いつの間に6月になってしまいました... 元々課題の一環として検証してみたもので、今はうっすらとした記憶しか残ってないのですが頑張って書き残しておきます!

パーティション分けといえば、EBSの追加ボリュームを作成してアタッチする方法が一般的です。ですが、EC2ボリューム自体を拡張した場合はどうなるの?という疑問が浮かびます。(ちなみに複数のボリュームを追加するより一つのボリュームを拡張してパーティションを分けたほうがより効率な場合もあるそうです。)

なら、その方法もあるはずだと思い検索してみましたけど、なかなか見つからず...やっと参考できる記事を発見し、なんとか解決できました。

今回はAmazon Linux2のボリュームを拡張して、パーティションを分割してみた手順を記録します。

ボリューム拡張

まず、EC2コンソールに接続します。

'ELASTIC BLOCK STORE(EBS)' - 'ボリューム'を選択して使用しているEC2のボリュームを選択します。

'アクション' - 'ボリューム変更'をクリックすると、ボリュームのサイズを書き換えることができます。検証ですので、2GBだけ増やしてみました。

確認ボタンを押すとボリュームが拡張されていることが確認できます。

パーティション分割

パーティション作成

それでは、パーティションを行うために parted を起動します。

[root@ip-xxx-xx-xx-xxx ec2-user]# parted
GNU Parted 3.1
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.

ディスクの総容量を確認するために unit MB を入力して MB表示に変換後、print を入力します。 Error と表示され Fix/Ignore/Cancel と聞かれますが、Fix を入力してください。

(parted) unit MB
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 10737MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                 Flags
128    1.05MB  2.10MB  1.05MB                BIOS Boot Partition  bios_grub
1      2.10MB  8590MB  8588MB   xfs          Linux

上記の結果に合わせパーティションを作成します。

(parted) mkpart
Partition name?  []? test
File system type?  [ext2]? xfs
Start? 8591MB
End? 10736MB

quit で partedを終了し、reboot で再起動させましょう。

ファイルシステム作成

先ほどファイルシステムを xfsに指定しましたので、xfs ファイルシステムを作成します。

mkfs.xfs /dev/xvda2 と入力しましょう。

[root@ip-xxx-xx-xx-xxx ec2-user]# mkfs.xfs /dev/xvda2
meta-data=/dev/xvda2             isize=512    agcount=4, agsize=130944 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=523776, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

print を入力して、ちゃんと作成されたか確認します。

(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                 Flags
128     1049kB  2097kB  1049kB               BIOS Boot Partition  bios_grub
 1      2097kB  8591MB  8589MB  xfs          Linux
 2      8591MB  10.7GB  2145MB  xfs          test

確認できましたら、quitを入力して partedを終了します。

マウント

まず、マウントするためのディレクトリを作成します。

[root@ip-xxx-xx-xx-xxx ec2-user]# mkdir /data

再起動してもマウントを維持するために /etc/fstab にパーティション情報を追加する必要があります。 その前に /etc/fstab のコピーを作成しておきましょう。

[root@ip-xxx-xx-xx-xxx ec2-user]# cp /etc/fstab /etc/fstab.o

blkid を入力して /dev/xvda2の UUIDをコピーした後、vi /etc/fstab を入力します。すると既に/dev/xvda1の情報が記録されていることを確認できます。その下に下記のように追加します。

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx     /data       xfs    defaults,nofail   0   2

ファイル保存後、mount -a を入力してマウントします。

では、df -h を入力して結果を確認してみましょう。

[root@ip-xxx-xx-xx-xxx ec2-user]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  408K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.3G  6.8G  16% /
tmpfs            99M     0   99M   0% /run/user/1000
/dev/xvda2      2.0G   35M  2.0G   2% /data

/dev/xvda2がマウントされていることを確認できました!?

再起動後にも反映されているか確認してみましょう。

[root@ip-xxx-xx-xx-xxx ec2-user]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  408K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.3G  6.8G  16% /
/dev/xvda2      2.0G   35M  2.0G   2% /data
tmpfs            99M     0   99M   0% /run/user/1000

ちなみにlsblk で確認してみるとこんな感じです。

[root@ip-xxx-xx-xx-xxx ec2-user]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
├─xvda1 202:1    0   8G  0 part /
└─xvda2 202:2    0   2G  0 part /data

最後に

ここまで Amazon Linux2でのボリューム拡張後、パーティション分割を紹介いたしました。

まだ新卒エンジニアとしてはパーティション分割なんて使うことは滅多にないですが、どなたかのお役に立てればと思います。

Linux環境ごとにコマンドが異なったりするので、その点はご注意ください。

以上、新卒エンジニアのハウンでした!