未解決
35 メッセージ
3
2994
【ECS解説第1回】Elastic Cloud Storage (ECS) Community Edition (VM版) 最新版ご紹介
2019.02.27
皆様、こんにちは。
Dell EMC のオブジェクトストレージ製品である、Elastic Cloud Storage (ECS) はCommunity Editionとして検証用に無償のVM版をGitHubを通して提供しています。
新しいECS Community Editionをご紹介いたします。
概要
昨年8月に発表された新しいハードウェアプラットフォーム、EXシリーズのリリースに合わせて、ECSのソフトウェアイメージもV3.2.2.0にマイナーアップグレードされました。
そのリリースを受けて2018年9月に無償で提供されるVMware WorkstationなどでVMとして機能を試すことができるCommunity Editionも2.9.0-r-1にリリースアップされました。
2018年6月にリリースされたCommunity Edition 2.8.0 がECS Software V3.2.0.1ベースでしたので、2.9.0-r-1はV3.2.1で追加された拡張機能を含んだ新しいイメージです。
ECS V3.2.1には大きな改修ではないのですが、ストレージ内部で使われていないCASオブジェクトをモニターする機能やData Domain のCloud Tier機能で作られる大きなオブジェクト(4MB 超)のサポート、そして大きなNFSディレクトリのリスト機能を改善したことが挙げられています。
ECSの特長の一つはマルチプロトコルをG/Wサーバーを用意することなく実現でき、プロトコル間で一貫性のあるデータアクセスが可能なことです。今回のリリースでNFSが取り上げられたこともあり、今回は最新のCommunity Edition(VM版)を使って、NFSのようなファイルアクセスプロトコルとS3、Swiftのようなオブジェクトアクセスプロトコルの複数のマルチプロトコルでの同一データアクセスの確認と、データの一貫性を確認してみます。
アジェンダ
- インストール方法(再案内)
- Bucketへのアクセス
-
- Swift CLIを用いたECSのBucketへのSwiftプロトコルでのアクセス・オブジェクトデータI/O
- AWS S3APIを使用したECSのBucketへのS3プロトコルでのアクセス・オブジェクトデータI/O
- NFSマウントによるECSのBucketのマウントとファイル(オブジェクト)アクセス
インストール方法はCommunity Edition 2.7.0と変更がありません。
Sourceもリリースされていますが、OVA形式イメージも提供されていますので、お手元にVMware ESXiやWorkstation, Playerがあれば手軽に起動することができます。
GitHubのOVA形式イメージのリンク:
GitHubにInstallation Guideがありますので、参照ください。
2018年6月にブログとしてアップされたこちらの日本語記事も是非ご覧ください。詳細に記載されていますので失敗なしにインストールできます。
注意点の一つはVMのリソースとして下記の仕様を最小リソースとしてVMに割り当ててください。割り当てが不十分だとOS起動後に実施するインストール作業がリソース不足により途中で失敗します。
- 16GB RAM ← デフォルトの仮想マシン設定は2GBになっています。
- 4 CPU cores
- (Optional) Increase vmdk from the minimum 104GB
注意点の二つ目は、インターネット接続ができること、NTPサーバーとDNSサーバー準備しておく必要があります。
注意点の三つ目は、インストールのステップは結構時間がかかります。特に最後のova-step2を投入によって、準備したコンテナを立ち上げますが、コマンドプロンプトが返ってきても、10分くらいは次の設定に進むのは待ってください。
Buckets構成へのアクセス
今回はxubuntu (ubuntu)18.04をアクセスクライアントとしてECS VMをインストールするVMware WorkstationにVMを作成します。ECSとxubuntuの二つのVMをvnet8(NAT)配下のネットワークに接続させました。
このVMからウェブブラウザを起動して、立ち上げたECS VMノードにアクセスを試みます。今回は、ECSノードのIPアドレスを192.168.40.100に設定しました。User Name/Passwordは root/ChangeMe になっています(videployのデフォルトを使用)。
ログインに成功するとDashboard画面に遷移します。
ここで、オブジェクトストレージの各リソースを確認します。
左側のメニューからMange> Storage Polls とクリックしていくと、videployで設定されていたStorage Poolの sp1 が作成されていることを確認できます。
同じように左側のメニューから Manage> Virtual Data Center をクリックすると作成されているVirtual Data Center, VDCを確認できます。この例ではvideployで事前に設定されていたvdc1が見えています。
VDCの一覧の右端の Edit ボタンをクリックするとvdc1の構成が一覧できます。
Key 「pwPhwHQySrWrwrwTPnLR」
さらに Manage> Namespace をクリックすると、事前に構成されていたns1がリストされます。
VDC同様、右端のEdit ボタンをクリックすると、ns1で設定できる各ポリシーを確認できます。
先を急ぎ、Manage> Bucketsをクリックしましょう。
さらに右端のEdit Bucketをクリックすると、bucket1の構成を確認・変更できます。
まずは1ページ目を確認します。
bucket1はobject_admin1がBucket Ownerになっています。この後、Bucketにアクセスするときには、Bucket Ownerの入力が必要になりますので、覚えておいてください。
次にページ最後のNext> ボタンをクリックすると、オブジェクトストレージのBucketにファイルシステムやCAS、Metadata Searchを実行できるようにするか設定できるRequired 画面が表示されます。
後ほど設定するNFSでアクセスするときもこのページでの設定が必要になります。
Cancel ボタンをクリックして、いったん前の画面に戻ります。
ここまでの手順で確認した作成済みのbucket1でオブジェクトアクセスは可能になっています。
SwiftでのアクセスSwiftプロトコルでbucket1にアクセスをする前に、設定を確認します。
bucket1の設定をECSのマネジメント画面からもう一度見てみましょう。
左側のメニューのManage > Bucketsをクリックするとbucket1の設定のサマリを見ることができます。ここでbucket1のOwnerはobject_admin1が設定されていることがわかります。
今度は左側のメニューからManage >Users でobject-admin1のユーザー情報を見てみましょう。
開いたページの下部のほうに Object Accessの欄が表示されています。それぞれS3/AtmosとSwiftの項目があり、Secret Key、あるいはPasswordが設定されていることがわかります。
Swiftには「ChangeMe」がPasswordとして設定されています。(videployの中で平文で記載されていますので確認してみてください。)
bucket1にアクセスする情報はわかりましたので、SwiftプロトコルでCLIツールを用いてアクセスをします。ここではpython-swiftclientをインストールして、ECS上のbucket1にSwiftプロトコルでアクセスをしてみたいと思います。
Linux, Mac, WindowsのOSにそれぞれ対応したリリースがありますので、詳しくは各OS向けのディストリビューションを参照ください。今回用意したxubuntuはUbuntuのディストリビューションが利用できました。
sudo apt-get install python-pip
sudo apt-get install python-swiftclient
pip install python-swiftclient
認証サーバーとしてKeystoneがあれば、Keystoneの登録も必要になりますが、今回はECSへのアクセスを確認するだけにしますので、設定なしで進めます。
python-swiftclientがインストールできましたら、早速、ECSにアクセスをしてみたいと思います。まずECSのbucketの設定を見てみます。VM版では導入時にbucket1を事前に作ってありました。swift アクセスでのユーザーを確認しておきましょう。
xubuntuからECSのswift環境にアクセスしてみます。ECSへswiftプロトコルでアクセスする場合、httpであればポート9024、https (SSL)であればポート9025を使用します。
アクセスするユーザーは、-U オプション、パスワードは、-K オプションを使用し、コマンドとしては、listを使ってみます。
swift -A http://192.168.40.100:9024/auth/v1.0/ -U object_admin1 -K ChangeMe list
コマンドの投入後のイメージが以下のように、bucket1が存在することが表示されます。
このbucket1にはまだobjectが格納されていないため、bucket1の中をListしても何も出力されません。
このbucket1にテキストデータのtest.dataをアップロードしてみます。アップロード後にbucket1の中をListすると、アップロードしたtest.dataが表示されました。
このデータを使って、次のS3でのアクセスを進めてみたいと思います。
つまり、SwiftでアクセスしたデータがS3でもアクセスできることを確認します。
それぞれ、SwiftとS3プロトコルでObjectをListしてみました。のbucket1にアクセスしたいと思います。S3でのアクセスにはhttpであればポート9020、https (SSL)であればポート9021を使用します。
bucket1のOwnerであるobject-admin1にはS3のSecret Keyも設定されていました。
Swiftの項目でも表示していましたが、改めて左側のメニューからManage >Usersをクリックし、object-admin1を選択してS3/AtmosのSecret Keyを表示してみましょう。S3/AtmosのSecret Keyはチェックボックスをクリックすれば平文で見ることができます。
すでにUbuntuにはawscli をubuntuにインストールしてあります(インストールコマンド sudo apt install awsclie -y でインストールできます)。
aws s3api プロトコルでオブジェクトの操作が可能になります。
list-objectコマンドを使ってbucket1のObjectの一覧を取得しました。Key: test.data として表示されています。
このtest.dataをget-objectコマンドを使ってダウンロードして、test.data.s3としてUbuntuに保管します。そのうえで、test.data.s3を修正し、put-objectコマンドをつかってアップロードをしてみましょう。
修正したtest.data.s3をアップロードした結果です。bucket1の中をlist-objectでListすると、二つのObjectがListされています。
ECSはNFSv3をサポートしています。ECSでNFSの利用は、例えばアーカイブデータのような比較的I/Oの少ない静的なデータを、オブジェクトストレージと共有することを想定しています。NAS専用機のように決して小サイズのデータにも十分なパフォーマンスを提供するというよりは、大きなデータサイズのオブジェクトデータをファイルとして読み出し、書き出しを中心に取り扱うことができるようにすることを効率的に、かつファイルサイズの制約などなしに行えることががメリットです。
ECSでNFSを利用できるようにするためには、NFSアクセスのためのbucketsにNFSプロトコルでアクセスするUnix User/Groupのセットをマッピングする必要があります。
また、Bucketを作成時にファイルアクセス(NFS、HDFS)を利用できるように設定する必要があります。今回使用しているVM版のECSにvideployで導入時に作成していたbucket1はファイルアクセスをEnableにしてありません。したがって、新たにbucketを作成する必要があります。
新しいBucketの作成
NFSとオブジェクトアクセスが可能なBucketを作成します。
Bucket Managementに戻って、新しいBucket、ここではbucket2を作成します。左側のメニューから、Manage >BucketsをクリックしてBucketの一覧表の上部にあるNew Bucket ボタンをクリックします。
bucket Nameを bucket2 として作成します。Ownerは bucket1同様 object_admin1 としておきます。
Next ボタンをクリックし次の画面、Required に進みます。
ここで File System(NFS、HDFSの利用) を On にします(On ボタンをクリック)。また、Default Bucket Group にアクセスさせるユーザーの所属するグループを記載します。ここではnfsgroupを入力しました。この設定はBucket設定後は変更できません。
Next ボタンをクリックし、次のOptionalの画面は特に設定せず、Save ボタンをクリックします。Bucket Managementの画面に戻り、Bucketのリストに新しい bucket2 がリストされました。
次にManage> File をクリックします。
すでにクリックされた状態のはずですが、クリックされた状態でなければ上部のExportsボタンをクリックしてください。
New Export ボタンをクリックし、New File Export画面に遷移した後、Bucket のダウンリストで先ほどファイルアクセスも可能になるよう作成したbucket2を選択します。
次にExport Host Options の Addボタンをクリックし、ポップアップ画面に今回使用しているxubuntuのIPアドレス、192.168.40.125をExport HostのボックスにセットしPermissions を Read/Writeに選択し、Add ボタンをクリックします。
今回は変更しませんが、このページでExport Pathを変更することができることを確認してください。また、Show Bucket QuotaをNo(Exportサイズをストレージプールサイズとしてレポートします)またはYes(ExportサイズをBucketのハードクォータとしてレポートします)を選択します。今回はNoを選択しました。さらにRootSquashを必要に応じて設定してください。今回の例でno_root_squashをセットすると、スーパーユーザーの権限でアクセスが可能になります。
ポップアップが閉じます。
元のManage> File画面でSave ボタンをクリックします。
Manage >File画面に戻ったら、User/Group Mapping ボタンをクリックし、New User/Group Mappingボタンをクリックします。
New User/Group Mapping 画面の中で、NFSマウントに使用するUser、Groupを設定します。
ここでは、object_admin1をユーザーとしてUID 1000を割り当て、nfsgroupをグループとしてGID 1000を割り当てます。(今回使用しているxubuntu上のユーザーのuidとgidに合わせています)
user、groupが設定できると、以下のようになります。
xubuntu のマウント先を/mnt/nfsとして作成しました。
xubuntu (ubuntu) 18.04を使用しましたが、DefaultがNFS V4をサポートしているため、mountコマンドにNFSv3をしていします(-o vers=3)。export pathは /ns1/bucket2 でしたから、以下のコマンドでNFSマウントを試みます。
mount -t nfs -o vers=3 192.168.40.100:/ns1/bucket2 /mnt/nfs
コマンド投入後、dfコマンドで見ると、うまくマウントできたようです。このマウント先にファイルを作成してみましょう。
SwiftやS3アクセスと同じ手順ですが、ファイルを作ってテキストデータを書き込んでみました。
NFSアクセスで書き込んだファイルですが、オブジェクトとしても確認してみましょう。それぞれ、SwiftとS3プロトコルでObjectをListしてみました。nfs.dataがListされています。
aws s3api get-objectコマンドでダウンロードしてみます。
さて、このデータを少しテキストデータを加えて、S3アクセスでアップロードしてみて、それぞれのプロトコルで反映されるか確認してみましょう。
どうやら、うまく反映されたことが確認できました。
最後に
大変長い資料になってしまいましたが、最後までお付き合いいただきありがとうございます。
基本的な機能としてECSはゲートウェイサーバーなどを必要とせずにファイルアクセス(今回はNFS、ほかにHDFS)、オブジェクトアクセスを同一bucketでサポートし、データの一貫性を保証することができることがお分かりいただけたと思います。もちろん、それぞれのアクセスでの制約上の相違が生じる場合もあります。また別の機会にそういった事象の説明もさせていただければと考えております。
ECSには今回ご紹介したCommunity Edition (VM版)のほかに、インターネット経由でECSにS3アクセスを提供しているお試し版のECSサービスであるTEST DRIVEを提供しています(無償)。次の機会には、利用方法をご紹介したいと思います。
また、今回はs3curlをご紹介できませんでした。s3curlを用いると、S3アクセスでユーザーが任意のメタデータの付与を行ったり、データアクセスを行うことが可能になります。近いうちにご紹介させていただきます。
Community Editionでは暗号化機能を提供していません。また、今回の構成はシングルノードで構成しましたので、Erasure Coding (12(data)+4(parity))構成でデータを書き込みしていません。しかし、Community Editionでも4ノード以上のVMをご用意いただければECを体験いただけます。リソースを必要としますので、もし環境がありましたらぜひトライしてみてください。
三田のCSCセンターでEX300の構成を今春半ばには実機を使用したデモをお見せできるようセットアップ作業を進めております。もし製品版をご覧になりたい方、より詳細を試してみたい方がいらっしゃいましたら、Dell EMCの弊社担当営業にお知らせください。
ではまたの機会にお目にかかれますことを願っております。
杉本 直之
デルEMC
UDS事業本部SE部
参考文献
ECS 3.2.x.x Administration Guide
https://support.emc.com/docu88135_ECS_3.2.x.x_Administration_Guide.pdf?language=en_US&source=Coveo
ECS 3.2.x.x Data Access Guide
https://support.emc.com/docu88137_ECS_3.2.x.x_Data_Access_Guide.pdf?language=en_US&source=Coveo
少し古い情報ですが、support.emc.comより提供されている日本語公開資料です。
https://support.emc.com/docu86295_ECS_3.1データ_アクセス_ガイドpdf?language=ja_JP&source=Coveo