kazuitoitokazu’s diary

日本オラクルでインフラレイヤーの仕事をしています。

Oracle ZFS Storage Appliance (ZFSSA) で Object Store を使う

はじめに

Oracle ZFS Storage Appliance は NFSiSCSI、FC などを利用できる Unified Storage です。 Firmware ver OS8.7 から新たに Object Storage としても利用できるようになりましたので、設定して使ってみたいと思います。

設定

オブジェクトストアにアクセスするユーザを作成する。 f:id:kazuitoitokazu:20170620122116p:plain

オブジェクトストアとして利用する Filesystem の HTTP のオブジェクトストアモードを”読み取り/書き込み" に設定する。 f:id:kazuitoitokazu:20170620122132p:plain

先ほど作成したユーザが書き込めるように設定する。 f:id:kazuitoitokazu:20170620122123p:plain

構成→サービス→HTTP にてサービスを有効にし、先ほど作成したオブジェクトストアのパスを指定する。 f:id:kazuitoitokazu:20170620122127p:plain

動作確認

curl で確認をしていきます。

まず Proxy が設定されている場合は外しておきましょう。

$ unset http_proxy
$ unset https_proxy

まず Token を取得します。この時、ユーザは一般ユーザで取得すること。root でもTokenは取得できるが、その後の操作はできないので一般ユーザで進めていきます。

$ curl -i -X GET -H 'X-Auth-User: demo01' -H 'X-Auth-Key: welcome1' http://cloud-zfs7320-vip.jp.osc.oracle.com/auth/v1.0
HTTP/1.1 200 OK
Date: Fri, 16 Jun 2017 06:37:26 GMT
Server: Apache
X-Storage-Url: http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01
X-Storage-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
X-Trans-Id: tx9f6aab5dbe33495c8bba9-0059437ca6
Content-Length: 0
Content-Type: text/html; charset=utf-8

コンテナを作成

$ curl -v -H 'X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760' -i http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01/kazuito01 -X PUT
* About to connect() to cloud-zfs7320-vip.jp.osc.oracle.com port 80 (#0)
* Trying 10.122.12.35... connected
* Connected to cloud-zfs7320-vip.jp.osc.oracle.com (10.122.12.35) port 80 (#0)
> PUT /object/v1/export/object01/kazuito01 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: cloud-zfs7320-vip.jp.osc.oracle.com
> Accept: */*
> X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
>
< HTTP/1.1 201 Created
HTTP/1.1 201 Created
< Date: Fri, 16 Jun 2017 08:13:26 GMT
Date: Fri, 16 Jun 2017 08:13:26 GMT
< Server: Apache
Server: Apache
< X-Timestamp: 1497600806.63
X-Timestamp: 1497600806.63
< X-Trans-Id: tx1aa8d891b97ee11aca1dd-0059439326
X-Trans-Id: tx1aa8d891b97ee11aca1dd-0059439326
< Content-Length: 0
Content-Length: 0
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8

<
* Connection #0 to host cloud-zfs7320-vip.jp.osc.oracle.com left intact
* Closing connection #0

ファイルをアップロード

$ curl -v -H 'X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760' http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01/my_fio.sh -T my_fio.sh
* About to connect() to cloud-zfs7320-vip.jp.osc.oracle.com port 80 (#0)
* Trying 10.122.12.35... connected
* Connected to cloud-zfs7320-vip.jp.osc.oracle.com (10.122.12.35) port 80 (#0)
> PUT /object/v1/export/object01/my_fio.sh HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: cloud-zfs7320-vip.jp.osc.oracle.com
> Accept: */*
> X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
> Content-Length: 482
> Expect: 100-continue
>
* Done waiting for 100-continue
< HTTP/1.1 201 Created
< Date: Fri, 16 Jun 2017 08:06:41 GMT
< Server: Apache
< X-Timestamp: 1497600401.57
< X-Trans-Id: tx16480743f13e60469a26d-0059439191
< Content-Length: 0
< Content-Type: application/json; charset=utf-8
<
* Connection #0 to host cloud-zfs7320-vip.jp.osc.oracle.com left intact
* Closing connection #0

リストを取得

$ curl -i http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01/ -X GET -H "Content-Length: 0" -H 'X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760'
HTTP/1.1 200 OK
Date: Fri, 16 Jun 2017 06:45:09 GMT
Server: Apache
X-Timestamp: 1497595509.63
X-Account-Object-Count: 2
X-Account-Container-Count: 2
X-Account-Bytes-Used: 1048576020
X-Trans-Id: tx2f1212afb1a7e442f31cf-0059437e75
Transfer-Encoding: chunked
Content-Type: text/plain; charset=utf-8

container
test.img

ファイルのダウンロード

$ curl -v -H 'X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760' -i http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01/kazuito01/my_fio.sh -X GET -O
* About to connect() to cloud-zfs7320-vip.jp.osc.oracle.com port 80 (#0)
* Trying 10.122.12.35... connected
* Connected to cloud-zfs7320-vip.jp.osc.oracle.com (10.122.12.35) port 80 (#0)
> GET /object/v1/export/object01/kazuito01/my_fio.sh HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: cloud-zfs7320-vip.jp.osc.oracle.com
> Accept: */*
> X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
>
 % Total  % Received % Xferd Average Speed Time  Time  Time Current
                Dload Upload Total Spent  Left Speed
 0  0  0  0  0  0   0   0 --:--:-- --:--:-- --:--:--  0< HTTP/1.1 200 OK
< Date: Fri, 16 Jun 2017 08:28:33 GMT
< Server: Apache
< Content-Length: 482
< Accept-Ranges: bytes
< Last-Modified: 2017-06-16T08:26:09
< Etag: 6c70a22fdcd02f8f085ba5cb9fff5be3
< X-Timestamp: 1497601713.85
< X-Trans-Id: txdad3ff790cee6ecd9beac-00594396b1
<
{ [data not shown]
120 482 120 482  0  0 3526   0 --:--:-- --:--:-- --:--:-- 117k* Connection #0 to host cloud-zfs7320-vip.jp.osc.oracle.com left intact

* Closing connection #0

ファイルの削除

$ curl -v -H 'X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760' -i http://cloud-zfs7320-vip.jp.osc.oracle.com:80/object/v1/export/object01/kazuito01/test.tar -X DELETE
* About to connect() to cloud-zfs7320-vip.jp.osc.oracle.com port 80 (#0)
* Trying 10.122.12.35... connected
* Connected to cloud-zfs7320-vip.jp.osc.oracle.com (10.122.12.35) port 80 (#0)
> DELETE /object/v1/export/object01/kazuito01/test.tar HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: cloud-zfs7320-vip.jp.osc.oracle.com
> Accept: */*
> X-Auth-Token: ZFSSA_ba2629c6-5258-11e7-aed3-802128f06760
>
< HTTP/1.1 204 No Content
HTTP/1.1 204 No Content
< Date: Fri, 16 Jun 2017 08:24:59 GMT
Date: Fri, 16 Jun 2017 08:24:59 GMT
< Server: Apache
Server: Apache
< X-Timestamp: 1497601499.44
X-Timestamp: 1497601499.44
< X-Trans-Id: tx5e5b0c36a1c66867d090f-00594395db
X-Trans-Id: tx5e5b0c36a1c66867d090f-00594395db
< Content-Length: 0
Content-Length: 0
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8

<
* Connection #0 to host cloud-zfs7320-vip.jp.osc.oracle.com left intact
* Closing connection #0

その他

CloudBerry でもアクセスしてみました。 登録は以下のように指定してください。 f:id:kazuitoitokazu:20170620122112p:plain

このように見えてきます。 f:id:kazuitoitokazu:20170620122109p:plain

まとめ

このように ZFSSA を Object Storage として簡単に利用することができるようになりました。

また、認証を Openstack の Keystone と連携させることも可能です。詳細はこちらをご確認ください。