月曜日 2 22, 2016

ps コマンドと /proc/<pid> の機能向上

はじめに

先日 Solaris 11.3 の新しい SRU がリリースされました。このリリースには、ps コマンドのコマンドライン文字列の扱いに関する機能向上が含まれています。その詳細について Casper Dik が ブログ記事 にまとめていましたので、ご紹介いたします。

翻訳文

Solaris 2.0 がリリースされると、ps(1) コマンドの出力が 80 文字に制限されていることについての不満が出るようになりました。また、ps(1) コマンドは環境変数を出力することができませんでした。

それらの問題は /usr/ucb/ps コマンドを使うことで解決できましたが、その実装は対象プロセスのアドレス空間を逐一読み出すことで実現されていました。これを権限のエスカレーションなしに動作させるには、少なくとも同じ権限と uid/gid が必要になります。{proc_owner} 権限だけでは不十分でした。

Solaris に pkill(1) と pgrep(1) を追加したときも、同じ問題が持ち上がりました。コマンドラインの最初の 80 文字(PRARGSZ で指定されている文字数)と、コマンド名の最初の 16 文字(PRFNSZ で指定されている文字数)しか表示できなかったのです。

これらは深刻な問題でした。例えば、Java のプロセスではコマンドラインの文字数が 80 文字を越えることは普通で、しかも重要な JAR ファイル指定の場所は 80 文字よりあとにあることがよくありました。

もちろん、お客さまからもこの挙動は好かれていませんでした。

この問題は Solaris 12 では修正されていますが、この度、Solaris 11.3 SRU 5.6 にも /proc/<pid> に以下の 3 つのファイルが追加されました。

  • cmdline - プロセス起動時のコマンドライン引数を NUL 区切りで格納
  • environ - プロセス起動時の環境変数を NUL 区切りで格納
  • execname - プロセス起動時に exec に渡されたプログラム名を格納

cmdline と execname はパブリックに読み出し可能、environ ファイルはプロセスの所有者か {proc_owner} 権限を持ったプロセスからのみアクセス可能です。cmdline と environ ファイルは Linux の同名のファイルとほぼ同じですが、プロセスのアドレス空間内にある実際のコマンドライン文字列を反映しており、プログラム自身による上書きは反映されません。

ps(1) コマンドには -o オプションで指定可能なフォーマットに "env" が追加されました。/proc/<pid> の新しいファイルが使用されるようになり、コマンドライン文字列は省略されることなく表示されるようになりました。

ps(1) や ps(1b) は /proc/<pid>/as (as => address space) ファイルを開く必要がなくなったので、以前に比べて必要な権限が抑えられており、実行ファイルの読み出しも不要になりました。これは ps(1b) の性能向上にも繋がっており、特に NFS 上にも実行ファイルが配置されている場合などに効果的です。

これらは基本的には Solaris 12 の ps 及び /proc の修正のバックポートになっており、解決されたバグと機能改善の一覧は以下の通りです。

PSARC/2015/207 /proc/<pid>/{cmdline,environ,execname} の追加
15742822 SUNBT7092685 ps(1) がコマンドライン文字列をもっと表示できるような /proc インターフェイスの拡張
15420404 SUNBT6599384 pgrep/pkill が 16 文字のファイル名のプロセスを発見・検索できない
19669195 ucbps.c:569 の ucb_procinfo でメモリリーク
15227016 SUNBT5100626 ps(1) コマンドが ttyname に空の文字列を表示することがある
15282779 SUNBT6313436 /usr/ucb/ps の malloc() の失敗が引数の解析時に予測不能な結果を引き起こす
14966583 SUNBT4157509 /usr/ucb/ps に BSD や SunOS 4.x のコマンドと互換性が無い
15488063 SUNBT6715628 ps -d が -z を無効にする
21447952 /usr/ucb/ps gxw がハングするが、w なしの場合は動作する。/proc/<pid>/as をオープンしない。
21297345 procfs の制御メッセージサイズの制限
15582848 SUNBT6872216 ps コマンドは以前の name と uid 情報を参照する必要がある
15584899 SUNBT6875625 ps コマンドは、ロックの競合を避けるため、/proc に chdir すべきである

金曜日 2 19, 2016

SPARC の暗号化処理ハードウェアの稼働状況を観察する方法

はじめに

SPARC M7 チップ には暗号化処理のハードウェアアクセラレータが搭載されています。このブログエントリーでは、CPU 内蔵の暗号化命令が利用されていることを観察する方法をご紹介します。この記事は Eric Reid による ブログ記事 の翻訳版です。

翻訳文

最近このブログで SPARC M7 チップ内蔵の暗号化機能の素晴らしさについて紹介してきました。実際に Oracle のパートナーさまのソフトウェアでも活用例が出てきています。ある時、読者の方から「自分の動かしているソフトウェアで暗号化機能が使われているかどうか確認するにはどうしたら良いのか?」という質問をいただきました。とても良い質問です。2012 年に ダン・アンダーソン が書いた「SPARC T4 の暗号化機能が使われているかを確認する方法 」を最新情報にアップデートしたいと思います。

SPARC T4 の当時は、CPU の暗号化機能へのアクセスはユーザランドからの関数呼び出しで実現されていましたので、DTrace を使って稼働状況を観察することができました。その後、Solaris 11 の暗号化フレームワークでは、より直接的に SPARC の暗号化命令を使用するように実装が改善されました。この変更は OpenSSL など多くのソフトウェアに影響が及ぶものでした。以前に比べて綺麗な実装となった一方で、暗号化機能の稼働状況を DTrace で観察することは難しくなりました。

その代わりに cpustatcputrack コマンドを使うことができます。

cpustat と cputrack は CPU のパフォーマンス・カウンターにアクセスするコマンドです。これらを使って SPARC の暗号化機能のカウンターに記録された実行回数を読み出すことができます。

SPARC T4 以降の CPU と Solaris 11 では以下のように実行できます。

# # シングルソケットの SPARC T4 サーバで実行した例
#
# # 全プロセス、全 CPU からの暗号化命令の呼び出し回数を 1 秒分表示
# cpustat –c pic0=Instr_FGU_crypto 1 1
  time cpu event      pic0
1.021    0 tick         5
1.021    1 tick         5
1.021    2 tick         5
1.021    3 tick        11
1.010    4 tick         5
1.014    5 tick         5
1.016    6 tick        11
1.010    7 tick         5
1.016    8 tick       106
1.019    9 tick       358
1.004   10 tick        22
1.003   11 tick        54
1.021   12 tick        25
1.014   13 tick       203
1.006   14 tick        10
1.019   15 tick       385
1.008   16 tick      2652
1.006   17 tick        15
1.009   18 tick        20
1.006   19 tick       195
1.011   20 tick        15
1.019   21 tick        83
1.015   22 tick        49
1.021   23 tick       206
1.020   24 tick       485
1.019   25 tick        10
1.021   26 tick        10
1.021   27 tick       471
1.014   28 tick      1396
1.021   29 tick        10
1.018   30 tick        26
1.012   31 tick        10
1.021   32 total     6868
# # 全プロセスからの暗号化命令の実行回数を CPU ソケット単位で表示
# cpustat –c pic0=Instr_FGU_crypto –A soc 1 1
time soc event      pic0
1.014    0 tick      7218
1.014  256 total     7218
# # プロセス ID 10221 のプロセスが暗号化命令を呼び出した回数をファイルに出力
# cputrack –c pic0=Instr_FGU_crypto –p 10221 –o outputfile

ノート 1 : Oracle VM for SPARC (LDoms) のバージョン 3.2 より前のリリースでは、このコマンドをゲストドメイン内で実行することはできません。バージョン 3.2 以降では perf-counters プロパティを設定することでゲストドメインからのアクセスを許可することができます。

ノート 2 : Solaris 11 のデフォルトでは、非大域ゾーンからこれらのコマンドを実行することは許可されていません。limitpriv="default,cpu_cpu" を設定することで変更できます。

これで CPU による暗号化処理がどのくらい使用されているかを観察することができるようになりました。もう少し直感的に測定できるように、相対的な使用回数を表示する bash のスクリプトを作成してみました。ご自由にお使いください。以下がスクリプトのソースコードと使用例です(SPARC M7 で実行しました)。

# cat crypto_histo.bash
#! /bin/bash

while (true); do
    echo `cpustat  -c pic0=Instr_FGU_crypto -A soc 1 1 | \
        grep total | \
        awk '{
            num=4*int(log($NF)/log(10));
            hist="";
            for (i=0; i<num; i++) hist=hist"=";
            print hist
        }'`
done
#
# スクリプトを起動し、別ウィンドウから "openssl speed -evp AES-192-CBC" を実行
# ./crypto_histo.bash
============
============
============
============================
================================
====================================
====================================
====================================
====================================
====================================
====================================
============
================
============
============
============

SPARC に内蔵されたの暗号化処理ハードウェアは、常時有効になっており、驚くほど高速で、容易に観察可能です。

月曜日 12 14, 2015

Solaris 11.3 に Jenkins をインストールして SMF でサービス化してみる

Jenkins による継続的インテグレーションサーバの設定

本記事は、Automated Application Development and Deployment with DevOps on Oracle Solaris 11をベースに Jenkins のインストール方法について書かれた記事です。

Jenkins は、継続インテグレーションシステムを提供するオープンソースソフトウェアです。
ユーザは、継続的にビルドとテストソフトウェアによりソフトウェア開発を自動化でき、ビルドやビルドログを通して可観測性を提供します。
また、Jenkins は、分散コンピューティングのための能力をサポートする他、様々な組織の要件を満たすために、サードパーティ製のプラグインを追加して拡張することができます。

継続なんちゃらとか開発とかは気にせず、なんかいろいろと自動化するのに役に立ちそうくらいが気が楽で良いと思います。
なんかリッチな crontab とか誰か良いこと言ってた。

## 本文章の目的

この文章では、Oracle Solaris 11.3 上に Jenkins をインストールするとともに、SMF によるサービス化の方法を学習することを目的としています。

## Solaris 11.3 での SMF 新機能

Solaris 11.3 における SMF 関連の新機能をおさらいしてみます。
新たに追加された機能は、下記となりますが、今回はこれらの機能は使いません。

## Jenkins ユーザの作成

まず、Jenkins 環境を構成するために jenkins ユーザを作成します。

root@solaris:~# useradd -m jenkins
root@solaris:~# passwd jenkins
New Password:
Re-enter new Password:
passwd: password successfully changed for jenkins
root@solaris:~# su - jenkins

作成した jenkins ユーザでログインし、環境を確認してみましょう。
この記事の環境は、Solaris Kernel Zones であることがわかります。
Java がインストールされていないようであれば # pkg install jre-8 でインストールしておきましょう。

jenkins@solaris:~$ uname -a
SunOS solaris 5.11 11.3 sun4v sparc sun4v
jenkins@solaris:~$ virtinfo
NAME            CLASS
kernel-zone     current
logical-domain  parent
non-global-zone supported

jenkins@solaris:~$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

## Jenkins のインストール

現在、Jenkins は Oralce Solaris 11.3 の Image Packaging System (IPS) では提供されないソフトウェアとなります。
そのため、Jenkins をインストールするために必要なファイル(この場合は、WAR ファイル) をブラウザやコマンドライン経由でダウンロードします。

 http://mirrors.jenkins-ci.org/war/latest/jenkins.war

継続的インテグレーションを提供するためには、Jenkins ビルドサーバが常に稼働している必要があります。 そこで、Oracle Solaris 11 が提供する Service Management Facility (SMF) を利用することにより、Jenkins は Oracle Solaris 11 のサービスとして統合することが可能になります。
この機能により、何からの理由によりサービスが停止したとしても、SMF が自動的に再起動するなどサービスの信頼性を向上させることが可能となります。

## Jenkins の SMF サービス化

そのためには、Jenkins のために SMF マニフェストを作成する必要があり、SMF マニフェストは、SMF サービへ登録するために必要になります。
このマニフェストの雛形を自動生成するためのツールである svcbundle (1M) ユーティリティが Solaris 11.1 で提供され、これを利用して簡単に作成することができます。 ここでは、Jenkins を依存関係をもたない新しいシングルインスタンスサービスとして作成します。
作成されたマニフェストの内容は WAR ファイルを実行するシンプルな内容となります。

jenkins@solaris:~$ svcbundle -o jenkins.xml -s service-name=site/jenkins \
-s model=child -s instance-name=default \
-s start-method="java -jar /export/home/jenkins/jenkins.war"

## SMF サービス化した Jenkins に環境変数を参照させて起動させる

svcbundle によりシンプルな SMF マニフェストを作成できましたが、Jenkins を実行するためにもう少し作業が必要です。
Jenkins では、設定ファイルや作業ファイルを保存する場所(ホームディレクトリ)を環境変数 JENKINS_HOME で指定できますが、 この環境変数を SMF マニフェストに追加し、Jenkins 起動時に参照されるようにします。
この設定は、SMF マニフェストの method_context にて行います。

例として JENKINS_HOME を jenkins ユーザのホームディレクトリに設定してみます。

jenkins@solaris:~$ gdiff -c jenkins_orig.xml jenkins.xml
*** jenkins_orig.xml    Wed Dec  9 00:38:45 2015
--- jenkins.xml Wed Dec  9 00:39:27 2015
*** 15,21 ****
              <service_fmri value="svc:/milestone/multi-user"/>
          </dependency>
          <exec_method timeout_seconds="60" type="method" name="start"
!             exec="java -jar /export/home/jenkins/jenkins.war"/>
          <!--
              The exec attribute below can be changed to a command that SMF
              should execute to stop the service.  See smf_method(5) for more
--- 15,29 ----
              <service_fmri value="svc:/milestone/multi-user"/>
          </dependency>
          <exec_method timeout_seconds="60" type="method" name="start"
!             exec="java -jar /export/home/jenkins/jenkins.war">
!               <method_context>
!                   <method_credential group='nobody'
!                       privileges='basic,net_privaddr' user='jenkins'/>
!                   <method_environment>
!                       <envvar name='JENKINS_HOME' value='/export/home/jenkins'/>
!                   </method_environment>
!               </method_context>
!       </exec_method>
          <!--
              The exec attribute below can be changed to a command that SMF
              should execute to stop the service.  See smf_method(5) for more

## SMF マニフェストの検証

作成された SMF マニフェストをサービスとして実行する前に、マニフェストが正しく記述されているか検証することをお勧めします。
SMF マニフェストの検証には、svccfg validate コマンドを実行します。

jenkins@solaris:~$ svccfg validate jenkins.xml
jenkins@solaris:~$

エラーを返さずコマンドが終了したので、マニフェストには構文間違えなどないことがわかりました。

## SMF サービスへの登録

それでは、作成した SMF マニフェストをサービスとして登録するために、サイト固有のディレクトリに配置します。

jenkins@solaris:~$ sudo cp jenkins.xml /lib/svc/manifest/site/
Password:
jenkins@solaris:~$

そして、 サイト固有のディレクトリに配置された SMF マニフェストを取り込むための SMF サービスである、manifest-import:default サービスを再起動します。

jenkins@solaris:~$ sudo svcadm restart manifest-import:default

この操作で、作成した SMF サービスは Jenkins サービスとして SMF に登録が完了しました。
Jenkins に限らず、従来 /etc/init.d や rc2.d などに配置していたサービス起動用スクリプト(Solaris 11.3 でも利用可能。legacy service として扱われます)を SMF にすることで、サービスの並列起動、サービス・リスターターや他サービスとの依存関係を持たせることなどが可能になります。

## SMF サービスの確認

それでは、Jenkins の SMFサービスがオンラインになっていることを確認してみましょう:

jenkins@solaris:~$ svcs jenkins
STATE          STIME    FMRI
online         18:10:24 svc:/site/jenkins:default

SMF サービス site/jenkins が存在し、STATE が online になっていればサービスとして稼働しています。

## Jenkins ダッシュボードへのアクセス

それでは Jenkins ダッシュボードへアクセスしてみましょう。
Web ブラウザから http://localhost:8080 にアクセスすることで Jenkins のダッシュボードへアクセスすることができます。

Jenkins ダッシュボード画面 図1. Jenkins ダッシュボード画面

ここまでの作業で、Jenkins が稼働する環境を手にいれることができました。
アクセス制御などのセキュリティ設定や様々なプラグインも提供されますので、サイトにあったカスタマイズが必要になります。

次のステップは、Jenkins をベースとしたアプリケーションのビルド環境を構築して行くことになります。
(続く・・・かな・・・

参考情報

火曜日 12 01, 2015

Solaris 11.3 における ZFS ARC のメモリ割り当ての改善

翻訳元の文章

Solaris 11.3 から、カーネルのメモリ確保の為のサブシステムの KOM (カーネル・オブジェクト・マネージャ)が実装されました。KOM の最初の使用用途は ZFS の ARC です。

Solaris 11.3 以前、ZFS ARC は kmem キャッシュを使用してカーネルヒープからメモリを確保していましたが、この実装にはいくつかの欠点がありました。

その一つは、ARC で使用されたメモリが断片化を起こして、システムから回収されなくなってしまう可能性があったことです。この現象は ARC 用のメモリにラージページを使用している場合に顕著でした。一つひとつの ARC バッファはラージページのページサイズに比べて非常に小さいですが、ページの中に一つでも ARC バッファが存在しているとページ全体が解放できないからです。

もう一つの欠点は、カーネルヒープが物理メモリ上を移動できない領域で、カーネル・ケージ内に確保する必要があったことです。これにより、ラージページのメモリを新たに確保したい場合や、動的再構成を使用してシステムのメモリを切り離したい場合に、巨大な ARC が存在していると問題が発生する恐れがありました。カーネル・ケージが大きくなってしまうことへの回避策として、/etc/system で ARC キャッシュのサイズを制限する方法がよく行われていました。

また、ARC の縮小速度はヒープページのマッピング解除スピードに依存していたため、たくさんのメモリを搭載した SPARC システムでは十分な処理性能が得られないことがありました。

Solaris 11.3 では ZFS ARC は KOM を使ってメモリを割り当てます。頻繁に ZFS からのアクセスが発生するディレクトリファイルなどのメタデータは引き続きカーネル・ケージ上に割り当てられますが、キャッシュの大部分のあまりアクセスが発生しないデータはカーネル・ケージの外に配置され、システムの動的再構成やメモリページ結合の際に再配置できるようになりました。

KOM は x86 CPU のマシンでは 2MB のスラブメモリを、SPARC マシンでは 4MB のスラブメモリを使用しますが、これにより従来の 256MB 単位のヒープページに比べて断片化の恐れが少なくなっています。

また、KOM はアドレス変換に seg_kpm フレームワークを使用するため、64bit システムでスケーラビリティが向上しています。

これらの変更でメモリ管理の仕組みが改善されましたので、従来 ARC サイズの制限をおこなっていた多くのシステムで、設定をする必要がなくなっています。ただし ZFS のメタデータへのアクセスが多いシステムや、カーネルゾーンを使用しているシステムでは Solaris 11.3 でも引き続き /etc/system で ARC を制限する必要があります。

参考リンク

参考 - ZFS ARC を調査するコマンド

# kstat -p zfs::arcstats:size
# echo '::kmastat' | mdb -k | grep zfs
# echo ::memstat | mdb -k | grep ZFS
# echo ::arc | mdb -k

火曜日 11 24, 2015

Oracle Solaris 11.3 日本語マニュアル提供開始

Solaris 11.3 日本語マニュアル提供開始

お待たせしました。
Oracle Solaris 11.3 日本語マニュアルおよび関連マニュアルが公開されました。
また、End of Feature リストも更新されましたので、こちらもあわせてご確認頂ければと思います。

ソフトウェア

ハードウェア

木曜日 10 29, 2015

Solaris 11.3 をインストールしてみました

Solaris 11.3 が リリース されたので早速インストールしてみました。

# cat /etc/release 
                             Oracle Solaris 11.3 X86
  Copyright (c) 1983, 2015, Oracle and/or its affiliates.  All rights reserved.
                            Assembled 06 October 2015
# uname -srvmpi
SunOS 5.11 11.3 i86pc i386 i86pc
# pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.3.1.0.5.0     i--
# pkg info entire
          Name: entire
       Summary: Incorporation to lock all system packages to the same build
   Description: This package constrains system package versions to the same
                build.  WARNING: Proper system update and correct package
                selection depend on the presence of this incorporation.
                Removing this package will result in an unsupported system.
      Category: Meta Packages/Incorporations
         State: Installed
     Publisher: solaris
       Version: 0.5.11 (Oracle Solaris 11.3.1.5.0)
 Build Release: 5.11
        Branch: 0.175.3.1.0.5.0
Packaging Date: Tue Oct 06 14:00:51 2015
          Size: 5.46 kB
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.3.1.0.5.0:20151006T140051Z

Solaris 11.3 の主要な新機能は、

  • SPARC M7 CPU 上に実装されたセキュリティ機能 (SSM) のサポート
  • Kernel Zone のライブ・マイグレーション
  • OpenStack Juno の実装
  • Solaris の管理をシンプルにする REST API

などですが、それ以外にも非常に多くの新機能が実装されています。

Solaris 11.3 の新機能の一覧は What's New にまとまっています。

現在 Solaris 10 をお使いの方は Solaris 10 からの移行ガイド をご参照ください。

その他、各種機能や構成手順についてのより詳しい情報は ドキュメント・ライブラリ をご利用ください。

Solaris 11.3 は こちら からダウンロードできます。

インストール用の CD/DVD/USB イメージや Unified Archive のアーカイブファイル、IPS パッケージのリポジトリイメージ、OpenStack がインストールされた状態の Unified Archive ファイル、VirtualBox や Oracle VM 上に Solaris をデプロイする為のテンプレートイメージなどが用意されています。

みなさまもぜひ Solaris の最新リリースをお試しください。

水曜日 10 28, 2015

Oracle Solaris 11.3 ついにリリースされました

Oracle Solaris 11.3 ついにリリースされました

お待たせしました! OOW 2015 にて、下記製品を発表およびリリースすることができました。

  • Oracle Solaris 11.3
      セキュリティ、スピード、シンプルを掲げ Oracle Solaris 11.3 をリリース。Solaris Zone の動的構成変更や読み込みのみに徹する Solaris Zone 環境を non-global zone から global zone へ拡張、Solaris Kernel Zones では暗号化されたパスによるライブマイグレーションをサポート。 仮想環境のセキュリティコンプライアンスを維持するためのカスタマイズ可能な評価機能、提供する全てのカーネルモジュールを証明書で管理することで不正な書き換えを検知した際にブートを抑制する Verified boot などをサポート。 SPARC M7 プロセッサと組み合わせによりメモリアドレスへの不正なアクセスを即座に検知が可能となる Silicon Secured Memory (SSM)のサポート。 これらの機能を OpenStack と組み合わせることで、OS とハードウェアを連携させたセキュアな環境を構築することが可能です。 (もっとあるけど、書き切れない
  • Oracle Solaris Cluster 4.3
      Solaris に冗長化機能を付加する Solaris Cluster 4.3 を同時にリリース。Cluster Manager GUI の強化、Zone を Zone Cluster へインポート可能となり、HA data service for zones では Kernel Zones の Live Migration と共有ストレージ上への Zones の配置を自動化する ZOSS (Zones on Shared Storage) など、Solaris Zones の機能サポートを強化。 また、Link Aggregation (IEEE802.3ad) や DLMP (Datalink Multipath) を public network でサポート。 Disaster Recovery Service を提供する Geographic Editon では Oracle Solaris ZFS Snapshot Replication, Oracle GoldenGate Replication をサポート。 さらに OpenStack for Solaris に Solaris Cluster を加えることにより HA OpenStack 環境を実現することが可能です。
  • Oracle VM for SPARC 3.3
      SPARC Server に搭載される Hypervisor 機能を自在にコントロールするためのソフトウェアである Oracle VM for SPARC 3.3 をリリース。 Virtual SCSI host bus adapter (vHBA) をサポートし、ゲスト環境に多彩なタイプの SCSI デバイスを提供することが可能に。 また、ゲストドメイン環境のテンプレートサポートが強化され、テンプレートの作成やデプロイを行うための専用コマンドを新たに追加。 メモリブロック分割機能 (memory block splitting, Solaris 11.3 が稼働する guest domain のみ) により、ライブマイグレーション実行時に連続した空きメモリの確保は必要なくなりました。
  • Oracle Solaris Studio 12.4, 4/15 Platform Specific Enhancement with support for SPARC M7 and Software in Silicon
      すでに提供済みとなる Oracle Solaris 12.4 では SPARC M7 プロセッサのパフォーマンスを最大限に引き出すだけではなく、Seculity in Silicon で実現される Silicon Secured Memory (Appliacation Data Integrity - ADI) をサポートするために拡張された Code Analyzer を強化するなどの機能拡張を Solaris Studio 12.4, 4/15 Platform Specific Enhancement (PSE)として提供。詳細は MOS Doc ID 1578240.1 にて。

そして、これらの機能を余すことなく利用頂くために。Oracle SPARC M7 プロセッサを搭載した SPARC システムの新たなファミリーを同時に発表することができました。 まだまだ続くよー。

火曜日 7 21, 2015

Solaris 11.3 Beta に関するブログ記事の紹介 Part 2

はじめに


前回に引き続き Solaris 11.3 に関連したブログ記事をご紹介します。
今回は、セキュリティとコンプライアンス、システム管理、仮想化、ZFS についてのブログ記事をご紹介いたします。

前回の記事をご覧になっていない方は こちら をご覧ください(Solaris 11.3 Beta のアナウンスメント、データベース関連のエンハンス、開発者向けの記事、OpenStack 関連の記事のまとめを紹介しています)。


セキュリティとコンプライアンス


New Security Extensions in Oracle Solaris 11.3 (Solaris 11.3 のセキュリティの新機能)

https://blogs.oracle.com/observatory/entry/new_security_extensions_in_oracle

Kris Kooi のブログ記事です。
Solaris 11.1 で実装された ASLR(アドレス空間配置のランダム化) に加えて、Solaris 11.3 では NXSTACK(non-executable stack) と NXHEAP(non-executable heap) の二つの実行領域保護機能が実装され、セキュリティが強化されています。また、sxadm コマンドが変更され、セキュリティ拡張機能の管理がより簡単になりました。
このブログ記事では NXSTACK と NXHEAP の挙動と sxadm コマンドの使い方をご紹介しています。


OpenSSL on Oracle Solaris 11.3 (Solaris 11.3 の OpenSSL)

https://blogs.oracle.com/observatory/entry/openssl_on_oracle_solaris_11

Misaki Miyashita のブログ記事です。
Solaris 11.3 の OpenSSL について、SSLv2 の EOL、マルチスレッドプログラムやマルチプロセスプログラムでの安全性の向上などの変更点についてご紹介しています。
Solaris 版の OpenSSL については Solaris 11.2 の変更点 も合わせてご覧ください。


Customising Solaris Compliance Policies (コンプライアンス・ポリシーのカスタマイズ)

https://blogs.oracle.com/darren/entry/customising_solaris_compliance_policies

Darren Moffat のブログ記事です。
Solaris 11.2 から コンプライアンス・フレームワーク が実装されています。
Solaris 11.3 では、コンプライアンス要件のカスタマイズを容易にするため、compliance コマンドに tailor サブコマンドが実装されました。カスタマイズを再利用するための export アクションも実装されています。
このブログ記事では tailor サブコマンドの実行例をご紹介しています。


Solaris new system calls: getentropy(2) and getrandom(2) (Solaris の新しいシステムコール: getentropy(2) と getrandom(2))

https://blogs.oracle.com/darren/entry/solaris_new_system_calls_getentropy

Darren Moffat のブログ記事です。
Solaris 11.3 から getrandom(2) と getentropy(2) というシステムコールが追加されました。getrandom(2) はランダムなビットストリームを生成し、getentropy(2) はランダムビット生成器で使用するためのエントロピーを生成します。どちらも OpenBSD や Linux の同名の API と互換性があります。
このブログ記事では、この二つのシステムコールを使用する際の注意点をご紹介しています。


Applying Rights Profiles to RAD Modules in Oracle Solaris 11.3 (Solaris 11.3 の RAD モジュールに権利プロファイルを適用する)

https://blogs.oracle.com/gfaden/entry/applying_rights_profiles_to_rad

Glenn Faden のブログ記事です。
Solaris 11.3 から RAD モジュールごとに RBAC のプロファイルを設定することができるようになりました。User Manager GUI を例にして、新しい RAD とプロファイルの関係をご紹介します。


PF for Solaris (Solaris の PF)

https://blogs.oracle.com/solarisfw/entry/pf_for_solaris

これまで Solaris にバンドルされている Firewall ソフトウェアは IPF でしたが、Solaris 11.3 から OpenBSD 由来の PF も加わりました。
このブログ記事では IPF から PF に移行する際の注意点や PF を使い始める手順をご紹介しています。


Solaris Kernel Zones Verified Boot (Solaris Kernel Zones の Verified Boot)

https://blogs.oracle.com/DanX/entry/solaris_kernel_zones_verified_boot

Verified Boot は OS の起動時にカーネルモジュールの署名を確認して、不正なモジュールや壊れているモジュールを検知する機能です。Verified Boot は Solaris 11.2 で実装されました。
Solaris 11.3 では、Verified Boot が Kernel Zone の起動にも利用できるようになりました。
このブログ記事では Kernel Zones Verified Boot の構成の仕方とその動作をご紹介しています。
Verified Boot については こちら も合わせてご参照ください。


Solaris 11.3: New Immutable Global Zone file-mac-profile: dynamic-zones (Solaris 11.3: Immutable Global Zone の file-mac-profile の新しいパラメータ: dynamic-zones)

https://blogs.oracle.com/casper/entry/solaris_11_3_new_immutable

Solaris 11.2 で Immutable Global Zone が実装されました。Immutable Global Zone は、ファイルシステムへの変更が制限された Global Zone です。これまで、Immutable Global Zone に指定できる制限のプロファイルは、none, strict, fixed-configuration, flexible-configuration のいずれかでしたが、Solaris 11.3 では新しいプロファイルとして dynamic-zones が追加されました。
dynamic-zones プロファイルは OpenStack Nova から使用されることを想定しており、fixed-configuration プロファイルを Zone の作成・破棄ができるように緩和したプロファイルです。


Solaris 11.3: New per-share, per-instance reserved port property for NFS (Solaris 11.3: NFS のシェア毎、インスタンス毎の特権ポートプロパティ)

https://blogs.oracle.com/casper/entry/solaris_11_3_new_per

NFS_PORTMON は、NFS サーバにアクセスがあった際に、クライアント側のポート番号が特権ポートだった場合のみにアクセスを許可するための設定です。
これまで NFS_PORTMON の設定は /etc/system に nfssrv:nfs_portmon を記載する方式でした。現在の Solaris では Zone 毎に NFS サーバを起動することができるため、NFS_PORTMON もより細かい区切りで有効・無効の制御ができるよう、Solaris 11.3 からは share 毎に NFS_PORTMON を設定できるような方法が追加されました。


OpenSSH in Solaris 11.3 (Solaris 11.3 の OpenSSH)

https://blogs.oracle.com/darren/entry/openssh_in_solaris_11_3

これまで Solaris の SSH は OpenSSH から分岐した SunSSH が標準でした。
Solaris 11.3 からは SunSSH だけでなく OpenSSH のパッケージもバンドルされるようになり、どちらを使用するか OS の管理者が選択できるようになりました。将来的には OpenSSH が標準になる見込みです。


システム管理


Periodic and scheduled services with SMF (SMF を使った処理の定期実行と定時実行)

https://blogs.oracle.com/gman/entry/periodic_and_scheduled_services_with

Solaris 11.3 から、プログラムの定期的な繰り返し実行やスクリプトの定時実行を SMF で管理 できるようになりました。これまで Cron に設定していたような内容を SMF のマニフェストファイルで管理できるようになり、IPS との連携もしやすくなりました。
定期実行の場合はマニフェストファイルに periodic_method を定義し、定時実行の場合は scheduled_method を定義します。


Cron Begone: Predictable Task Scheduling (さようなら Cron、予測可能なタスク管理)

https://blogs.oracle.com/SolarisSMF/entry/cron_begone_predicable_task_scheduling

Solaris 11.3 で実装された SMF の Periodic Restarter と Scheduled Services について、Cron に比べて優れている点として、エラーハンドリング、一貫性のあるログ管理、依存関係の解決、ライフサイクルの制御しやすさ、システム停止により実行されなかったタスクの実行管理、タスクの実行が特定の時間に集中して高負荷になることを防ぐためのランダム性を挙げています。


Solaris 11.3 beta: Changes to bundled software packages (Solaris 11.3 Beta で更新されたバンドルパッケージ一覧)

https://blogs.oracle.com/alanc/entry/solaris_11_3_beta_changes

Solaris 11.3 Beta で追加・更新された主なパッケージの一覧です。
Python 3, OpenSSH, Apache 2.4, OpenBSD PF, Puppet Hiera などが新規で追加されています。 pigz は CMT と相性が良いので、ぜひお使いください。


Introduction to svcbundle(1M) (svcbundle のご紹介)

https://blogs.oracle.com/SolarisSMF/entry/introduction_to_code_svcbundle_code

新しい SMF サービスを作成する際のハードルの一つに、マニフェストファイルの作成があります。svcbundle コマンドは、マニフェストファイルの作成を助けてくれるコマンドです。コマンドラインオプションで name=value 形式でパラメータを指定すると、SMF のマニフェストの XML ファイルを生成してくれます。


Remote Administration with RAD and Oracle Solaris 11 (RAD を使用したリモートからの管理)

https://blogs.oracle.com/gman/entry/remote_administration_with_rad_and

このブログ記事では、Python, C, Java, RESTful API を使ってプログラムから Solaris を管理できる RAD インターフェイスについて紹介しています。

RAD については Getting Started with the Remote Administration Daemon on Oracle Solaris 11 もご参照ください。


New flowadm features in Solaris 11.3 (flowadm の新機能)

https://blogs.oracle.com/yenduri/entry/new_flowadm_features_in_s11

Solaris 11.3 で flowadm コマンドに追加された新機能の中から、1. flow 上のパケットに DSCP を設定できるようになった、2. flow に direction 属性を設定して inbound のみや outbound のみの flow を作成できるようになった、3. flow 属性の組み合わせ制限 ("サポートされている属性の組み合わせ") の撤廃、4. 同一リンク上に異なる flow 属性の組み合わせをもった flow を作成できない制限 ("特定リンク上のすべてのフローが同じ組み合わせを保持する必要があり") の撤廃、同一パケットが複数の flow にマッチするような flow の作成が可能になった、flow の適用順を指定する rank 属性の追加、についてご紹介しています。


Private VLAN in Solaris 11.3 (Solaris 11.3 のプライベート VLAN)

https://blogs.oracle.com/yenduri/entry/private_vlan_in_solaris_11

Solaris 11.3 で実装された Private VLAN について、isolated VLAN と community VLAN の構成の仕方、Zone への割り当ての仕方、sub-VLAN に VLAN タグを設定する方法をご紹介しています。


Solaris 11.3: rtc(1m) no longer warps the time by default (Solaris 11.3 ではリアルタイムクロックのタイムゾーンを変更する際に、デフォルトではシステムの時間は変更されない)

https://blogs.oracle.com/casper/entry/solaris_11_3_rtc_1m

Solaris 11.3 では rtc(1M) コマンドに -w オプションが追加されました。x86 Solaris で、リアルタイムクロックのタイムゾーンを変更する際に -w オプションを付けるとシステムの時間がリアルタイムクロックに合わせて変更されます。-w オプションを付けない場合はシステムの時間は変更されず、リアルタイムクロックの時間が更新されます。


rcapd enhancements in Solaris 11.3 (Solaris 11.3 におけるリソース上限デーモンの改良)

https://blogs.oracle.com/puneetpruthi/entry/rcapd_enhancements_in_solaris_11

Solaris 11.3 では rcapd の設定がより簡潔・簡単になり、メモリページ選択のアルゴリズムがより効率的なものに変更され、rcapd の動作がシステム全体の性能を低下させないような挙動になりました。


Multi-CPU bindings for Solaris Project (Multi-CPU bindings を Solaris Project で使用する)

https://blogs.oracle.com/zoneszone/entry/multi_cpu_bindings_for_solaris

MCB (Multi-CPU binding) は、プロセスを特定の CPU のグループに結び付ける機能です。類似の機能にプロセッサーセットがありますが、プロセッサーセットが CPU の排他的な区画を作成するのに対し、MCB では他の MCB に入っている CPU も指定することが可能です。
MCB は Solaris 11.2 で実装されました。Solaris 11.3 からは、MCB がプロジェクトに設定できるようになっています。 このブログ記事では、プロジェクトで実際に MCB を使用する例をご覧いただけます。


仮想化


Introducing Secure Live Migration (安全なライブマイグレーションのご紹介)

https://blogs.oracle.com/listey/entry/introducing_secure_live_migration

Solaris 11.3 から Kernel Zone のライブマイグレーションができるようになりました。
このブログ記事では、Solaris 11.3 の Kernel Zone のライブマイグレーションがセキュリティに配慮していること、ライブマイグレーションを実施するにあたっての Tips がまとめられています。


Secure multi-threaded live migration for kernel zones (Kernel Zones の安全でマルチスレッド化されたライブマイグレーション)

https://blogs.oracle.com/zoneszone/entry/live_migration_for_kernel_zones

Kernel Zone のライブマイグレーションの手順と、その背後で行われているネットワーク通信について、実例を元にご紹介しています。

Kenel Zone のライブマイグレーションについては こちら もご覧ください。


New features in Oracle Solaris Zones (Solaris Zones の新機能)

https://blogs.oracle.com/listey/entry/new_features_in_oracle_solaris

Solaris 11.3 の Zone の新機能として、Kernel Zone のセキュアなライブマイグレーション、NFS 上に Kernel Zone のルートファイルシステムを作成できるようになったこと、Kernel Zone の稼働中にネットワークとデバイスの構成変更が可能になったこと、Native Zone で仮想クロックが使えるようになったことを紹介しています。


PV IPoIB in Kernel Zones in Solaris 11.3 (Solaris 11.3 の Kernel Zones の PV IPoIB)

https://blogs.oracle.com/observatory/entry/pv_ipoib_in_kernel_zones

Solaris 11.3 から Kernel Zone で Paravirtualized IP over Infiniband データリンクを使用できるようになりました。このブログ記事では PV IPoIB の構成手順をご紹介します。


Managing Orphan Zone Boot Environments (Orphan Zone Boot Environment の管理)

https://blogs.oracle.com/puneetpruthi/entry/managing_orphan_zone_boot_environments

Zone のマイグレーションや Zone のアーカイブを attach する際に発生する Orphaned Boot Environment を管理する方法として、beadm list の出力に Orphaned BE であることを示すフラグが追加され、beadm destroy で Orphaned BE を削除できるようになり、zoneadm attach に Orphaned BE の生成を制御するオプションが追加されました。


Kernel zone suspend now goes zoom! (Kernel Zones のサスペンドの高速化)

https://blogs.oracle.com/zoneszone/entry/kernel_zone_suspend_now_goes

Solaris 11.2 には Global Zone が再起動した際に Kenel Zone が自動的にサスペンド、レジュームする機能が実装されています。Solaris 11.3 からはメモリの圧縮・展開、および暗号化・複合がマルチスレッド化され、サスペンド、レジュームの処理時間が改善されました。


Shared Storage on NFS for Kernel Zones (Kernel Zones の NFS へのインストール)

https://blogs.oracle.com/zoneszone/entry/shared_storage_on_nfs_for

Solaris 11.2 から Zone のルートファイルシステムを iSCSI デバイス上に配置できるようになりました。Solaris 11.3 ではさらに NFS 上にも Zone のルートファイルシステムを配置できるようになっています。
このブログ記事では NFS 上に Zone をインストールする手順をご紹介しています。


Different time in different zones (Zone 毎に異なる時間の設定)

https://blogs.oracle.com/anuthan/entry/different_time_in_different_zones

Solaris 11.3 から Solaris Zones と Solaris 10 Branded Zones で Zone 固有の時間を設定できるようになりました。
このブログ記事では、その設定パラメータと挙動をご紹介しています。


ZFS


Changes to ZFS ARC Memory Allocation in 11.3 (Solaris 11.3 の ZFS ARC メモリアロケーションの変更点)

https://blogs.oracle.com/observatory/entry/changes_to_zfs_arc_memory

Solaris 11.3 から ZFS の ARC の管理方法が代わり、キャッシュの大半は Kernel Object Manager によって Kernel Cage の外に配置されるようになりました。
これにより多くのシステムで zfs:zfs_arc_max の設定が不要になり、スケーラビリティも向上しました。


Welcome to Oracle Solaris 11.3 ZFS (Solaris 11.3 ZFS のご紹介)

https://blogs.oracle.com/zfs/entry/welcome_to_oracle_solaris_11

Solaris 11.3 の ZFS の新機能として、LZ4 圧縮、defaultuserquota および defaultgroupquota パラメータによるデフォルトの Quota の設定、zpool monitor サブコマンドによるプールの監視、使用されていないスペアディスクの異常検知、メモリ操作とブロック割り当ての効率化、SMB 2.1 対応を挙げています。


まとめ


以上、Solaris 11.3 Beta に関するブログ記事をまとめてご紹介いたしました。

ご覧いただきました通り、Solaris 11.3 にはとてもたくさんの修正・改善・新機能が含まれています。ぜひ Beta 版をダウンロード、インストールしていただき Solaris の勢いを感じていただけたらと思います。

Solaris 11.3 の正式リリースもどうぞご期待ください。

月曜日 7 13, 2015

Solaris 11.3 Beta に関するブログ記事の紹介 Part 1

はじめに

先日、Solaris 11.3 Beta が 公開 されました。
それに合わせて Solaris 11.3 に関連したブログ記事が多数アップされています。
本稿ではそれらのブログ記事を簡単にまとめてご紹介したいと思います。

ブログ記事の数が多いため、前後半に分けて、今回は Solaris 11.3 Beta のアナウンスメント、データベース関連のエンハンス、開発者向けの記事、OpenStack 関連の記事をご紹介します。
次回の更新では、セキュリティとコンプライアンス、システム管理、仮想化、ZFS についての記事をご紹介する予定です。

Solaris 11.3 の新機能の多さと Solaris の開発の盛り上がりを感じていただけたら幸いです。


アナウンスメント


Release of Oracle Solaris 11.3 Beta

https://blogs.oracle.com/markusflierl/entry/release_of_solaris_11_3

Solaris 開発責任者の Marcus Flierl のブログです。
Solaris 11.3 は最も先進的なエンタープライズ・クラウド・プラットフォームであるとし、セキュリティとコンプライアンス、仮想化、OpenStack、ネットワーキング、Oracle DB との親和性について注目機能をご紹介しています。


Oracle Solaris 11.3 Beta Now Available!

https://blogs.oracle.com/gman/entry/oracle_solaris_11_3_beta

Glynn Foster のブログです。
Solaris 11.3 の新機能で特に気に入っているものとして、OpenStack Juno 対応、Kernel Zones のライブマイグレーション、Zone を NFS 上に配置できること、LZ4 による ZFS の圧縮率の向上、PVLAN のサポート、RAD モジュールの追加とREST API によるアクセス、Hiera による Puppet のマニフェストの変数の置換、Oracle DB 12c の起動時間の短縮と Optimized Shared Memory による SGA のサイズ変更、不正なメモリアクセスを防ぐ Application Data Integrity を含んだ次世代 CPU の SPARC M7 への対応を挙げています。


Oracle Solaris 11.3 Beta is now available

https://blogs.oracle.com/partnertech/entry/oracle_solaris_11_3_beta

Caryl Takvorian のブログです。
ISV の開発者やアーキテクト向けに Solaris の新機能を紹介しています。
Solaris 11.3 の注目の機能として、セキュリティのツールとコンプライアンスレポート、SPARC M7 に実装された ADI に対応した mdb や DTrace などのコマンドおよび libadimalloc ライブラリ、Kernel Zones のライブマイグレーション、Heat、Ironic、Murano などの OpenStack の新サービスの追加、仮想化、簡単で高速な ライフサイクル管理 を挙げています。


Oracle Solaris 11.3: Securing and Simplifying the Enterprise Cloud

https://blogs.oracle.com/solaris/entry/solaris_11_3_beta

Larry Wake のブログです。
Solaris 11 は既に OS のプロビジョニングやメンテナンス に関する優れた機能を持っており、システムへの攻撃に対する徹底的な防御機能 も更なる進化を遂げています。コンプライアンスのフレームワークOpenStack の統合、Unified Archive なども実装されています。
Solaris 11.3 では、それらに加えて、OpenStack Juno への対応、Kernel Zone の安全なライブマイグレーション、Zone の動的構成変更、Verified Boot、NFS 上に Zone を作成する機能、Oracle DB の起動時間の短縮、コンプライアンス機能の拡張、SPARC M7 の ADI への対応、LZ4 を使った ZFS の圧縮率の向上、異なる ZFS スナップショット間の差分の再帰的な比較、SMB プロトコルのバージョンアップなど、多数の新機能が加わったことを紹介しています。


Here's Your Oracle Solaris 11.3 List of Blog Posts

https://blogs.oracle.com/solaris/entry/solaris_11_3_bloglist

ブログ記事へのリンク集です。この記事の英語版です。


Oracle Solaris 11.3 Blog Posts, Part Two

https://blogs.oracle.com/solaris/entry/11_3_bloglist_the_sequel

ブログ記事へのリンク集の Part 2 です。


データベース関連


Oracle Instant Client: now available in IPS

https://blogs.oracle.com/jmcp/entry/oracle_instant_client_now_available

Oracle Instant Client に含まれている sqlplus や wrc などの Oracle DB のクライアントツールが http://pkg.oracle.com/ から pkg コマンドでインストールできるようになりました。Oracle Instant Client のバージョンが上がるごとに pkg.oracle.com の IPS のパッケージも更新されていきます。
Solaris の開発が Sun の Bugster から Oracle の Bug DB に移行した際の話もお読みいただけます。


Virtual Address Reservation in Solaris 11.3

https://blogs.oracle.com/observatory/entry/virtual_address_reservation_in_solaris

VA Reservation はプロセスのメモリ空間内の特定の領域を予約する機能です。プログラムのコンパイル時に予約したいアドレスとサイズを指定することで、その領域がライブラリのロードなど、他の用途で使用されないようにします。Oracle DB の SGA のように、メモリ領域を特定の場所に確保したい場合に使用する機能です。
このブログエントリーでは VA Reservation の使い方と注意点を紹介しています。


Solaris 11.3: Optimized Shared Memory (OSM)

https://blogs.oracle.com/jwadams/entry/solaris_11_3_optimized_shared

Solaris には巨大な共有メモリ領域を効率的に確保する方法として ISM や DISM が実装されて来ました。OSM は ISM や DISM の後継機能として Solaris 11 や Solaris 10u11 で実装され、Oracle DB では 12c 以降で使用されています。Solaris 11.3 からはこの OSM のインターフェイスが公開され、Oracle DB 以外でも使用可能になりました。
このブログ記事では OSM インターフェイスの使用方法をご紹介しています。
また、Solaris 11.3 では OSM の実装に改善が加わり、このおかげで Oracle DB の shutdown 時間が改善された事も紹介されています。


開発情報


Better performing pthread reader-writer locks for NUMA architectures

https://blogs.oracle.com/observatory/entry/better_performing_pthread_reader_writer

Solaris 11.3 から lock cohorting 技術を使用した、NUMA システム上で効率的に動作するプロセス内 reader writer lock が実装されました。Sai Nanduri がこの rwlock の使い方と使いどころをご紹介しています。


APIs for handling per-thread signals in Solaris

https://blogs.oracle.com/observatory/entry/apis_for_handling_per_thread

Solaris 11.3 から別のプロセスの特定のスレッドにシグナルを送る API が実装されました。Sai Nanduri がそれらの API をご紹介します。


Named threads in Oracle Solaris 11.3

https://blogs.oracle.com/observatory/entry/named_threads

Solaris 11.3 からスレッドに名前を付ける機能が実装されました。
スレッドに命名する API が実装されたほか、ps や prstat コマンド、DTrace などの既存の解析ツールにもスレッド名を表示する修正が施されています。多くの OS 組み込みのプロセスでは既にスレッドに名前がつけられており、解析がしやすくなっています。
また、カーネルのスレッドにも名前が付けられており、DTrace の kthreadname 変数でカーネルのスレッド名を確認することができます。


OpenStack


Upgrading OpenStack from Havana to Juno

https://blogs.oracle.com/openstack/entry/upgrading_openstack_from_havana_to

Drew Fisher の記事です。
Solaris 11.3 に含まれている OpenStack のバージョンは Juno です。Solaris 11.2 GA 版の Havana からは Icehouse をスキップして二つ先のバージョンになります。Havana から Juno へのアップグレード方法を提供する際に体験した問題点と、Solaris の BE を利用した『完全に安全なアップグレード("upgrade to Juno is completely safe")』をご紹介しています。
Solaris の Boot Environment 機能は本当に便利です。


What's New in Solaris OpenStack Juno Neutron

https://blogs.oracle.com/openstack/entry/what_s_new_in_solaris

Solaris 11.3 の OpenStack Juno で加わった新機能について、1. テナントネットワークの IPv6 対応、2. Source NAT、3. メタデータサービス、4. Flat L2 ネットワークタイプ、5. neutron コマンドの新しいサブコマンドの 5 点を解説しています。


Configuring the Neutron L3 Agent in Solaris OpenStack Juno

https://blogs.oracle.com/openstack/entry/configuring_the_neutron_l3_agent

Solaris 11.3 の OpenStack Juno で Neutron を使用してネットワークセグメントとルーターを構成する手順を解説しています。


Oracle Solaris gets OpenStack Juno Release

https://blogs.oracle.com/openstack/entry/oracle_solaris_gets_openstack_juno

Solaris 11.2 SRU10 で OpenStack Juno が実装された際のアナウンスメントです。Solaris 11.3 の OpenStack Juno はここから更に改良と新機能が加わったものになっています。


OpenStack Juno in Solaris 11.3 Beta

https://blogs.oracle.com/openstack/entry/openstack_juno_in_solaris_11

Oracle 社内の Solaris のテスト・開発環境が OpenStack を使ったクラウドで運用されていること、Solaris 11.3 の OpenStack の始め方や新機能が紹介されています。


Upgrading Solaris Engineering's OpenStack Cloud

https://blogs.oracle.com/dminer/entry/safely_updating_a_solaris_openstack https://blogs.oracle.com/openstack/entry/upgrading_the_solaris_engineering_openstack

Dave Miner の記事です。
Solaris の開発環境を OpenStack Havana から OpenStack Juno にアップグレードした際の手順と体験談が紹介されています。このブログの過去の記事には、Solaris の開発環境を OpenStack で構築した際の手順も紹介されていますので、合わせてご覧ください。


以上、Solaris 11.3 Beta のアナウンスメント、データベース関連のエンハンス、開発者向けの記事、OpenStack 関連のブログ記事をご紹介しました。Solaris 11.3 がどのような位置づけのリリースかご理解いただけたのではないかと思います。

次回の更新では、セキュリティとコンプライアンス、システム管理、仮想化、ZFS についてのブログ記事をご紹介する予定です。どうぞご期待ください。

このブログエントリーは vim -u NONE で Markdown ファイルを作成し、変換フィルターを使って HTML を生成しました。 やはり素の vi が一番ですね。

金曜日 7 10, 2015

Oracle Solaris の SAS ドライバについて

Solaris の SAS driver

Solaris が標準で持っている SAS driver

Solaris が持っている SAS driver を整理してみる。
色々あるが、これからは lmrc か lsc を選択するのが良いかと思い、手元では LSI SAS9300-4i (lsc driver) と LSI MegaRAID SAS 9341-4i (lmrc: Solaris 11.2 SRU 12 or Solaris 11.3 Beta でサポート) が動いていますが、どちらも Oracle のオプションとして販売されているものではありません。
pmcs という謎ドライバもありますが、これは、Adaptec by PMC 製品用の driver になり、何をサポートしているかは良くわかっていません。

SAS version driver name desc.
3.0 lmrc LSI MegaRAID SAS 3.0 Controller HBA driver
3.0 lsc LSI SAS 3.0 host bus adapter driver
2.0 pmcs PMC-Sierra SAS 2.0 HBA driver
2.0 mpt_sas SAS-2 host bus adapter driver
2.0 mr_sas LSI MegaRAID SAS2.0 Controller HBA driver
2.0 scu Intel SAS2.0 storage controller unit driver
2.0 imraid_sas LSI MegaRAID FALCON SAS2.0 Controller HBA driver
1.0 aac SCSI HBA driver for Adaptec AdvancedRAID Controller
1.0 arcmsr SAS and SATA HBA driver for Areca Hardware Raid devices
1.0 cpqary3 provides disk and SCSI tape support for HP Smart Array controllers
1.0 mega_sas SCSI HBA driver for LSI MegaRAID SAS controller
1.0 mpt SCSI host bus adapter driver
  ちなみに、lmrc/lsc driver が認識する device id はこちら。
  
        lmrc "pciex1000,5d"       LSI MegaRAID SAS 9341-4i
        lmrc "pciex1000,5f"       
      
        lsc "pciex1000,96"        SAS9300-4i
        lsc "pciex1000,97"

driver.conf の格納場所について

    Solaris 11 から /etc/driver/drv ディレクトリが用意された。
    このディレクトリに配置された driver.conf ファイルは最優先で読み込まれる。
    /kernel/drv/ や /platform/kernel/drv に配置されるファイルを直接編集せず、/etc/driver/drv に集約することで管理が楽になるので積極的に利用することをオススメ。
    デフォルトで、SAS 関連の driver.conf があるので注意。
    とにかく、driver の設定を変更する場合は、/kernel/drv や /platform/kernel/drv から、ここにファイルをコピーして編集して運用すればいい。
    参考:管理者が提供する driver.conf ファイルのサポート (Oracle Solaris 11 Information Library)

SAS HBA 関連のユーテリティ

  • /usr/sbin/sasinfo
Solaris 11 から追加されたコマンド。 sasinfo は SAS HBA やそれに関連する情報を収集するためのコマンド。
    • LSI SAS9300-4i の例

      # sasinfo hba -v
      HBA Name: SUNW-lsc-0
      Manufacturer: LSI Logic
      Model:  SAS9300-4i
      Firmware Version: 1.0.2.0
      FCode/BIOS Version: not available
      Serial Number: 
      Driver Name: lsc
      Driver Version: lsc driver
      Number of HBA Ports: 1
    • Avago (LSI) MegaRAID SAS 9341-4i の例

      $ sasinfo hba -v
      HBA Name: SUNW-lmrc-0
      Manufacturer: LSI Logic
      Model:  AVAGO MegaRAID SAS 9341-4i
      Firmware Version: 4.280.01-4227
      FCode/BIOS Version: not available
      Serial Number: 
      Driver Name: lmrc
      Driver Version: LMRC Driver 1.3.0.0
      Number of HBA Ports: 0

Avago (LSI) が提供する RAID 機能を持つ SAS HBA 向けのユーテリティ。
Solaris の lmrc driver をサポートしている。

# ./storcli /c0 show 
Generating detailed summary of the adapter, it may take a while to complete.

Controller = 0
Status = Success
Description = None

Product Name = AVAGO MegaRAID SAS 9341-4i
Serial Number = SV
SAS Address =  500605b00700d600
PCI Address = 00:0a:00:00
System Time = 07/10/2015 08:24:55
Mfg. Date = 11/12/13
Controller Time = 07/09/2015 23:24:47
FW Package Build = 24.8.0-0020
BIOS Version = 6.24.05.0_4.17.08.00_0x060D0200
FW Version = 4.280.01-4227
Driver Name = lmrc
Driver Version = LMRC Driver 1.3.0.0
Vendor Id = 0x1000
Device Id = 0x5F
SubVendor Id = 0x1000
SubDevice Id = 0x9343
Host Interface = PCIE
Device Interface = SAS-12G
Bus Number = 10
Device Number = 0
Function Number = 0
Drive Groups = 1

TOPOLOGY :
========

--------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT       Size PDC  PI SED DS3  FSpace 
--------------------------------------------------------------------------
 0 -   -   -        -   RAID0 Optl  N  232.375 GB dflt N  N   dflt N      
 0 0   -   -        -   RAID0 Optl  N  232.375 GB dflt N  N   dflt N      
 0 0   0   62:0     10  DRIVE Onln  N  232.375 GB dflt N  N   dflt -      
--------------------------------------------------------------------------

DG=Disk Group Index|Arr=Array Index|Row=Row Index|EID=Enclosure Device ID
DID=Device ID|Type=Drive Type|Onln=Online|Rbld=Rebuild|Dgrd=Degraded
Pdgd=Partially degraded|Offln=Offline|BT=Background Task Active
PDC=PD Cache|PI=Protection Info|SED=Self Encrypting Drive|Frgn=Foreign
DS3=Dimmer Switch 3|dflt=Default|Msng=Missing|FSpace=Free Space Present

Virtual Drives = 1

VD LIST :
=======

-----------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC       Size Name 
-----------------------------------------------------------
0/0   RAID0 Optl  RW     Yes     NRWTD -   232.375 GB      
-----------------------------------------------------------

Cac=CacheCade|Rec=Recovery|OfLn=OffLine|Pdgd=Partially Degraded|dgrd=Degraded
Optl=Optimal|RO=Read Only|RW=Read Write|B=Blocked|Consist=Consistent|
R=Read Ahead Always|NR=No Read Ahead|WB=WriteBack|
AWB=Always WriteBack|WT=WriteThrough|C=Cached IO|D=Direct IO|sCC=Scheduled
Check Consistency

Physical Drives = 1

PD LIST :
=======

--------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model       Sp 
--------------------------------------------------------------------
62:0     10 Onln   0 232.375 GB SATA HDD N   N  512B VB0250EAVER U  
--------------------------------------------------------------------

EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded

Avago (LSI) が提供する RAID 機能を持たない SAS HBA 向けのユーテリティ。

# ./sas3ircu 0 display
Avago Technologies SAS3 IR Configuration Utility.
Version 09.00.00.00 (2015.02.03) 
Copyright (c) 2009-2015 Avago Technologies. All rights reserved. 

Read configuration has been initiated for controller 0
------------------------------------------------------------------------
Controller information
------------------------------------------------------------------------
  Controller type                         : SAS3004
  BIOS version                            : 8.03.00.00
  Firmware version                        : 1.00.02.00
  Channel description                     : 1 Serial Attached SCSI
  Initiator ID                            : 0
  Maximum physical devices                : 1023
  Concurrent commands supported           : 10240
  Slot                                    : 3
  Segment                                 : 0
  Bus                                     : 10
  Device                                  : 0
  Function                                : 0
  RAID Support                            : No
------------------------------------------------------------------------
IR Volume information
------------------------------------------------------------------------
------------------------------------------------------------------------
Physical device information
------------------------------------------------------------------------
Initiator at ID #0

Device is a Hard disk
  Enclosure #                             : 1
  Slot #                                  : 2
  SAS Address                             : 4433221-1-0100-0000
  State                                   : Ready (RDY)
  Size (in MB)/(in sectors)               : 2861588/5860533167
  Manufacturer                            : ATA     
  Model Number                            : WDC WD30EFRX-68E
  Firmware Revision                       : 0A80
  Serial No                               : WDWMC4N2751827
  GUID                                    : 50014ee059248293
  Protocol                                : SATA
  Drive Type                              : SATA_HDD
------------------------------------------------------------------------
Enclosure information
------------------------------------------------------------------------
  Enclosure#                              : 1
  Logical ID                              : 500605b0:06cce680
  Numslots                                : 4
  StartSlot                               : 0
------------------------------------------------------------------------
SAS3IRCU: Command DISPLAY Completed Successfully.
SAS3IRCU: Utility Completed Successfully.

MPxIO (マルチパス)

SAS もマルチパスの対象となる。

Solaris 11.2 まで:

プラットフォーム 状態
x86 デフォルトで有効
SPARC オプション

Solaris 11.3 から:

プラットフォーム 状態
x86 デフォルトで有効
SPARC デフォルトで有効

mpxio が有効になっていると scsi_vhci (7d) driver でデバイスが管理される。

    root@solaris:~/solaris~on-src# format
    Searching for disks...done
    
    
    AVAILABLE DISK SELECTIONS:
           0. c0t0d0 
              /scsi_vhci/disk@g600605b00700d6001cddfb8a0bcf23c4
    
/etc/driver/drv/lmrc.conf に mpxio-disable="yes"; を追加して reboot すれば良いがコントローラ番号が変わってしまうので注意(device path が変更になるため)
    root@solaris:~# format
    Searching for disks...done
    
    AVAILABLE DISK SELECTIONS:
           0. c2t0d0 
              /pci@0,0/pci8086,8c10@1c/pci1000,9343@0/iport@v0/disk@v600605b00700d6001cddfb8a0bcf23c4,0
    

参考情報

Todo

  • pkg search pkg.fmri:driver/storage | sort -u
  • 他、なにか忘れてないか確認

  • まったく Solaris とは関係ないのですが、この記事、友人イチオシ無償だけど今からチュウモクシテオケ的な Visual Studio Code の Markdown mode を使って書いてみました。tasks に pandoc を仕掛けて HTML に変換したものをコピペしたのですが、入力も軽快で良い感じに使えています 。code を書くためのものですが便利に使えています。

水曜日 7 08, 2015

Solaris 11.3 Beta が公開されました

Solaris 11.3 の Beta 版が 公開 されましたので早速インストールしてみました。

# cat /etc/release
                            Oracle Solaris 11.3 SPARC
  Copyright (c) 1983, 2015, Oracle and/or its affiliates.  All rights reserved.
                             Assembled 22 June 2015
# uname -srvmpi
SunOS 5.11 11.3 sun4v sparc sun4v
# pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.3.0.0.25.0    i--
# pkg info entire
          Name: entire
       Summary: Incorporation to lock all system packages to the same build
   Description: This package constrains system package versions to the same
                build.  WARNING: Proper system update and correct package
                selection depend on the presence of this incorporation.
                Removing this package will result in an unsupported system.
      Category: Meta Packages/Incorporations
         State: Installed
     Publisher: solaris
       Version: 0.5.11 (Oracle Solaris 11.3.0.25.0)
 Build Release: 5.11
        Branch: 0.175.3.0.0.25.0
Packaging Date: June 22, 2015 02:27:46 PM 
          Size: 5.46 kB
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.3.0.0.25.0:20150622T142746Z

Solaris 11.3 Beta は こちら からダウンロードしていただけます。

インストール用の OS イメージや Unified Archive のファイル、Kernel Zones の Live Migration に必要なファームウェア、パッケージのリポジトリイメージ、OpenStack お試し用の Unified Archive ファイル、VirtualBox や Oracle VM 用のテンプレートイメージなどが用意されています。

Solaris 11.3 Beta のドキュメントは こちら にあります。

新機能の一覧は こちら の What's New をご覧ください。

いくつかの新機能について紹介したスライドも用意しました。

Solaris の最新機能をぜひお試しください。

金曜日 10 31, 2014

[ホワイトペーパー] Solaris Zone によるハードパーティションの構成

Solaris Zone を使用してハードパーティションを構成する方法がホワイトペーパーとして公開されました。

Solaris 上で Oracle 社製ソフトウェアを稼働させるシステムの導入・設計・提案をご検討されている方は是非ご一読ください。

ハードパーティションについてはこちらをご参照ください。

Solaris Zone ではなく OVM for SPARC を使用してハードパーティションを構成する場合については以下をご参照ください。

Solaris 11 のホワイトペーパーはこちらからアクセスしていただけます。

Oracle Solaris 11.2 マニュアル検索もご活用ください。

※ 上記は 2014/10/31 時点の情報です。

木曜日 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                     


About

Search

Archives
« 6月 2016
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
今日