EBSをアタッチした
AWSのコンソール上からEBSを使ってボリュームサイズを拡張しました。ポチポチでできてしまったので、簡単かと思っていました。しかし、これは物理システム上で増えただけで実際のスペックアップにはなっていません。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 150G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
現に、dfコマンドを使用すると、
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 56K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/nvme0n1p1 99G 89G 0 100% /
となっており、ディスク容量を確認してみると、Avail部分、つまり使用可能になっている枠が0になっていることがわかります。つまり、これはまだディスク装置としてのファイルシステムとしては拡張されていないことを意味します。
何をしなくてはならないのか?
必要な手順としてEBSを利用するためのパーティションを作り、ファイルシステムを拡張するという2つの手順をふむ必要があります。
パーティションとは
OSに一般的に備わっている機能の1つ。記憶領域系に作ることができる。システム領域とデータ領域を分けておけば、データ量が大きくなった時にシステム領域を圧迫することがなくなったり、システムを初期化する際に楽だったりする。ファイルシステムとは
ファイルシステムもまたOSの機能の1つで、永続的にデータを保存できる記憶装置(ストレージ/外部記憶装置)内部の記録状態を管理・制御し、区画分けし、そのどこに何が記録されているかを記録する管理領域を作成し、書き込みや読み出しができるようにするシステムである。
ここまでの手順を踏んでようやく増やしたストレージを利用することができるようになる。
実際に作ってみます
パーティションを作る
これを行うために使用するコマンドは、growpartコマンドです。
# growpart デバイスパス パーティション数
##今回の場合の引数はこんな感じになる
# growpart /dev/nvme0n1 1
これを行うことによって、
$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 100G 0 disk
├─nvme0n1p1 259:1 0 100G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
増えていることが確認できます。
システムファイルを拡張
続いては、resize2fsコマンドでシステムファイルを拡張していきます。
# resize2fs /dev/増やしたデバイス名
##今回の場合の引数はこんな感じになる
# resize2fs /dev/nvme0n1p1
そうすると、再びdfコマンドを打ってみると、
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 56K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/nvme0n1p1 99G 89G 9.7G 91% /
反映されているのがわかると思います。これでようやくEBSをスペック向上になったことになります。
素朴な疑問:マウントとは何が違うのか?
以前の記事の中で書いたものはlsblkコマンドまで使用して確認した後はmountのコマンドを使ったわけですが、今回のスペックアップの手順をする前はてっきり以前やった作業からマウントすることを連想してこちらの手順をしようと思ったわけですが、違うと言われたので、違いを明確にしておきたいところです。
- マウント
OSがファイルシステムを介してストレージデバイス上のファイルやディレクトリを利用できるようにすること。
ということだそうで、こうしてみると、ファイルシステムを作成するところまではなんだか使用しているコマンドの違いを除けば本質的にやっていることは同じに見えます。
が、マウントとファイルシステムを拡張する行為はそれぞれ用途別に分けている節があるので、考察として、両者の違いは今回やったやつだとEC2自体のスペックが上昇していますが、マウントしている場合はあくまでEBSが外部ストレージ的な役割のみを果たしている・・・ようなイメージですが、間違っていたらここの部分に指摘をください。