Alibaba Cloudのエフェメラルディスクってなに。その使いみちと特徴。

こんにちは。エンジニアの森(@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 GBDisk /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以下のデータが残っていること確認できました。
エフェメラルディスクも用途次第では活用できるのでぜひ頭の片隅に覚えておきましょう。

では。

 

この記事をシェアする