こんにちは。エンジニアの森(@mosuke5)です。
先日、仮想サーバECSで新しいインスタンスタイプを購入できるなることをお知らせしました。その中にエフェメラルディスクを含むインスタンスタイプがあります。今日は、エフェメラルディスクってなんだ!?っていう疑問とどういうときに使えばいいかなどについて紹介していきます。
2017年11月16日 Elastic Compute Service 新たなインスタンスファミリー一部追加のご案内
1. エフェメラルディスク付属インスタンス「i シリーズ」
先日Alibaba Cloudの日本サイトで「i1, タイプファミリー(エフェメラルディスク付属)」と「i2, タイプファミリー(エフェメラルディスク付属)」の2つのインスタンスを購入できるようにアップデートしました。(他にもGPUインスタンスなどたくさんのタイプが購入できるようになっているから確認してみてください。)
このタイプのインスタンスには、デフォルトでエフェメラルディスクと呼ばれる高速の読み書きができるディスクがついているのが特徴です。この後、エフェメラルディスクについて説明していきますが、オンライントランザクション処理やNoSQLデータベースなどでの利用に向いています。
そもそも、一言に「仮想サーバ」といっても、Alibaba Cloudではたくさんの種類のタイプを用意しています。種類の一覧はこちらを確認。
CPU数やメモリ数だけではなく、使われている機器の違いや、細かな仕様が異なるので、用途に合わせて適切なものを選ぶことが重要です。選び方に困った場合には、お問い合わせいただければ弊社ソリューションアーキテクトがご支援します。
2. エフェメラルディスクについて
エフェメラルディスクとは
エフェメラルディスクとは何でしょうか。まず、「エフェメラル(ephemeral)」の意味ですが、「つかの間の」とか「はかない」という意味です。
「はかないディスク」と聞いてしまうと悪いイメージがあるかと思いますが、このディスクはサーバに紐付いたディスクであるため、他のサーバへディスクの付け替えができない、という意味でエフェメラルであるということです。
普通のディスク(Alibaba Cloudでのいうブロックストレージ)となにがどう異なるか図にしてみました。エフェメラルディスクはそのサーバが稼働している同じホストマシーンに付いているディスクを利用します(ローカルディスクです)。一方、ブロックストレージはネットワークを経由したストレージノードのディスク領域を利用します。そのため、ブロックストレージとくらべてネットワーク越しにアクセスする必要がないのでより高速に利用できるのです。
Alibaba Cloudのエフェメラルディスクはここが違う
Alibaba Cloudのエフェメラルディスクは実は他のクラウドサービスと大きく異るポイントがあります。例えばAWSの場合、仮想サーバを停止した場合は実は裏側ではそのサーバは存在しておらず(リソースを確保していない)、もう一度立ち上げた場合には異なるサーバとなります。そのため、エフェメラルディスクの中身も消えてしまいます。(これぞエフェメラルというイメージですが。)
一方、Alibaba Cloudの場合には仮想サーバを停止しても、そのサーバは保持されたままのため、エフェメラルディスクの中身が消えることはありません。他社の一般的なエフェメラルディスクにくらべ揮発的ではないため安全に運用しやすいというメリットがあります。しかし、たとえば物理ホストサーバの障害などで仮想サーバがべつのホストに移動する際にはデータは消えてしまうのでその点は注意です。いずれにしても、データが消える可能性があることを前提に利用しなければいけません。
3. エフェメラルディスクを利用してみる
では、そんなエフェメラルディスク、実際に使ってみます。まずは、エフェメラルディスク搭載の「i シリーズ」のインスタンスを購入します。まだ、日本リージョンにはきていないので、香港のリージョンで購入してみます。
購入すると、インスタンスリストのスペックのときに「ローカルストレージ: 208GiB」と書かれています。これは他のインスタンスタイプでは表示されていないこのシリーズ特有の記載です。
購入したサーバにログインし、まずはファイルシステムの状況をみてみます。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/vda1 40G 1.4G 36G 4% / devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 348K 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/0
あれ、200GBのエフェメラルディスクの領域はなさそうです。
実はデータディスクと同じで購入した時点ではまだマウントはされていません。
というわけで、fdiskコマンドで利用可能なパーティションタイプをみてみます。
すると、Disk /dev/vdb: 111.7 GB
とDisk /dev/vdc: 111.7 GB
があるのが確認できます。これが、付属しているエフェメラルディスクです。
# fdisk -l Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x0008d73a デバイス ブート 始点 終点 ブロック Id システム /dev/vda1 * 2048 83884031 41940992 83 Linux Disk /dev/vdb: 111.7 GB, 111669149696 bytes, 218103808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/vdc: 111.7 GB, 111669149696 bytes, 218103808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
こちらフォーマットしてマウントします。
また最後のecho '/dev/vdb /mnt ext4 defaults 0 2'>> /etc/fstab
は再起動してもマウントされるようにfstabにも設定をいれておきます。
# mkfs.ext4 /dev/vdb mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 6815744 inodes, 27262976 blocks 1363148 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2174746624 832 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done # # mount /dev/vdb /mnt # df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/vda1 40G 1.4G 36G 4% / devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 348K 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/0 /dev/vdb 103G 61M 97G 1% /mnt # # echo '/dev/vdb /mnt ext4 defaults 0 2'>> /etc/fstab
ちなみにこちらのインスタンス、一度停止し、その後起動しても/mnt
以下のデータが残っていること確認できました。
エフェメラルディスクも用途次第では活用できるのでぜひ頭の片隅に覚えておきましょう。
では。