Oracle Solaris っていまどうなってるの?ってことで、色々と公開されているものからネタをかき集めて、ちょっとだけ整理してみようかと思います。
その前に Solaris ってなによ?聞いたこともない。という人もいるかと思います。
簡単に言うと、UNIX として認証を受けたオペレーティングシステムです。
より身近な製品ですと Apple の macOS も UNIX として認証を受けているオペレーティングシステムとなります。
ようは、オペレーティングシステムですね。OS ですね。
現役の Solaris と将来の Solaris について
現役の Solaris は下記になります。
- Solaris 10 1/13
- Solaris 11.3
2005 年にリリースされた Solaris 10 が未だに現役です。ただし、アップデートリリースとしては、2013 年にリリースされた 1/13 (Update 11) が最後となり、以降はパッチによる不具合の修正を提供となっています。
新しい機能については、Solaris 11 以降での提供となります。
そして、最新の Solaris リリースという事になりますが、こちらは、Solaris 11 となります。Solaris 11 の最初のリリースは、2011/11 となり、現在は、2015/10 にリリースされた Solaris 11.3 が最新となります。
覚えいる人はもういないと思いますが、Solaris 11 は First Cloud OS としてリリースされ、Solaris 10 で提供された Solairs Zones (当時は Solaris コンテナ呼ばれていました) によるシステムの仮想化機能を拡張/強化し、ストレージやネットワークの仮想化機能を新たに追加した OS としてデビューしました。
みんな大好き ZFS ファイルシステムも Solaris 生まれですが、Solaris 10 までの仕組が大きく変更されています。
ここまで読んで興味をもった(えっ なら、マニュアルもどうぞ。読み物としてもおもしろいです。と思います。(筆者比
Solaris Next
そして、最近、ちらほら見かけるようになったのが、
- Solaris Next
です。
Solaris Next ってなんだよ? ってなるわけですが、まぁ、次です。次ですね。
主に、Oracle OpenWorld Session Catalog 2016 から、Solaris
をキーワードに色々と拾い集めてみました。
Coming soon in next #Solaris version: Analytics, EndToEnd Tracing, Online Patching, Docker... pic.twitter.com/sQZ2tDWsX4
— Bruno Philippe (@BrunolPhilippe) September 29, 2016
Analytics とか End to End Tracing とか Online Patching とか Docker とか・・・色々とキーワードが出てきていますね。
仮想化機能関連
やはり、まずはじめに多く見える情報としては、仮想化関連が目につきます。
このあたりは、Solaris の代表的な機能となり、新しいことを説明する際にも組み合わせて紹介されることが多いです。
Solaris Zones
Solaris Zones は、Solaris 上のコンテナ技術となります。この機能は 2005 年にリリースされた Solaris 10 から実装されており Solaris 観点では枯れた機能となっています。
昔は、Hypervisor などを利用しない Zero オーバーヘッドの仮想化機能とか言っていた時期もありました。
最近では、Type 2 Hypervisor に似たような実装を利用する Solaris Kernel Zones なるものも出て、Kernel 毎動かすこともでき、より隔離性を高めることなどが可能になってきています。
また、再起動不要でリソースを動的に変更できたり、読み込み専用(動的に変更可能)にできたり、iSCSI を利用した専用 LUN を割り当てることができたりと、最初のコンセプトはなんだったんだ的な機能強化されています。
引用となりますが、Solaris では、下記の図のように複数の仮想化テクノロジーを選択肢として用意し要件により最適なものを選択してもらう方法をとっています。
Solaris Next でも、このあたりには大きな変更はなく、これらが Solaris の仮想化機能のベースになります。
- Native Zones: Solaris Zones
- Kernel Zones: Solaris Kernel Zones となり KVM にたとえることができるかと思います
- Zones in OVM Server for SPARC: Oracle VM for SPARC と呼ばれる機能を使った HW の論理分割
Unified Archives とは、動いているシステムから作成するシステムのアーカイブを意味します。このアーカイブはベアメタルでも仮想化機能上でも、とにかく動いている Solaris から作成することができ、そして、作成元の環境に依存することなく、それぞれの環境にデプロイすることがでいます。(Native Zones -> ベアメタルやその逆も可能)
引用元: https://blogs.oracle.com/listey/entry/which_oracle_solaris_virtualization
Docker をサポート
Solaris ではコンテナ技術を提供していると書きましたが、Solaris Next では、Docker がサポートされることがわかっています。
すでに、Solaris で Docker をサポートすることはアナウンス済みでしたが、ようやく姿をあらわしてきました。
いまのところは、Docker リポジトリへのコミットから推測することしかできないのですが、ZFS や IPS Package System など Solaris のユニークな機能を活用した実装になっているようです。
Solaris Zones は OS コンテナとなるため、OS のコンポーネントも多数含んでおり、仮想環境イメージとしてフットプリントが大きいのかなと感じています。
このあたりが Docker でどのように改善されるかにも期待したいところです。
Kubernetes などのようなライフサイクルを管理するツールは、そのまま使える気がしないのですが、さてさてどうなっちゃうかなという楽しみの一つです。
先に紹介した仮想化機能と組み合わせることもできるので、Solaris なりの使い方など模索したいと考えています。
- Add functional support for Docker sub commands on Solaris #28056
- Add support for containerd,containerd-shim and ctr for Solaris. #261
Get the #Docker Engine to build clean on #Oracle #solaris https://t.co/ZQAQ9QdutF
— Anup Sekhar (@anupcs) 2016年4月19日
Docker EngineのメンテナにNTT須田氏が就任。「Dockerの品質の維持・向上を中心に取り組んでいく」
須田氏 近々、Docker 1.13がリリースされます。1.12で導入されたSwarmモードに関して高可用スケジューラの追加や、秘密ファイル管理機能の追加など、大幅な改善がなされる予定です。
その他、CRIUを用いたチェックポイント機能や Solaris サポートなども予定されています。
また、Docker をビルドするために必要な Go 言語も既に Solaris ではサポート済みとなります。
Go 言語については、過去に少しまとめていますので、こちらの記事も参考にして頂ければと。
Oracle Solaris Sandbox
Solaris Zones や Docker ほどリッチな環境は必要なく、アプリケーションを隔離したいという時に利用することができる機能
のようです。また、sandbox 間で親子関係を持たせることも可能、Sandbox API を使えば、共有メモリもラベルを付けて隔離できるようです。
Solaris Zones の中でも利用することができるとのことで、アプリケーションレベルでですが、コンテナの中を更に細かく分けることも可能ですかね。
Sandbox ってなに
— Kazuyuki Sato (@satokaz) October 1, 2016
Securing Your Enterprise Applications with Sandbox in Oracle Solaris [HOL5427]https://t.co/cSfHedqpdt pic.twitter.com/FNzVcNPkuB
Open vSwitch をサポート
仮想 NIC やスイッチの機能については、Solaris 11 で大きく変更されたネットワークスタック (Project Crossbow と呼ばれていた) によりすでに実装されており、Solaris Zones などで利用されています。
また、ホストを跨いだ仮想スイッチを作成できる EVS (Elastic Virtual Switch) と呼ばれる機能も提供し、VLAN, PVLAN, VXLAN などと組み合わせることで仮想スイッチレベルでテナントを分けも可能です。
これらを OpenStack でも利用できるように Neutron に EVS plugin を実装していましたが、ベースとなっているのは ML2 plugin ではないため実質的には Solaris の実装のみ利用可能な専用 Neutron になっています。
Solaris 以外のプラットフォームと相互運用するために Open vSwitch の採用を決めたようです。
現時点では、下記が実装され OpenDaylight もサポートすることがわかります。
- OVS 2.3.2 LTS
- OpenStack ml2 OVS plugin (mitaka)
- Works well with OpenDaylight
Open vSwitch は OVN に名称が変更されましたが、OVN ではすでに Linux/Solaris の OpenStack 環境の相互接続ができているようです。
そうそうに OVN へ以降し、OpenStack Neutron ML2 Plugin も提供、変更点は Upstream へ寄贈するとのことです。
- Openstack + OVN plugin (Ubuntu) connected to Solaris OVS + OVN controller
Elastic Virtual Switch の考え方も良かったのですが、どうなる EVS って感じです。
Linux/Solaris 相互運用を実現するために OVS 入れるよー
— Kazuyuki Sato (@satokaz) October 1, 2016
Become an OpenStack Guru in 45 Minutes [CON2969]https://t.co/LceN9YCgsX pic.twitter.com/SrVhivsi7s
また、ネットワークを跨いだ環境で有効な ETrace (End to End Trace) なるものもあるようです。
Now @MarkusFlierl1 is showing @ORCL_Solaris taking Dtrace to the next level with Etrace: end-to-end tracing across the network. #OOW16
— Alan Coopersmith (@alanc) September 20, 2016
OpenStack
仮想化まわりの話が出てくると、避けては通れないのが OpenStack ですね。Solaris 的には。
はい、Solaris にも OpenStack あります。Open vSwitch の部分でも触れましたが、Solaris 11.2 からサポートしています。
目下のところ OpenStack on Solaris のターゲットは、Solaris で作る Enterprise OpenStack 環境となります。
nova で扱えるのも Solaris Zones と Solaris Kernel Zones のみになります。
Solaris 11.3 では、Juno でしたが、Solaris 11.3 SRU9 (Solaris 11 のアップデータのようなもの)では、OpenStack Kilo にアップデートされ、検証環境作成の手助けとなる Bring-Up Test Tool も
GitHub の Solaris Openstack Utilities and Tools Project リポジトリで公開されました。
更に、最近の SRU では、OVM for SPARC もサポートしました。
OVM for SPARC は SPARC Hadware に搭載された Hypervisor が論理的な HW 分割を提供する機能です。詳細は割愛します。ごめんなさい。
(ちなみに、OVM for SPARC は Oracle VM for SPARC ですが、Oracle VM for x86 とは実装が異なるため、別物となります。)
Solaris 11.3 SRU 12 で OpenStack Nova driver for OVM for SPARC 入ってた。Solaris 10 も Guest でいけるのかよ・・・https://t.co/MkrGGT8nK1
— Kazuyuki Sato (@satokaz) October 18, 2016
だんだん疲れてきました・・・
ZFS ファイルシステム
Solaris に搭載される ZFS ファイルシステムとしての目新しい情報は見つけられませんでしたが、zCloud という気になるキーワードに遭遇しました。
ネットワークが介在するけど、もしかして、そのあたりの遅延は ZFS が持つ SLOG とか L2ARC でカバーできたりする?と期待させてくれますが、はやく出てこい。
Amazon S3 とか OpenStack Swift とか Oracle storage cloud みたいなObject Storage を ZFS の vdev として見せて zpool create できるようになるのが zCloud ってことだけど、なにそれ… https://t.co/QG6wDdEcFa
— Kazuyuki Sato (@satokaz) September 26, 2016
おい、これってアレだろ?
— Kazuyuki Sato (@satokaz) September 30, 2016
Lessons Learned Supporting 650 PB of Cloud Storage [THT8057]https://t.co/BH6U23u651 pic.twitter.com/URCaWIVgwW
Solaris に含まれるオープンソースソフトウェアについて
Solaris は商用 OS ということもあり、ライセンスが異なるオープンソースソフトウェアを solaris-userland
というようにカテゴリ分けをし、公開可能なものを公開しています。
active branch としては、default
と s11u3-sru
(solaris-userland~gate のみ) があり、それぞれ:
- default: 最新の branch となり、次の Solaris に含まれるオープンソースソフトウェア群
- s11u3-sru: Solaris 11.3 をターゲットとしたオープンソースソフトウェア群
となっていて、solaris-userland の情報からも断片的ではありますが、Docker, Open vSwitch, OpenStack, llvm, golang, Intel OpenMP, GNOME 3 など、提供されるものがなんとなくわかります。
node.js がありません。ひとまず、下記で。
Gnome 3.0
いきなり GNOME かよってことで、Solaris に GNOME 3 が実装されるとは思いませんでした。
GNOME 3 finally integrates into Solaris dev train! https://t.co/qQzTSUAIz5 Congrats to @alanc and team! https://t.co/qTKo8FgJFO
— Oracle Solaris (@ORCL_Solaris) November 1, 2016
#GNOME 3 integrated in to Oracle #Solaris development release Userland consolidation: https://t.co/RH2KPAnipl nice new desktop look & feel
— Darren Moffat (@darrenmoffat) November 2, 2016
— Kazuyuki Sato (@satokaz) October 22, 2016
まじだったようです。
DevOps
こ、これは・・・
生暖かく見守ってください。
Practical DevOps withOracle Solaris Virtualization
節子!それ DevOps やない!Enterprise DevOps や!!
— Kazuyuki Sato (@satokaz) October 1, 2016
ん?
Hand in Hand: Practical DevOps with Oracle Virtualization [CON6229]https://t.co/22iKIYR8Q6
Security
セキュリティ絡みにしていますが、長年の夢だった Hot Patching 機能もついに実現するようです。
#Solaris が取り組んでいる Hot Patching 機能を体験するための HOL 資料がポロっと
— Kazuyuki Sato (@satokaz) October 1, 2016
Using Hot Patching to Stay Secure and Compliant [HOL7308]https://t.co/CkhMACa0bE
まとめ
はやいですね。
次の Solaris では、新機能などあわせて 1,400 を超える機能強化が予定されているとのことで楽しみですね!
セキュリティ機能の強化を押しつつ、Analytics と呼ばれるシステム情報の可視化、オープンソースソフトウェアの拡充など、なんとなく目指す方向性は見えてきているような気もしますが、全容が出てこないことにはなんとも言えませんね。
リリース時期については、まだ、発表はありませんが、出てくる情報が増えてきているので、それほど遠い未来ということではなさそうですが・・・楽しみに待ちましょう。
Over 1,400 New Enhancements https://t.co/xIxi4qeAhA
— Kazuyuki Sato (@satokaz) October 17, 2016
ちょっと、統一感ない感じでおなかいっぱいなってしまいましたが、まだまだ続くよ Advent Calendar 2016 というわけで、書けなかった事を別の日にでも補ってみたいと考えています。
プログラミングするにも OS も関係するようねということで、お許しください。
おまけ: SPARC 絡み
SPARC 絡みでも色々と資料が公開されていました。
SPARC に搭載される DAX (Data Analytics Accelerator) と呼ばれるハードウェア機能を API から利用することで、パフォーマンスを向上することに役立てることができるようです。
- Open DAX APIs on SPARC M7
- What Is the SPARC M7 Data Analytics Accelerator?
- Apache Spark and SPARC M7 Data Analytics Accelerator
- DAX Sample programs
- Oracle’s Software in Silicon Technology: Data Analytics Accelerators (DAX)
- man pages section 3: DAX Library Functions
JDK 8 Lambda Stream execution with DAX
— Kazuyuki Sato (@satokaz) October 1, 2016
Accelerating Java Stream Analytics with Oracle Data Analytics Acceleratorhttps://t.co/2AudiBhPeX
OpenDAX とか JDK 8 with DAX とか
— Kazuyuki Sato (@satokaz) October 1, 2016
Accelerating Apache Arrow and QuartetFS ActivePivot with Software in Silicon [CON6383]https://t.co/GL68ajOR0M
SPARC で SPARK (やってみたかった
— Kazuyuki Sato (@satokaz) October 1, 2016
+Apache Spark の紹介
Analytics Pipeline with Apache Spark SQL and Machine Learning [CON6704]https://t.co/YwjpVRU5dy