EBS(Elastic Block Store) †
汎用SSD: gp3 †
- 汎用 SSD ボリューム (gp3)
- ec2のみで、RDS等はまだ。
- IOPS: 3000 、スループット: 125MB/sが容量以外の無料範囲。それ以上だと追加コストがかかる
- 無料範囲でもIOPSの向上、コスト削減効果(AWS Cost Optimization Hubで提案される)がある
バックアップ †
AWS DLMとAWS Backupがある。
Backupの方がバックアップの削除や保護、対応リソースが多いので良い。
1台のEBSを複数のEC2へマルチアタッチ †
今の所使い道に困る機能。
- 2台以上のEC2から、同じEBSをアタッチできる。
- 同じファイルを2台のEC2から、同時に見えない。
EBSの自動拡張 †
EBSの動的拡張 †
EBSのデバイス名 †
EBSのライフサイクル †
EBSをLVMでストライピングしてIOPSを上げる †
EBS/エフェメラルディスクのデバイス名 †
- AMIによって開始名が異なる。AWS上では/dev/sda でもCentOS6では /dev/xvde として認識される。
- エフェメラルディスクは /dev/sdb 〜 sde までの4台が予約されている。CentOS6では/dev/xvdf 〜 xvdi
- EBSは /dev/sdf 〜 。CentOS6では/dev/xvdj 〜
パーティション作成済みEBSを拡張する †
EBSではスナップショット作成後、スナップショットからより大きなEBSを作成できる。
しかし、パーティションが一つでもあると、resize2fsが失敗し、OSから拡張した部分が認識されない。
これを growpart コマンドで修正する。
非常に面倒で時間がかかるので、通常はパーティションを作成せずにフォーマットだけして利用する方が楽。
- CentOS 6.x 64bitの場合:
sudo yum install --enablerepo=epel cloud-utils-growpart parted
# パーティション1を拡張。結構時間がかかる
sudo growpart /dev/xvdf 1
# パーティションサイズが増えている事を確認
sudo parted -l
# resize2fsを実行。先にe2fsckを実行するように指示される。
sudo resize2fs /dev/xvdf1
Please run 'e2fsck -f /dev/xvdf1' first.
# e2fsckでチェック。これも結構時間がかかる
sudo e2fsck -f /dev/xvdf1
# OSからパーティションサイズが正しく認識されるように
sudo resize2fs /dev/xvdf1
sudo mkdir /mnt/ebs1
sudo mount /dev/xvdf1 /mnt/ebs1
# 必要であれば/etc/fstabにも追加
echo "/dev/xvdf /mnt/ebs1 ext4 defaults,nofail,comment=manual 0 0"
# OSから正しく認識されたか確認
df -h
- パッケージを追加
sudo yum install cloud-init dracut-modules-growroot cloud-utils-growpart
- dracutで修正。この時現在のkernelしか指定できなかった。それ以外のinitramfsを指定すると起動しなくなった。
dracut --force --add growroot /boot/initramfs-$(uname -r).img
- cloud-initの設定で growpart を実行するように指定
cat /etc/cloud/cloud.cfg
resize_rootfs_tmp: /dev
cloud_init_modules:
- growpart
- resizefs
- AMIを作成。作成したAMIからEC2起動時に任意のrootボリュームサイズを指定して起動し、起動後にOSから正しくサイズが認識されているかを確認
- cloud-utilsはインストールしない方が良い。依存関係でglusterfs(3.6.0.54-1.el6)がインストールされるが、/etc/logrotate.d/glusterfs にグローバル設定が書いてあり、/etc/logrotate.confの設定が上書きされてしまう。
トラブルシューティング †
Marketplace codes may not be attached †
- 例: CentOS 6.5 (x86_64) - Release Media から起動したEC2のrootボリュームはEBSに「製品コード: marketplace: xxxxxxx」と記載があり、rootボリューム(/dev/sda)以外にアタッチできない。
これはrootボリュームから起動しなくなった場合のトラブルシュート時に困る事になる。
AWS Supportに該当ボリュームのスナップショットを共有すると、制限を解除してくれる模様
EC2:CentOS7でエフェメラルディスクのマウントに失敗し、起動しなくなる †
AMI: CentOS 7 (x86_64) with Updates HVM を使った場合、エフェメラルディスクがマウントできない時、EC2の起動ができなくなった。
- EC2 インスタンスにインスタンスストアボリュームを追加する
- m1シリーズのエフェメラルディスクはext3でフォーマット済み
- I2/R3シリーズ等のTRIMをサポートしているSSDベースのエフェメラルディスクはフォーマットされていない
- m3シリーズはSSDベースのエフェメラルディスクだが、TRIMをサポートしてないので、ext3でフォーマット済み。
- /etc/fstab
- OK: /dev/xvdb /mnt auto defaults,nofail 0 0
- NG: /dev/xvdb /mnt ext3 defaults 0 0