【学習記録】EBSチュートリアル

EBSの設定を勉強するためにチュートリアルをやってみました。
知らないLinuxコマンドもいろいろあって勉強になりました。
こういう自分が知識が浅い分野のチュートリアルは得るものが多くて非常に良いですね。

作業内容はこちらの動画を参考にさせてもらってます。

www.youtube.com

公式ドキュメントはこちらをじっくり読んだほうが良さそうです。

docs.aws.amazon.com

以下作業内容のメモです。

すでにパブリックなVPCとサブネットが作成済みの状態から始めます。(インターネットゲートウェイ、ルートテーブルなどアタッチ済み)

EC2のマネジメントコンソールからインスタンスの作成画面に移動し、Step 1 AMIはAmazon Linux 2を選択します。
f:id:JunpeiNakasone:20210425143102p:plain

Step 2 Instance Typeはt2.microを選択します。
f:id:JunpeiNakasone:20210425143203p:plain

Step Configure Instance DetailsはパブリックなVPCとサブネットを選択し、Auto-assign Public IPはEnableにします。
f:id:JunpeiNakasone:20210425143413p:plain

Step 4: Add Storageが今回一番勉強したい箇所なのでいろいろ調べました。
最終的には以下の内容でストレージを追加します。
Volume Type: EBS
Device: /dev/sdb
Size(GiB): 2
Volume Type: General Purpose SSD(gp2)
IOPS: 100/3000
Throughput: N/A
Delete on Termination: false
Encrypted: Not Encrypted
f:id:JunpeiNakasone:20210425144151p:plain

Deviceの項目は/dev/sdb以外にも画像のようにオプションがありました。
f:id:JunpeiNakasone:20210425144317p:plain こちらは自分はまだよくわかってないのですが、AWSで定義されているようなものではなくてLinux標準のデバイスのパターンがあるようです。

www.debian.org

Snapshotの説明は以下の文言がありました。

A snapshot is a backup of an EC2 volume that's stored in S3. You can create a new volume using data stored in a snapshot by entering the snapshot's ID. You can search for public snapshots by typing text in the Snapshot field. Descriptions are case-sensitive.

f:id:JunpeiNakasone:20210425144644p:plain スナップショットとはEC2のバックアップでS3に保存されていて、スナップショットを使用して新規ボリュームを作成することができるようです。  

Sizeの説明には以下の文言がありました。

Volume size must be greater than zero or the size of the snapshot used. Provisioned IOPS SSD volumes must be at least 4 GiB in size.

f:id:JunpeiNakasone:20210425144941p:plain

ボリュームサイズは0以上かスナップショットで使用されているサイズ以上でないといけないとのこと。確かにスナップショットからボリューム作ろうとした時にスナップショットより少ない容量しかなかったら無理な感じがしますね。

Volume TypeはAWS SAAの試験問題でも良く出てくる印象です。
画面で確認すると以下のようなオプションがありました。
f:id:JunpeiNakasone:20210425145225p:plain 試験問題でよくEBSのボリュームタイプについて問われるのでしっかり勉強しておきたいところ。
ここでボリュームタイプをいろいろ変更してみるとその他の項目の値が変わったりN/Aになったりしていました。

IOPSはボリュームタイプがGeneral Purpose SSD(gp2)だと100/3000固定ですが、ボリュームタイプを変更するとN/Aになったりテキストボックスになって値を変更可能になったりしていました。

ThroughputもIOPSと同じくボリュームタイプによって値が変わっていました。

Delete on TerminationはEC2を削除する時にEBSボリュームを削除するか維持するか決める設定。
試験問題でも良く出てくるので内容は覚えましたが、設定する画面がこの画面とは知らなかったのでより明確にイメージしやすくなりました。

f:id:JunpeiNakasone:20210425145730p:plain

EncryptionはEBSのデータを暗号化する設定(たぶん)
まだ詳しくは調べられていないですが、KMSというサービスが絡んでくることまでをざっくり理解しています。
f:id:JunpeiNakasone:20210425145852p:plain

Step 5: Add TagsではNameにEBSDemoと設定します。
f:id:JunpeiNakasone:20210425150125p:plain

Step 6: Configure Security Groupでは0.0.0.0/0からのSSHを許可するよう設定します。
f:id:JunpeiNakasone:20210425150223p:plain

上記設定でEC2インスタンスを作成すると、作成完了後ストレージに二つのボリュームがあることが確認できます。
f:id:JunpeiNakasone:20210425150523p:plain

Volumeの画面を見ると、EBSDemoのボリュームが二つ作成されていることが確認できます。
f:id:JunpeiNakasone:20210425151001p:plain

EBSDemoインスタンスSSHで接続します。
f:id:JunpeiNakasone:20210425151121p:plain

lsblkコマンドでEBSボリューム設定したボリュームがアタッチされていることが確認できます。
f:id:JunpeiNakasone:20210425151303p:plain

しかし正直lsblkコマンドというものを初めて知ったので調べてみました。

www.atmarkit.co.jp

「lsblk」(list block devices)は、現在利用できるブロックデバイスを一覧表示するコマンドです ※1。
 各ブロックデバイスをツリー状に表示するので、パーティションの状態を視覚的に把握でき、ストレージの構成やデバイス番号を確認したいときに役立ちます。
※1 LinuxではHDDやモデムなどの装置を、/dev/sdaのようなデバイスファイルとして管理している。デバイスファイルのうち、アクセス時に文字単位ではなく、ブロック単位でデータを転送するものを「ブロックデバイス」と呼ぶ。HDDやCD-ROMなどがブロックデバイスだ。「ls -al /dev」を実行したとき、ブロックデバイスは先頭に「b」と表示される。

なるほど、サーバーの状態を調べる時に重宝しそうなコマンドですね。

さて、EBSを追加したxvdbのMOUNTPOINTを見ると何も表示されていないのでマウントする必要があるようです。

docs.aws.amazon.com

以下のコマンドを実行します。

sudo file -s /dev/xvdb

f:id:JunpeiNakasone:20210425152406p:plain

/dev/xvdb: dataと表示されているのでデバイスファイルシステムがないため、作成する必要があるようです。

ファイルシステムを作成するため以下のコマンドを実行します。

sudo mkfs -t ext4 /dev/xvdb

すると以下のように結果が返ってきました。
f:id:JunpeiNakasone:20210425152657p:plain

ファイルシステムができたので以下のコマンドでdataディレクトリにマウントします。

sudo mkdir /data  
sudo mount /dev/xvdb /data

f:id:JunpeiNakasone:20210425152858p:plain

改めてlsblkコマンドを実行するとxvdbが/dataディレクトリにマウントされていることが確認できます。
f:id:JunpeiNakasone:20210425153010p:plain

/dataに移動してHello.txtを作成します。
f:id:JunpeiNakasone:20210425153149p:plain

Hello.txtに文字を入力しておきます。
f:id:JunpeiNakasone:20210425153418p:plain

以下のコマンドでバックアップをとります。

sudo cp /etc/fstab /etc/fstab.orig

fstabにデバイスの情報などを入力しておきます。
f:id:JunpeiNakasone:20210425153833p:plain

以下のコマンドを実行して状態を確認(?)します。
f:id:JunpeiNakasone:20210425154019p:plain

以下のコマンドで一度ボリュームをアンマウントします。

sudo umount /data

f:id:JunpeiNakasone:20210425154243p:plain

lsblkコマンドを実行すると/dataにマウントされていたボリュームが解除されていることが確認できます。
f:id:JunpeiNakasone:20210425154351p:plain

suto mount -aで再度マウントできます。
f:id:JunpeiNakasone:20210425154504p:plain

雑感

EBSは使用経験がなく、Linuxのコマンドでデバイスの設定を確認なども初めてコマンド実行したので新しい知識が得られて新鮮でした。
AWS SAAの試験問題でEBS関係はなかなか理解できていませんでしたが、今後はもう少し具体的にイメージしやすくなりそうです。