木曜日 8 14, 2014

ZFS Storage Appliance が OpenStack Cinder の block storage resource として利用可能に

Oracle ZFS Storage Appliance の RESTfull API サポートを紹介しましたが、これには続きがありました。 というわけで、RESTfull API が利用できる Oracle ZFS Storage Appliance は、OpenStack Cinder の block storage resource として利用可能になります。 iSCSI を利用した block volume をインスタンスに提供することが可能となり、Oracle ZFS Storage Appliance が提供する機能(暗号化など)と組み合わせることが可能になります。  

下記に必要な条件をまとめてみました。

  • Oracle ZFS Stoarge Appliance の条件
  • Cinder Host の条件
    • Oracle Solaris 11.2 を利用する
      • Oracle Solaris 11.2 の Cinder パッケージに含まれる Oracle ZFS Storage Appliance iSCSI Cinder Driver version 1.0.0 を利用
    • Solaris 11.2 以外の OpenStack Grizlly, Havana リリースの Cinder が動作しているホスト
    • /etc/cinder/cinder.conf に ZFS Storage Appliance の情報を追加
と、このような流れで block storage resource として利用できるようになります。
下記は、Oracle Solaris 11.2 上にて cinder コマンドを利用し volume を作成した例となります。



利用する際には、README (https://openstack.java.net/ZFSSACinderDriver.README) を参照してくださいね。
先に紹介した ZFS Storage Appliance Simulator でも動作すると思います。 

Horizon からインスタンスを作成すると ZOSS (Zones on Shared Storage) を利用した Solaris Zone (iSCSI を利用した volume 上に non-global zone を配置)が作成されることを確認できました。
色々と確認しなければならないことは多いですが、cinder コマンドから ZFS Storage Appliance を操作および利用できるようになったことで、また一つ可能性が広がりました。        

日曜日 8 10, 2014

Oracle ZFS Storage Simulator で RESTfull API を使って情報を参照してみる

2014/8/1 に Oracle ZFS Storage ZS3 シリーズに関する下記リリースを発表させて頂きました。

「Oracle ZFS Storage ZS3」シリーズの仮想化とクラウド機能の強化を発表

その中で気になったのが下記の一文です。

「Oracle ZFS Storage OS 8.2」のクラウド機能の拡張により、「OpenStack Cinder *3」対応のドライバーが追加され、REST対応APIも提供されました。

なんとか試してみたいなぁというわけで、Oracle ZFS Storage Simulator を確認すると、OS 8.2 版に更新されていました。
これは、VirtualBox が動作する環境であれば Oracle ZFS Storage の機能を評価できる優れもの。
クラスタなどの機能は専用の機構を利用しているため評価できませんが、ハードウェアに依存しないストレージの機能や Analytics などのほぼ全ての機能評価することが可能という素晴らしい Simulator です。

Oracle ZFS Storage Simulator
http://www.oracle.com/technetwork/server-storage/sun-unified-storage/downloads/sun-simulator-1368816.html

これを利用することで、RESTfull API の動作確認はできるはず。
また、ZFS Storage Appliance の RESTfull API については、下記のマニュアルに情報が記載されています。
ストレージのほとんどの操作が API 経由で可能なようです。

Oracle® ZFS Storage Appliance RESTful Application Programming Interface
http://docs.oracle.com/cd/E51475_01/html/E52433/index.html

早速、Simulator をダウンロードし、VBox 上で起動。
デフォルトでは REST サービスが disable になっていますので、これを enable にします。
手っ取り早く確認したいので、VIrtualBox のポートフォワーディング機能を使い、Simulator VM の Port: 215 をホスト OS の Port: 10215 にマッピングし、https://localhost:10215 経由でのアクセスしています。

さっそく、curl を使ってアクセスしてみます。
これは、/api/system/v1/version から ZFS Storage Appliance 環境のバージョン情報を取り出したものです。


$ curl --user root:password -k -i https://localhost:10215/api/system/v1/version

HTTP/1.1 200 OK

Date: Sun, 10 Aug 2014 00:07:36 GMT

Server: TwistedWeb/10.1.0

Content-Length: 814

X-Zfssa-Version: ak/generic@2013.06.05.2.0,1-1.10

X-Zfssa-Api-Version: 1.0

X-Zfssa-System-Api: 1.0

Content-Type: application/json; charset=utf-8

{"version":

{"href": "/api/system/v1/version",

"nodename": "unknown",

"mkt_product": "Oracle ZFS Storage VirtualBox",

"product": "Sun Storage 7000",

"version": "2013.06.05.2.0,1-1.10",

"install_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

"update_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

"boot_time": "Sat Aug 09 2014 23:24:29 GMT+0000 (UTC)",

"asn": "de217be8-104f-6106-db7f-9c9f7789faf6",

"csn": "unknown",

"part": "Oracle 000-0000",

"urn": "urn:uuid:11da4018-a79e-11dd-a2a2-080020a9ed93",

"navname": "aksh 1.0",

"navagent": "aksh",

"http": "Apache/2.2.24 (Unix)",

"ssl": "OpenSSL 1.0.0k 5 Feb 2013",

"ak_version": "ak/SUNW,ankimo@2013.06.05.2.0,1-1.10",

"os_version": "SunOS 5.11 ak/generic@2013.06.05.2.0,1-1.10 64-bit",

"bios_version": "innotek GmbH VirtualBox 12/01/2006",

"sp_version": "-"

}}

もう少し出力を見やすく整形できればと調べたところ、python 2.6 から含まれる json.tool module を利用することで、ぐっと見易くなりました。
curl の -i オプションで出力される protocol header がふくまれると解析に失敗してしまいますので、-i オプションを外し、パイプで python -m json.tool に渡してあげるおとで、先ほどの出力よりもさらに見易くなった結果を手に入れることができます。

$ curl --user root:password -k https://localhost:10215/api/system/v1/version | python -m json.tool

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   814  100   814    0     0    507      0  0:00:01  0:00:01 --:--:--   507

{

    "version": {

        "ak_version": "ak/SUNW,ankimo@2013.06.05.2.0,1-1.10",

        "asn": "de217be8-104f-6106-db7f-9c9f7789faf6",

        "bios_version": "innotek GmbH VirtualBox 12/01/2006",

        "boot_time": "Sat Aug 09 2014 23:24:29 GMT+0000 (UTC)",

        "csn": "unknown",

        "href": "/api/system/v1/version",

        "http": "Apache/2.2.24 (Unix)",

        "install_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

        "mkt_product": "Oracle ZFS Storage VirtualBox",

        "navagent": "aksh",

        "navname": "aksh 1.0",

        "nodename": "unknown",

        "os_version": "SunOS 5.11 ak/generic@2013.06.05.2.0,1-1.10 64-bit",

        "part": "Oracle 000-0000",

        "product": "Sun Storage 7000",

        "sp_version": "-",

        "ssl": "OpenSSL 1.0.0k 5 Feb 2013",

        "update_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

        "urn": "urn:uuid:11da4018-a79e-11dd-a2a2-080020a9ed93",

        "version": "2013.06.05.2.0,1-1.10"

    }

}

さらにさらに、jq なる json processor が色付けしてくれたり整形してくれたり色々加工できるということで試してみた。

jq
http://stedolan.github.io/jq/

今回は出力を得るのは Mac OS X 環境となりますので、Mac OS X binary を利用してみました。
バージョン情報の他、pool の情報や、プロジェクトの情報も取ってみましたがキレイに出力されますね。
python -m json.tool と jq があることを覚えておくと良いようです。

$ curl --user root:password -k https://localhost:10215/api/system/v1/version | ~/opt/bin/jq '.'

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   814  100   814    0     0    548      0  0:00:01  0:00:01 --:--:--   548

{

"version": {

"href": "/api/system/v1/version",

"nodename": "unknown",

"mkt_product": "Oracle ZFS Storage VirtualBox",

"product": "Sun Storage 7000",

"version": "2013.06.05.2.0,1-1.10",

"install_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

"update_time": "Mon Jun 23 2014 09:33:16 GMT+0000 (UTC)",

"boot_time": "Sat Aug 09 2014 23:24:29 GMT+0000 (UTC)",

"asn": "de217be8-104f-6106-db7f-9c9f7789faf6",

"csn": "unknown",

"part": "Oracle 000-0000",

"urn": "urn:uuid:11da4018-a79e-11dd-a2a2-080020a9ed93",

"navname": "aksh 1.0",

"navagent": "aksh",

"http": "Apache/2.2.24 (Unix)",

"ssl": "OpenSSL 1.0.0k 5 Feb 2013",

"ak_version": "ak/SUNW,ankimo@2013.06.05.2.0,1-1.10",

"os_version": "SunOS 5.11 ak/generic@2013.06.05.2.0,1-1.10 64-bit",

"bios_version": "innotek GmbH VirtualBox 12/01/2006",

"sp_version": "-"

  }

}

$ curl --user root:password -k https://localhost:10215/api/storage/v1/pools/vboxpool | ~/opt/bin/jq '.'

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  2308  100  2308    0     0  22349      0 --:--:-- --:--:-- --:--:-- 22407

{

"pool": {

"status": "online",

"profile": "stripe",

"errors": [],

"scrub": {

"errors": 0,

"repaired": 0,

"complete": true

    },

"name": "vboxpool",

"usage": {

"available": 80026824704,

"total": 80027320320,

"dedupratio": 100,

"used": 495616

    },

"peer": "00000000-0000-0000-0000-000000000000",

"vdev": [

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 1"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 2"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 3"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 4"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 5"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 6"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 7"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 8"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 9"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 10"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 11"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 12"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 13"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 14"

      },

      {

"size": 5368709120,

"state": "healthy",

"chassis": "00a62383-eb97-c48c-f88b-ea9afe7b89a5",

"type": "disk",

"label": "HDD 15"

      }

    ],

"owner": "unknown",

"asn": "de217be8-104f-6106-db7f-9c9f7789faf6"

  }

}

$ curl --user root:password -k https://localhost:10215/api/storage/v1/pools/vboxpool/projects | ~/opt/bin/jq '.'

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  1765    0  1765    0     0  39935      0 --:--:-- --:--:-- --:--:-- 40113

{

"projects": [

    {

"default_volblocksize": 8192,

"logbias": "latency",

"creation": "20140809T23:28:30",

"nodestroy": false,

"dedup": false,

"sharenfs": "on",

"href": "/api/storage/v1/pools/vboxpool/projects/default",

"sharesmb": "off",

"default_permissions": "700",

"mountpoint": "/export",

"snaplabel": "",

"id": "f4c572c1-20d9-400a-0000-000000000000",

"readonly": false,

"space_data": 31744,

"compression": "off",

"sharetftp": "",

"source": {

"logbias": "inherited",

"dedup": "inherited",

"sharenfs": "local",

"sharesmb": "local",

"mountpoint": "local",

"rrsrc_actions": "local",

"compression": "inherited",

"sharetftp": "local",

"snapdir": "inherited",

"sharedav": "local",

"copies": "inherited",

"aclinherit": "inherited",

"shareftp": "local",

"readonly": "inherited",

"secondarycache": "inherited",

"maxblocksize": "inherited",

"exported": "local",

"vscan": "inherited",

"reservation": "local",

"atime": "inherited",

"recordsize": "inherited",

"checksum": "inherited",

"sharesftp": "local",

"nbmand": "inherited",

"aclmode": "inherited",

"rstchown": "inherited"

      },

"default_sparse": false,

"snapdir": "hidden",

"aclmode": "discard",

"copies": 1,

"aclinherit": "restricted",

"compressratio": 100,

"shareftp": "",

"canonical_name": "vboxpool/local/default",

"recordsize": 131072,

"space_available": 78776401920,

"secondarycache": "all",

"space_snapshots": 0,

"space_unused_res": 0,

"quota": 0,

"maxblocksize": 1048576,

"exported": true,

"default_volsize": 0,

"vscan": false,

"reservation": 0,

"atime": true,

"pool": "vboxpool",

"default_user": "nobody",

"space_unused_res_shares": 0,

"name": "default",

"checksum": "fletcher4",

"space_total": 31744,

"default_group": "other",

"sharesftp": "",

"nbmand": false,

"sharedav": "",

"rstchown": true

    }

  ]

}

curl を使った参照のみによる簡単な RESTfull API の動作確認でしたが、Oracle ZFS Storage Appliance も OS 8.2 によりおもしろくなってきました。

Oracle ZFS Storage Appliance は、この RESTfull API を利用することで、OpenStack のブロックストレージリソース (Cinder) として利用することができるようになっています。(Cinder Host に ZFS Storage Appliance 用の driver を別途インストールが必要)
このへんも整理できたらまとめてみたいと思います。

木曜日 8 07, 2014

TCP トラフィックの輻輳制御の実装について (Congestion Control)

Solaris の TCP 輻輳制御の実装 (Congestion Control) が、Solaris 10 から変更になっていました汗

Solaris 10 までは、RFC 2581 に準拠したアルゴリズムを採用し固定でしたが、Solaris 11 からは、このアルゴリズムの実装を Pluggable にし複数の実装を提供できる Pluggable TCP Congestion Control と呼ばれる実装に変更されています。 Solaris 11 以降では、NewReno をデフォルトのアルゴリズムとし、New Reno の改良版である High Speed, Linux 2.6 以降で利用される CUBIC, Round-Trip Time による輻輳管理を行う Vefas の 4 つのアルゴリズムをサポートし、ipadm set-prop コマンドで変更でます。


 バージョン  アルゴリズム
 Solaris 10 まで  RFC 2581 準拠のアルゴリズム (ハードコード)
 Solaris 11 以降  Pluggable TCP Congestion Control 機能によりアルゴリズムを plugin で実装し選定可能に
newreno デフォルトアルゴリズム。制御メカニズムには、送信側の輻輳ウィンドウ、スロースタート、および輻輳回避があります
highspeed 高速ネットワーク用のもっとも有名かつシンプルな NewReno の修正版の 1 つ
cubic Linux 2.6 の現在のデフォルトアルゴリズム。輻輳回避フェーズを線形的なウィンドウ増加から cubic 関数に変更します
vegas 実際のパケットロスを発生させずに輻輳を予測しようとする典型的な遅延ベースのアルゴリズム

 

確認方法は、ipadm show-prop で出力される下記のプロパティを参照してください。 変更は、ipadm set-prop -p cong_default=cube tcp のように実行します。 詳細は、下記のマニュアルで。 Oracle Solaris 11.1 での固定ネットワーク構成を使用したシステムの接続 > トラフィックの輻輳制御の実装 http://docs.oracle.com/cd/E37932_01/html/E36462/ggtvn.html#gkkdv
TCP: 
# ipadm show-prop -p cong_default tcp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
tcp   cong_default          rw   newreno      --           newreno      newreno,cubic,
                                                                        highspeed,vegas
# ipadm show-prop -p cong_enabled tcp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
tcp   cong_enabled          rw   newreno,cubic, newreno,cubic, newreno  newreno,cubic,
                                 highspeed,   highspeed,                highspeed,vegas
                                 vegas        vegas

SCTP (Stream Control Transmission Protocol) :
root@havana-mgt01:~# ipadm show-prop -p cong_default sctp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
sctp  cong_default          rw   newreno      --           newreno      newreno,cubic,
                                                                        highspeed,vegas
root@havana-mgt01:~# ipadm show-prop -p cong_enabled sctp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
sctp  cong_enabled          rw   newreno,cubic, newreno,cubic, newreno  newreno,cubic,
                                 highspeed,   highspeed,                highspeed,vegas
                                 vegas        vegas                     


金曜日 8 01, 2014

Oracle Solaris 11.2 と Oracle Solaris Cluster 4.2 がリリース!

本日、日本時間 8/1 に Oracle Solaris 11.2 と Oracle Solaris 4.2 がリリースとなりました。アナウンスではないですよ。

Solaris 11.1 から .1 繰り上がっただけですが、すでに Open Beta 時からお知らせしているように、OpenStack (Open Beta は Grizzly でしたが、Havana ベースとなりました), Krenel Zones, Elastic Virtual Switch, Unified Archive など様々な新機能が盛り込まれています。
そして、これらの新機能を使うために、アプリケーションの修正は必要ありません。

また、Oracle Solaris に高可用性と DR 機能を提供する Oracle Solaris Cluster 4.2 も合わせてリリースされました。
Solaris Cluster 4.2 の HA Zone では新しい Kernel Zone をサポート。Solaris がサポートする仮想化機能に高可用性を付加します。
更に、ブラウザベースの管理インターフェースを新たに提供。また、Solaris 11.2 の統合アーカイブ機能と連携することで、物理クラスタ環境や仮想クラスタ環境を迅速にデプロイ可能です。

 ちなみに、さとかず & いとかづが作成している OpenStack on Solaris 環境を絵にしてみるとこうなります。奥が深い。
初物なので色々と試行錯誤していますが、新機能との連携を理解できると中々楽しいです。


About

Search

Archives
« 8月 2014 »
     
2
3
4
5
6
8
9
11
12
13
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
      
今日