EBSのスナップショットは圧縮されるとのことだけど、実際どれくらい圧縮されるのかは公開されていないようなので、実際にスナップショットをとって圧縮度合いを確認してみた。
検証環境
[ec2-user@ip-192-168-1-20 ~]$ cat /etc/*release NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/" Amazon Linux release 2 (Karoo)
検証方法
1.EC2のインスタンスを作る
2.作成直後のEBSスナップショットを取得
3.請求書のEC2の利用状況から、スナップショットの利用状況をチェックする
EC2のインストール直後
[ec2-user@ip-192-168-1-20 ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 492M 0 492M 0% /dev/shm tmpfs 492M 388K 492M 1% /run tmpfs 492M 0 492M 0% /sys/fs/cgroup /dev/xvda1 20G 1.3G 19G 7% / tmpfs 99M 0 99M 0% /run/user/1000
1.3GB/20GB程度使われているみたいですね。
EC2直後のEBSスナップショットの利用状況
請求書 > EC2 > EBSで確認したところ、
「0.274GB」でした。ここで気になるのが、母体がどれくらいか(ボリューム全体なのか、実際に利用している領域なのか)ですね。AWSのアナウンスでは「ボリュームの最初のスナップショットについては、データ全体のコピーが Amazon S3 に保存されます」と書いてありますが、「データ全体」というのがわかりづらい。20GBを指すなら、0.274/20(GB) ≒ 1/73となりますし、実際の利用領域を指すなら、0.274/1.3(GB) ≒ 1/5となりますね。
スナップショットストレージの基盤になるのは、データを Amazon S3 で保存するのに使用された領域の大きさです。Amazon EBS では空のブロックが保存されないため、スナップショットのサイズはボリュームサイズよりもかなり少なくなるはずです。ボリュームの最初のスナップショットについては、データ全体のコピーが Amazon S3 に保存されます。増分スナップショットごとに、Amazon EBS ボリュームの変更部分のみが保存されます。
Snapshotに関しては、EBSボリュームの実サイズがそのまま計算されるのではなく、
圧縮してコピーされ、増分については変更部分のみ保存されます。
(費用をできる限り軽減するようにさせて頂いております。)初回分はEBSボリューム内の全データを圧縮した容量となります。
二回目以降変更のあった差分のみを取得するようになっており、圧縮も行われます。誠に恐れ入りますが、圧縮率はデータ内容によって異なるため、
圧縮後に保存されるデータの実サイズについては、残念ながら明確な情報をお出しすることが出来かねます。