LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

気軽に試せるエンタープライズSDS「ScaleIO」を試してみた

こんにちは、インフラグループの水野です。
みなさんネットワークストレージ大好きですよね?
NFSやFC(Fiber Channel)-SAN、iSCSI、GlusterFS、Ceph、広義の意味ではオブジェクトストレージのAmazon S3、Swift etc... 長年利用されているものから新しいもの、エンタープライズからオープンソースまで様々あると思います。
今回はScaleIOの導入検証する機会がありましたのでご紹介させていただきます。

What's ScaleIO?

EMC ScaleIO (以下ScaleIO)はEMCが提供しているエンタープライズ向けのSoftware Defined Storageプロダクトです。
同様のものとしてOSSのCephがしばしば挙げられます。

ScaleIOは以下のような特徴を持っています。

  • ソフトウェアで定義された、ブロックストレージを提供
  • 数千ノード規模まで対応しており、台数の増減が容易
  • 一部ノードがダウンしても運用継続可能な耐障害性を備える
  • 高速、高性能(特にCephより高速であると謳っている)
    • オーバーヘッドも少ないため、ハイパーバイザーなどとの同居が可能
  • インストールが容易、管理用のUIが便利

2015年ごろから検証用途であれば機能・容量共に無制限で利用できるようになったということがあり、気軽に検証できるようになりました。

いざ導入

公式で提供されているドキュメントが非常にわかりやすいのでそちらにしたがって進めていきます。

構成

ScaleIOは下記コンポーネントで構成されます。

  • GW(GateWay)
  • IM(Installation Manager)
  • MDM(Meta Data Manager)
  • TB(Tie Breaker)
  • SDS(ScaleIO Data Server)
  • SDC(ScaleIO Data Client)

また、公式ドキュメントではスタンダードな最少3台構成と冗長性を高めた最少5台構成が提案されています。

  • 最少3台構成
    • Master MDM * 1
    • Slave MDM * 1
    • TB * 1
  • 最少5台構成
    • Master MDM * 1
    • Slave MDM * 2
    • TB * 2

今回は最少3台構成+GW / IM用1台の合計4台構成で試してみます。 ScaleIOが扱うボリューム領域を別途用意する必要がありますが、今回はLVMを使って切り出すことにしました。
詳細情報は以下のとおりです。

役割 IPアドレス ディストリビューション ScaleIO用の論理ボリューム名(参照してるデバイス名)
GW / IM 192.168.10.1 Ubuntu 16.04 LTS
Master MDM 192.168.10.2 Ubuntu 16.04 LTS /dev/VolGroup00/lv_scaleio( /dev/dm-2 )
Slave MDM 192.168.10.3 Ubuntu 16.04 LTS /dev/VolGroup00/lv_scaleio( /dev/dm-2 )
TB 192.168.10.4 Ubuntu 16.04 LTS /dev/VolGroup00/lv_scaleio( /dev/dm-2 )

最終的には以下のような全体像になります。

インストール

パッケージをダウンロード

インストールに必要なパッケージ群をダウンロードします。 必要なものは以下からダウンロードできます。

日本語版のダウンロードページだと現在(2017/06/21) v.1.32.3が、海外版のダウンロードページだとv.2.0.1.2がダウンロードできます。日本語ページのバージョンがちょっと古いですね。
今回は最新のv.2.0.1.2を利用するため海外版のページからScaleIO Linux版をダウンロードリンクから落とします。

ダウンロードしたものは以下のようにして解凍しておきましょう。

$ unzip path/to/ScaleIO_Linux_v2.0.zip
$ ls ScaleIO_2.0.1.2_Complete_Linux_SW_Download
Documentation                                      ScaleIO_2.0.1.2_Gateway_for_Windows_Download       ScaleIO_2.0.1.2_SLES_12.1_Download
ScaleIO_2.0.1.2_GPG-RPM-KEY_Download               ScaleIO_2.0.1.2_RHEL_OEL6_Download                 ScaleIO_2.0.1.2_UBUNTU_14.04_Download
ScaleIO_2.0.1.2_GUI_for_Linux_Download             ScaleIO_2.0.1.2_RHEL_OEL7_Download                 ScaleIO_2.0.1.2_UBUNTU_16.04_Download
ScaleIO_2.0.1.2_GUI_for_Windows_Download           ScaleIO_2.0.1.2_SLES_11.3_Download                 ScaleIO_2.0.1.2_XEN_6.5_Download
ScaleIO_2.0.1.2_Gateway_for_Linux_Download         ScaleIO_2.0.1.2_SLES_12.0_Download                 ScaleIO_v2.0.x_Linux_Windows_Quick_Start_Guide.pdf

ScaleIO Gatewayのインストール

まずはインストーラーをセットアップするため、ScaleIO Gatewayをインストールします。

Gatewayインストール用のrpm/debパッケージがあります。

$ ls ScaleIO_2.0.1.2_Complete_Linux_SW_Download/ScaleIO_2.0.1.2_Gateway_for_Linux_Download
EMC-ScaleIO-gateway-2.0-12000.122.x86_64.rpm ScaleIO_Complete_Config.csv                  emc-scaleio-gateway_2.0-12000.122_amd64.deb
EMC_ScaleIO_Software_Agreement.txt           ScaleIO_Minimal_Config.csv

今回はUbuntuで利用するのでemc-scaleio-gateway_2.0-12000.122_amd64.debをGatewayホストにアップロードしておきます。

インストーラー画面の初期パスワードを決めてインストールを行います。

[root]
### rpmとjavaが必要なので予め入れておきます
$ apt-get install rpm openjdk-8-jre

### 初期パスワードをGATEWAY_AMDIN_PASSWORD環境変数に渡してインストールします
$ GATEWAY_ADMIN_PASSWORD={{ パスワード }} dpkg -i /tmp/emc-scaleio-gateway_2.0-12000.122_amd64.deb
~~~~~ 省略 ~~~~~
The EMC ScaleIO Gateway is running. PID=11422.

https://192.168.10.1(Gatewayをインストールしたアドレス)にアクセスをしてインストーラー画面が表示されればOKです。 初回の接続が重く、タイムアウトする場合があるのでローカルからcurlなどでアクセスしておくと良いです。

デフォルトでは80/443でリッスンしていますが、ポートを変えたい場合は/opt/emc/scaleio/gateway/conf/server.xml内の${http.port}${ssl.port}を任意のポートに変えて、gatewayを再起動します。

$ sudo systemctl restart scaleio-gateway

ScaleIOのインストール

https://192.168.10.1でインストーラーにアクセスし、User name: adminPassword: {{ パスワード }}でログインします。

ログインができると次のような画面になります。

ガイドに従って、Get Startedボタンからinstallation packageのアップロードに進みます。

Blowseボタンを押してインストールに必要なパッケージをアップロードしていきます。 ダウンロードしてきたパッケージ群の中に各ディストリビューションのインストールパッケージが入っています。

$ ls ScaleIO_2.0.1.2_Complete_Linux_SW_Download/ScaleIO_2.0.1.2_UBUNTU_16.04_Download
EMC-ScaleIO-lia-2.0-12000.122.Ubuntu.16.04.x86_64.tar    EMC-ScaleIO-sds1-2.0-12000.122.Ubuntu.16.04.x86_64.tar   EMC-ScaleIO-xcache-2.0-12000.122.Ubuntu.16.04.x86_64.tar
EMC-ScaleIO-mdm-2.0-12000.122.Ubuntu.16.04.x86_64.tar    EMC-ScaleIO-sds2-2.0-12000.122.Ubuntu.16.04.x86_64.tar   EMC_ScaleIO_Software_Agreement.txt
EMC-ScaleIO-sdc-2.0-12000.122.Ubuntu.16.04.x86_64.tar    EMC-ScaleIO-sds3-2.0-12000.122.Ubuntu.16.04.x86_64.tar
EMC-ScaleIO-sds-2.0-12000.122.Ubuntu.16.04.x86_64.tar    EMC-ScaleIO-sds4-2.0-12000.122.Ubuntu.16.04.x86_64.tar

今回はUbuntu16.04なのでそこからtarファイルをすべて選択してUploadボタンを押します。 アップロードが完了すると次の画面のようになると思います。 問題なければProceed to Installボタンで次に進みます。

次はScaleIOクラスタの構成情報をアップロードします。 クラスタ構成を記述した以下のようなCSVを用意します。

IPs,Password,Operating System,Is MDM/TB,Is SDS,SDS Device List,Is SDC
192.168.10.2,rootパスワード,linux,Master,Yes,/dev/dm-2,Yes
192.168.10.3,rootパスワード,linux,Slave,Yes,/dev/dm-2,Yes
192.168.10.4,rootパスワード,linux,TB,Yes,/dev/dm-2,Yes

上記ファイルをBlowseボタンで選択し、Upload Installation CSVボタンでアップロードします。

アップロードが完了すると次のような画面になると思います。

MDM Password、LIA Passwordをそれぞれ入力し、Licenseにチェックを入れます。 あとはTopologyの内容がCSVに設定した項目とあっているかを確認して、次へ進みます。

ここまで来るとあとはほぼ自動でインストールが進みます。 各インストールフェーズが終わるたびにボタンを押して進んでいきます。

インストールが全て完了すると以下のようになります。 Mark Operation Completedボタンを押して完了しましょう。

バグフィックス

Ubuntu16.04にインストールをしていくと、SDCがうまくインストールできない事象にぶつかりました(同様にCentOS7でもインストールしてみましたがそちらでは発生しませんでした)。
ぶつかったのは以下の通りですが、一通り解決した方法を記載しておきます。

  • systemdのunitファイルが無い
  • unitファイルが利用する実行ファイルのパスが違う
  • driverを取得しに行くところの設定が無い

systemdのunitファイルがない

以下のパスにありました。

$ sudo cp -a /opt/emc/scaleio/sdc/bin/sdc.service /etc/systemd/system/
$ sudo systemctl daemon-reload

unitファイルが利用する実行ファイルのパスが違う

先ほど配置したファイルを書き換えました。

$ diff -u /opt/emc/scaleio/sdc/bin/sdc.service /etc/systemd/system/sdc.service
--- /opt/emc/scaleio/sdc/bin/sdc.service    2016-12-23 15:13:30.000000000 +0900
+++ /etc/systemd/system/sdc.service 2017-06-22 15:30:39.117453761 +0900
@@ -11,8 +11,8 @@
 After=network.target

 [Service]
-ExecStart=/opt/emc/scaleio/sdc/bin/scini start > /dev/null 2<>/dev/null
-ExecStop=/opt/emc/scaleio/sdc/bin/scini stop > /dev/null 2<>/dev/null
+ExecStart=/etc/init.d/scini start > /dev/null 2<>/dev/null
+ExecStop=/etc/init.d/scini stop > /dev/null 2<>/dev/null
 Restart=always
 RestartSec=0
 RemainAfterExit=true


$ sudo systemctl daemon-reload

driverを取得しに行くところの設定が無い

下記URLを参考に/bin/emc/scaleio/scini_sync/driver_sync.confを書き換えました。

サポート | Dell 日本

github.com

使ってみる

今回はOpenStackのcinderバックエンドとして組み込んでみます。
/etc/cinder/cinder.confを次のように書き換えます。

$ sudo vim /etc/cinder/cinder.conf
[Default]
enabled_backends = lvm,scaleio  ### scaleioを追記

### 以下を最下部に追記
[scaleio]
volume_driver = cinder.volume.drivers.dell_emc.scaleio.driver.ScaleIODriver   ### 新しめのOpenStackなら同梱されてます
volume_backend_name = scaleio
san_ip = {{ ScaleIO GatewayのIP }}
sio_protection_domain_name = default
sio_storage_pool_name = defaultSP
sio_storage_pools = default:defaultSP
san_login = admin
san_password = {{ MDMのパスワード }}
san_thin_provision = false

$ sudo systemctl restart openstack-cinder-api openstack-cinder-scheduler

### openstack側にvolume設定をします
$ cinder type-create scaleio
$ cinder type-key scaleio set volume_backend_name=scaleio

これでOpenStack側でボリュームを作成する際に、scaleioをストレージの種別で選択すればScaleIO上にボリュームが作られます。

オーバーヘッドが少ないのでコンピュートノードにScaleIOをインストールすることもできるそうです。

ノードの増減

ノードを増やすときはインストールのときと同様にWebインストーラーから行います。 先ほど用意したCSVを以下のように修正しましょう。

IPs,Password,Operating System,Is MDM/TB,Is SDS,SDS Device List,Is SDC
192.168.10.2,rootパスワード,linux,Master,Yes,/dev/dm-2,Yes
192.168.10.3,rootパスワード,linux,Slave,Yes,/dev/dm-2,Yes
192.168.10.4,rootパスワード,linux,TB,Yes,/dev/dm-2,Yes
192.168.10.5,rootパスワード,linux,,Yes,/dev/dm-2,Yes

192.168.10.5を追加してみました。 あとは先ほど同様CSVをアップロードしてインストールを進めていきます。 この時、下記画面でAdd to existing sys.に変えるのを忘れないようにします。

これで簡単にノードを増やすことができます。

再起動等でノードが切り離された場合でも自動で復旧しますし、データはミラーリングされているため、一部ノードが切り離されたとしても継続して動作します。 この辺も非常に頭が良くて便利です。

ScaleIO GUIで見てみる

Windowsに同梱のGUIツールをインストールしてみました。 表示はこのような感じになります。

ストレージ容量やIO速度、管理してる台数、アラートなどなど様々な項目があり非常に見やすいです。

まとめ

GUIでインストール・管理も簡単、ノードの増減による拡張性が高いなどさすがはエンタープライズ製品だなという感じでした。 エンタープライズ製品のストレージを触るためには通常費用が発生するので気軽に試すという機会はなかなか作れませんが、検証用途なら機能無制限で無料で利用できるというのは非常に良かったです。 本番導入にはライセンスが必要になりますので、導入は予算との兼ね合いになると思います。 しかしながら、管理・運用の容易さを考えると検討の価値は十分あるのではないかと思いました。