SlideShare a Scribd company logo
今もう一度知ろう。
Solaris のコンテナ型
仮想化技術
みやざきさとる
日本 OpenSolaris ユーザグループ
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 2
Agenda
コンテナ型仮想化とは
Solaris Zone を使った
コンテナ型仮想化
Zone の使い方
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 3
自己紹介
とある IT 企業の Solaris 使い
Twitter: s_miyaza
Solaris なのは趣味です
最近 Solaris のお仕事がありません…
(´ ・ ω ・` )
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 4
コンテナ型仮想化とは
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 5
仮想化についておさらい
同一ハードウェアで、別 OS を動かす
別 OS
別アーキテクチャ
OS の物理的制約を回避し、柔軟に構成
メモリ
ディスク
ネットワーク
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 6
ネイティブ仮想化とコンテナ型仮想化
ネイティブ仮想化
エミュレータにより子 OS を動作
OS 側は無修正で動作
オーバヘッドあり
VMware 、 Xen 、 KVM など
コンテナ型仮想化
OS 権限を使用して子 OS を分離
同じ OS が動作 ( 基本的には ...)
オーバヘッドなし
Jail 、 Solaris Zone 、 LXC など
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 7
コンテナ型仮想化とは
OS レベルでカプセル化
基本的に、同一 OS で動作
コンテナからは他コンテナ、親のリソースに
アクセス不可
親からはコンテナのリソースにアクセス可能
オーバヘッドなし
同じ OS で動く
リソースも親まかせ
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 8
いろいろなコンテナ
Chroot
Jail
OpenVZ(Virtuozzo)
LXC
Docker
Solaris Zone
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 9
Chroot
指定したパスを root として動作する
chroot 化のプロセスは上位にアクセス不可
指定したパス以下に使用バイナリコピー
ネットワークは親 OS のものを使用
CPU/ メモリなどの制限不可
UNIX 系 OS ならたいてい使用可能
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 10
Jail
FreeBSD で動作
ファイルシステム、プロセス空間、
ユーザアカウントなどを親 OS から分離
jail ごとに一つの IP アドレスを使用可能
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 11
OpenVZ(Virtuozzo)
Linux 上で動作 (OpenVZ 用カーネル使用 )
Parallels 社が開発
OSS 版が OpenVZ 、商用版が Virtuozzo
リソースをコンテナごとに分離可能
ファイルシステム
ユーザグループ
プロセスツリー
ネットワーク
デバイス、 IPC オブジェクト
ライブマイグレーション可能
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 12
LXC
Linux で動作 (2.6.29 以降 )
Namespace+CGroups で実装
Namespace
名前によってリソースをグループ化
CGroups(Control Groups)
Namespace によってグループされたリ
ソースを制御
CPU 、メモリ、ブロック I/O の制御
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 13
Docker
Linux で動作
アプリケーションコンテナ
=特定アプリケーションのみ動作する
LXC や Namespace を使用して実装
Docker の image を git 登録すること
で、
簡易にデプロイ可能
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 14
•Solaris Zone を使ったコンテナ型仮想化
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 15
Solaris Zone とは
Solaris10 以降で実装
同じカーネルで複数 OS を動作
プロセス、ディスク、ネットワーク、
ユーザグループなどを分離
CPU 、メモリなどの制限
仮想化された Network(Project Crossbow)
を有効利用
ZFS 機能の有効利用
OpenStack 連携
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 16
Solaris Zone の構成
Solaris 大域ゾーン (Global Zone)
ローカルストレージ
iSCSI FC-SAN
非大域ゾーン
(Non-Global Zone)
ZBE1
ZBE1
仮想 SW1
Net0
Net0 Net1
Zone2
ZBE2
ZBE2
DATA
Net0
仮想 SW2
Net1DATA
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 17
Zone を作ってみる (1)
Zone の設定
zonecfg -z ゾーン名 create; commit
対話型設定も可能
% sudo /usr/sbin/zonecfg -z zone1 'create ; verify ; export ; commit '
create -b
set zonepath=/system/zones/%{zonename}
set autoboot=false
set autoshutdown=shutdown
set ip-type=exclusive
add anet
set linkname=net0
set lower-link=auto
set configure-allowed-address=true
set link-protection=mac-nospoof
set mac-address=auto
end
% sudo /usr/sbin/zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- zone1 configured /system/zones/zone1 solaris excl
% sudo /usr/sbin/zonecfg -z zone1
zonecfg:zone1>
Page 18今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Zone を使ってみる (1) の補足
以下の設定値が必須
Zonepath
Solaris11 では以下のように自動設定
Solaris11 以外では明示的に設定が必要
Network 設定
Solaris11 では anet が自動設定
net を使用して、 VNIC を明示的に指定可能
Solaris11 以外では VNIC の明示的な指定が必
要
詳しくは後述
set zonepath=/system/zones/%{zonename}
Page 19今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Zone を作ってみる (2)
zonecfg -z ゾーン名 create
ゾーン名の名前を付けた Zone を作成
zonecfg -z ゾーン名 verify
Zone の設定を確認
zonecfg -z ゾーン名 export
Zone の設定を出力
この出力情報を基に Zone 設定も可能
zonecfg -z ゾーン名 commit
Zone の設定を確定
Solaris-1:
% sudo /usr/sbin/zonecfg -z zone1 export > /net/solaris-2/share/zone1.cfg
Solaris-2:
% sudo /usr/sbin/zonecfg -z zone1 -f /share/zone1.cfg
Page 20今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Zone を作ってみる (3)
Zone のインストール
zoneadm -z ゾーン名 install
pkg リポジトリへアクセスが必要
デフォルトで http://pkg.oracle.com/solaris/release/
% sudo /usr/sbin/zoneadm -z zone1 install
The following ZFS file system(s) have been created:
rpool/VARSHARE/zones/zone1
Progress being logged to /var/log/zones/zoneadm.20150224T232755Z.zone1.install
Image: Preparing at /system/zones/zone1/root.
( 中略 )
Next Steps: Boot the zone, then log into the zone console (zlogin -C)
to complete the configuration process.
Log saved in non-global zone as /system/zones/zone1/root/var/log/zones/zoneadm.20150224T232755Z.zone1.inst
% sudo /usr/sbin/zoneadm list -cv
パスワード :
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- zone1 installed /system/zones/zone1 solaris excl
Page 21今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Zone を作ってみる (4)
Zone のブート
zonecfg -z ゾーン名 boot
Zone の初期設定
zlogin -C ゾーン名
-C を指定して、コンソールモードで接続
初回設定 (sysconfig)
ホスト名
ネットワーク設定
タイムゾーン
初期ユーザ・ root のパスワード
初回以外は zlogin ゾーン名で接続
Page 22今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
リソースの分離
同じカーネルを使用
プロセスの分離
CPU/ メモリの制限
ディスクの制限
ネットワークの制限
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 23
同じカーネルを使用
大域ゾーン
システム
コール
メモリ
割り当て
非大域ゾーン
プロセス
システム
コール
メモリ
割り当て
プロセス
カーネル
今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Page 24
大域ゾーンからみたプロセス
大域ゾーンからは非大域ゾーンのプロセスが見える
非大域ゾーンのプロセス=
大域ゾーンのプロセス (Zone 名付 )
% ps -efZ
ZONE UID PID PPID C STIME TTY TIME CMD
global root 0 0 0 2 月 07 ? 0:02 sched
global root 5 0 0 2 月 07 ? 85:24 zpool-rpool
global root 1 0 0 2 月 07 ? 0:01 /sbin/init
global root 2 0 0 2 月 07 ? 0:00 pageout
global root 3 0 0 2 月 07 ? 109:36 fsflush
( 中略 )
global root 2356 1 0 2 月 07 ? 0:00 zoneadmd -z zone1
zone1 root 3611 1 0 2 月 07 ? 0:01 /usr/sbin/syslogd
zone1 root 3591 3203 0 2 月 07 zoneconsole 0:00 /usr/lib/saf/ttymon ...
zone1 root 3589 1 0 2 月 07 ? 0:07 /usr/lib/fm/fmd/fmd
zone1 root 3582 3580 0 2 月 07 ? 0:00 /usr/lib/autofs/automountd
zone1 root 3496 1 0 2 月 07 ? 0:00 /usr/sbin/cron
zone1 root 3588 1 0 2 月 07 ? 0:00 /usr/lib/inet/inetd start
Page 25今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
非大域ゾーンからみたプロセス
非大域ゾーンのプロセスしかみえない
他の非大域 Zone のプロセスも見えない
% sudo zlogin zone1 ps -efZ
Password:
ZONE UID PID PPID C STIME TTY TIME CMD
zone1 root 3580 2952 0 Feb 07 ? 0:00 /usr/lib/autofs/automountd
zone1 root 3438 2952 0 Feb 07 ? 0:15 /usr/sbin/nscd
zone1 root 3110 2952 0 Feb 07 ? 0:01 /sbin/init
zone1 root 3569 2952 0 Feb 07 ? 0:00 /usr/lib/inet/in.ndpd
( 中略 )
zone1 root 3611 2952 0 Feb 07 ? 0:01 /usr/sbin/syslogd
zone1 root 3591 3203 0 Feb 07 console 0:00 /usr/lib/saf/ttymon -g -d ...
zone1 root 3589 2952 0 Feb 07 ? 0:07 /usr/lib/fm/fmd/fmd
zone1 root 3582 3580 0 Feb 07 ? 0:00 /usr/lib/autofs/automountd
zone1 root 3496 2952 0 Feb 07 ? 0:00 /usr/sbin/cron
zone1 root 3588 2952 0 Feb 07 ? 0:00 /usr/lib/inet/inetd start
Page 26今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
CPU の制限
Zone の設定で CPU を制限
capped-cpu
Zone で使用する CPU 時間を制限
1 を指定すると 100 %、 1.5 を指定すると 150%
動的変更可能 (Solaris11 のみ )
dedicated-cpu(Solaris11 のみ )
特定の CPU を指定して割り当て
zonecfg:zone1> add capped-cpu
zonecfg:zone1:capped-cpu> set ncpus=1
zonecfg:zone1:capped-cpu> end
zonecfg:zone1> add dedicated-cpu
zonecfg:zone1:dedicated-cpu> set ncpus=3-4
zonecfg:zone1:dedicated-cpu> end
zonecfg:zone1> add capped-cpu
zonecfg:zone1:capped-cpu> set ncpus=1
zonecfg:zone1:capped-cpu> end
Page 27今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
メモリの制限
Zone の設定でメモリを制限
capped-memory
ゾーンが使用できるメモリの最大値を指定
K 、 M 、 G 、 T の単位を指定可能
zonecfg:zone1> add capped-memory
zonecfg:zone1:capped-memory> set physical=2G
zonecfg:zone1:capped-memory> end
Page 28今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
仮想化 Network の利用
Solaris11 、 OpenSolaris では Network が仮想
化されている
仮想 SW 、 NIC を自由に組み合わせ可能
closed なネットワークも利用可能
Zone に複数の仮想 NIC を割り当てることにより
、自由なネットワーク構成可能
Zone に割り当てられた仮想 NIC 以外は接続不可
Page 29今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
じゆうなねっとわーく
Solaris11/OpenIndiana
大域ゾーン
物理 NIC
VNIC01
仮想 SW1
仮想 SW2
Zone1
VNIC1
Zone2
VNIC11
VNIC12
VNIC21
ルーティング
The Internet
Page 30今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Network の制限
割り当てた VNIC に対して帯域幅を制限
dladm を使用
maxbw を VNIC に対して指定すると帯域幅を制限
以下の例では、 100Mbps に制限
flowadm を使用
大域幅、優先度、接続先など
より細かい制限が可能
% dladm show-linkprop -p maxbw zone1/net0
LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE
zone1/net0 maxbw rw -- -- -- --
% sudo dladm set-linkprop -p maxbw=100 zone1/net0
% dladm show-linkprop -p maxbw zone1/net0
LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE
zone1/net0 maxbw rw 100 100 -- --
Page 31今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
ZFS の使用
ZFS をゾーンの配置に使用
ZFS プール、 ZFS ファイルセットの
追加割り当て可能
ゾーン内からは、ゾーンに割り当てられた
領域以外アクセス不可
FC 、 iSCSI を zfs pool に割り当て可能
※ Solaris11 以降
Page 32今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
ZFS を使用したディスクの制限
Zone のパスに対して quota を設定
ZFS の機能を使用して、制限可能
以下は、 ZonePATH に対して、 1GB の quota を設定
% sudo /usr/sbin/zfs list rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris
NAME USED AVAIL REFER MOUNTPOINT
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris 680M 23.2G 635M /system/zones/zone1/root
% sudo /usr/sbin/zfs get mountpoint rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris
NAME PROPERTY VALUE SOURCE
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris mountpoint /system/zones/zone1/root temporary
% sudo /usr/sbin/zfs get quota rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris
NAME PROPERTY VALUE SOURCE
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris quota none default
% sudo /usr/sbin/zfs set quota=1G rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris
% sudo /usr/sbin/zfs get quota rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris
NAME PROPERTY VALUE SOURCE
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris quota 1G local
Page 33今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
ZFS を使用したデプロイ (1)
ゾーンの clone
既存のゾーンと同じゾーンを作成
zoneadm -z ゾーン名 clone 既存ゾーン名
% sudo zonecfg -z zone2 'create; verify; commit'
% sudo zoneadm list -v
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
% sudo zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- zone1 installed /system/zones/zone1 solaris excl
- zone2 configured /system/zones/zone2 solaris excl
% sudo zoneadm -z zone2 clone zone1
The following ZFS file system(s) have been created:
rpool/VARSHARE/zones/zone2
Progress being logged to /var/log/zones/zoneadm.20150226T211933Z.zone2.clone
Log saved in non-global zone as /system/zones/zone2/root/var/log/zones/zoneadm.20150226T211933Z
% zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- zone1 installed /system/zones/zone1 solaris excl
- zone2 installed /system/zones/zone2 solaris excl
Page 34今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
ZFS を使用したデプロイ (2)
ZFS の clone を使用してデプロイ
ZFS Clone は、 snapshot を元に書き込み可
能なファイルセットを作成する機能
snapshot 元との差分のみが書き込まれる
ディスクの有効利用
% zfs list
rpool/VARSHARE/zones/zone1/rpool/ROOT 717M 23.2G 31K legacy
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris 717M 307M 664M /system/zones/zone1/root
rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris/var 44.9M 307M 43.9M /system/zones/zone1/root/var
rpool/VARSHARE/zones/zone2/rpool/ROOT 5.03M 23.2G 31K legacy
rpool/VARSHARE/zones/zone2/rpool/ROOT/solaris-0 5.03M 23.2G 667M /system/zones/zone2/root
rpool/VARSHARE/zones/zone2/rpool/ROOT/solaris-0/var 45K 23.2G 43.9M /system/zones/zone2/root/var
Page 35今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
ZFS の重複排除の有効利用
ZFS の重複排除
ブロック単位で同じデータを使いまわす
変更分のみ増える
Zone は root パーティションがほぼ同じ
=重複排除が効きやすい!
Global-Zone
Zone1 Zone2
Page 36今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
変わりもの Zone たち
Branded Zone
LX
Solaris8/9
Solaris10
Kernel Zone
Page 37今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
LX Zone
なぜか Zone 内で Linux が動く
ただし、 CentOS3.8
OpenSolaris で動作
Project Janus の成果
カーネルをエミュレート
なので遅い ...?
正式版 Solaris10/11 ではサポートされず
最近、 StormOS(by Joyent) で動きが
Ubuntu14.x が動いたとか…
Page 38今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Solaris8/9 Zone
Solaris10 のみで動作
古い Solaris8/9 の延命
P2V でマイグレーション可能
ライブマイグレーション可能らしい ...
有償
Page 39今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Solaris10 Zone
Solaris11 で動作
P2V 可能
標準機能!
Page 40今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
Kernel Zone
Solaris11.2 以降で動作
Zone は同じカーネルを使用
Kernel Zone は、別カーネルで動作
他ゾーンの動作影響を受けない
パッチレベルの異なるカーネルを動作可能
CPU の仮想化命令が必要
VTi 、 AMD-V 、 SPARC T4/T5
物理空きメモリ 8GB 推奨
ZFS のキャッシュ (ARC) を制限する必要あり
Page 41今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
OpenStack と連携
Solaris11.2 から OpenStack サポート
前回 (OSC2014 Tokyo/Fall) 発表
http://www.slideshare.net/satorumiyazaki/oracle
-solarisopenstack
Havana ベース
Zone および KernelZone をサポート
Cinder(block storage) 、 Swift(Object Storage) で
ZFS サポート
Solaris11.2 の仮想化ネットワークスイッチ( Elastic
Virtual Switch) と Neutron の連携
Page 42今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
そんな Zone の問題点
初回起動が遅い
数分かかる
サービスの初期化が遅い
⇒AIマニフェストを指定して、インストールするP
KGを制限する
% zoneadm -z ゾーン名 install -m ai_manifest.xml
初回設定 (sysconfig 実施 )
⇒ インストール時に sysconfig のマニフェスト指定
% zoneadm -z ゾーン名 install -c sc_manifest.xml
カーネルパニックすると皆こける
⇒Kernel Zone くらいしか回避策なし
Page 43今もう一度知ろう。 Solaris のコンテナ型仮想化技術
OSC2015 Tokyo/Spring
まとめ
Solaris Zone は、同じカーネルで動く
=オーバヘッドが少ない
CPU/Memory/Network 帯域 を制限
ZFS の機能をフル活用
Clone
重複排除
サイズ制限
変態ゾーンもあるよ
LX とか、カーネルゾーンとか
OpenStack と連携もあるよ

More Related Content

PDF
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PDF
楽天のインフラ事情 2022
PDF
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
PPTX
OCI GoldenGate Overview 2021年4月版
PDF
#05-01 Solaris Legacy Containers
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
Oracle GoldenGate アーキテクチャと基本機能
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
楽天のインフラ事情 2022
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
OCI GoldenGate Overview 2021年4月版
#05-01 Solaris Legacy Containers
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Oracle GoldenGate アーキテクチャと基本機能

What's hot (20)

PDF
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
PDF
オンラインゲームの仕組みと工夫
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PDF
ZFSでストレージ
PDF
SQL大量発行処理をいかにして高速化するか
PDF
Serverless時代のJavaについて
PDF
Elasticsearchを使うときの注意点 公開用スライド
PPTX
Sonar qubeでちょっと楽しい静的解析
PDF
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
PDF
vSphere 7 へのアップグレードについて
PDF
PostgreSQLバックアップの基本
PDF
【ことはじめ】 はじめてのコンテナ活用をクラウドで
PPTX
MongoDBが遅いときの切り分け方法
PPTX
コンテナネットワーキング(CNI)最前線
PDF
楽天の規模とクラウドプラットフォーム統括部の役割
PDF
Pacemakerを使いこなそう
PDF
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
PPTX
MicroProfileの正しい使い方 (Java Developer Summit 2023)
PDF
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
PDF
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
オンラインゲームの仕組みと工夫
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ZFSでストレージ
SQL大量発行処理をいかにして高速化するか
Serverless時代のJavaについて
Elasticsearchを使うときの注意点 公開用スライド
Sonar qubeでちょっと楽しい静的解析
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
vSphere 7 へのアップグレードについて
PostgreSQLバックアップの基本
【ことはじめ】 はじめてのコンテナ活用をクラウドで
MongoDBが遅いときの切り分け方法
コンテナネットワーキング(CNI)最前線
楽天の規模とクラウドプラットフォーム統括部の役割
Pacemakerを使いこなそう
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
MicroProfileの正しい使い方 (Java Developer Summit 2023)
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
Ad

Viewers also liked (20)

PDF
はじめてのSolaris
ODP
Oracle SolarisでOpenStack始めました
PPTX
Lx zoneで行こう
PDF
Solaris11 osc tokyo2011_fall
PDF
Solaris11も乙でっせ
PDF
OpenIndiana+KVMによる仮想マシン
PDF
Oracle Solaris 11 への移行のススメ
PDF
How to use Virtualization Technology in Hatena
PPTX
ハードウェア技術の動向 2015/02/02
PDF
【特別編】【第七回 ゼロから始める Solaris 11.X】01 仮想化関連アップデート ~Solaris ゾーンでもついにアレが可能に?~
PDF
Linux on Power と x86 Linux との技術的な相違点
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
PDF
OSC2013.cloud@Osaka
PDF
CloudStack徹底入門読書会 第3章 - 1
PDF
仮想ルータを使ったスイッチレス・サーバクラスタリングの考察
PDF
Study from Japanese user cases and community
PDF
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
PDF
CloudStack Overview@OSC2012Fukuoka
PDF
CloudStackとNetScalerの連携
PDF
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
はじめてのSolaris
Oracle SolarisでOpenStack始めました
Lx zoneで行こう
Solaris11 osc tokyo2011_fall
Solaris11も乙でっせ
OpenIndiana+KVMによる仮想マシン
Oracle Solaris 11 への移行のススメ
How to use Virtualization Technology in Hatena
ハードウェア技術の動向 2015/02/02
【特別編】【第七回 ゼロから始める Solaris 11.X】01 仮想化関連アップデート ~Solaris ゾーンでもついにアレが可能に?~
Linux on Power と x86 Linux との技術的な相違点
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
OSC2013.cloud@Osaka
CloudStack徹底入門読書会 第3章 - 1
仮想ルータを使ったスイッチレス・サーバクラスタリングの考察
Study from Japanese user cases and community
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
CloudStack Overview@OSC2012Fukuoka
CloudStackとNetScalerの連携
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
Ad

Similar to 今もう一度知ろう。 Solarisのコンテナ型仮想化技術 (20)

PDF
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
PPT
Solaris Container
PDF
Oracle Solaris 11 における システム、ネットワーク、ストレージの仮想化機能
PDF
Solaris Zone と Puppet、Serverspec でインフラ CI
PDF
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
PDF
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
PDF
Oracle Solaris 11の可用性を高める! Oracle Solaris Cluster 4.0(補足資料)
PDF
osoljp 2011.08
PDF
初心者がOpenIndianaで自宅サーバを作ったよって話
PPTX
Osoljp201204
PPT
PDF
The Art of Network Protocols - RIP編 -
PDF
Solaris ディープダイブセミナー #4: A-2-1 サービス実行を超えた 新たなサービス管理アーキテクチャ Service Management...
PDF
ZFS on Linux @ZFS Day 2011.10
PDF
Linux 目線で VCSA を探索してみました。2025/2/14 VMUG UserCon 発表資料
PDF
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
PDF
コンテナ型仮想化とはなんだったのか
PDF
OpenStackで始めるクラウド環境構築入門
PDF
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
PDF
Osc2011 Do
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
Solaris Container
Oracle Solaris 11 における システム、ネットワーク、ストレージの仮想化機能
Solaris Zone と Puppet、Serverspec でインフラ CI
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
Oracle Solaris 11の可用性を高める! Oracle Solaris Cluster 4.0(補足資料)
osoljp 2011.08
初心者がOpenIndianaで自宅サーバを作ったよって話
Osoljp201204
The Art of Network Protocols - RIP編 -
Solaris ディープダイブセミナー #4: A-2-1 サービス実行を超えた 新たなサービス管理アーキテクチャ Service Management...
ZFS on Linux @ZFS Day 2011.10
Linux 目線で VCSA を探索してみました。2025/2/14 VMUG UserCon 発表資料
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
コンテナ型仮想化とはなんだったのか
OpenStackで始めるクラウド環境構築入門
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
Osc2011 Do

今もう一度知ろう。 Solarisのコンテナ型仮想化技術

  • 2. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 2 Agenda コンテナ型仮想化とは Solaris Zone を使った コンテナ型仮想化 Zone の使い方
  • 3. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 3 自己紹介 とある IT 企業の Solaris 使い Twitter: s_miyaza Solaris なのは趣味です 最近 Solaris のお仕事がありません… (´ ・ ω ・` )
  • 4. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 4 コンテナ型仮想化とは
  • 5. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 5 仮想化についておさらい 同一ハードウェアで、別 OS を動かす 別 OS 別アーキテクチャ OS の物理的制約を回避し、柔軟に構成 メモリ ディスク ネットワーク
  • 6. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 6 ネイティブ仮想化とコンテナ型仮想化 ネイティブ仮想化 エミュレータにより子 OS を動作 OS 側は無修正で動作 オーバヘッドあり VMware 、 Xen 、 KVM など コンテナ型仮想化 OS 権限を使用して子 OS を分離 同じ OS が動作 ( 基本的には ...) オーバヘッドなし Jail 、 Solaris Zone 、 LXC など
  • 7. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 7 コンテナ型仮想化とは OS レベルでカプセル化 基本的に、同一 OS で動作 コンテナからは他コンテナ、親のリソースに アクセス不可 親からはコンテナのリソースにアクセス可能 オーバヘッドなし 同じ OS で動く リソースも親まかせ
  • 8. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 8 いろいろなコンテナ Chroot Jail OpenVZ(Virtuozzo) LXC Docker Solaris Zone
  • 9. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 9 Chroot 指定したパスを root として動作する chroot 化のプロセスは上位にアクセス不可 指定したパス以下に使用バイナリコピー ネットワークは親 OS のものを使用 CPU/ メモリなどの制限不可 UNIX 系 OS ならたいてい使用可能
  • 10. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 10 Jail FreeBSD で動作 ファイルシステム、プロセス空間、 ユーザアカウントなどを親 OS から分離 jail ごとに一つの IP アドレスを使用可能
  • 11. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 11 OpenVZ(Virtuozzo) Linux 上で動作 (OpenVZ 用カーネル使用 ) Parallels 社が開発 OSS 版が OpenVZ 、商用版が Virtuozzo リソースをコンテナごとに分離可能 ファイルシステム ユーザグループ プロセスツリー ネットワーク デバイス、 IPC オブジェクト ライブマイグレーション可能
  • 12. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 12 LXC Linux で動作 (2.6.29 以降 ) Namespace+CGroups で実装 Namespace 名前によってリソースをグループ化 CGroups(Control Groups) Namespace によってグループされたリ ソースを制御 CPU 、メモリ、ブロック I/O の制御
  • 13. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 13 Docker Linux で動作 アプリケーションコンテナ =特定アプリケーションのみ動作する LXC や Namespace を使用して実装 Docker の image を git 登録すること で、 簡易にデプロイ可能
  • 14. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 14 •Solaris Zone を使ったコンテナ型仮想化
  • 15. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 15 Solaris Zone とは Solaris10 以降で実装 同じカーネルで複数 OS を動作 プロセス、ディスク、ネットワーク、 ユーザグループなどを分離 CPU 、メモリなどの制限 仮想化された Network(Project Crossbow) を有効利用 ZFS 機能の有効利用 OpenStack 連携
  • 16. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 16 Solaris Zone の構成 Solaris 大域ゾーン (Global Zone) ローカルストレージ iSCSI FC-SAN 非大域ゾーン (Non-Global Zone) ZBE1 ZBE1 仮想 SW1 Net0 Net0 Net1 Zone2 ZBE2 ZBE2 DATA Net0 仮想 SW2 Net1DATA
  • 17. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 17 Zone を作ってみる (1) Zone の設定 zonecfg -z ゾーン名 create; commit 対話型設定も可能 % sudo /usr/sbin/zonecfg -z zone1 'create ; verify ; export ; commit ' create -b set zonepath=/system/zones/%{zonename} set autoboot=false set autoshutdown=shutdown set ip-type=exclusive add anet set linkname=net0 set lower-link=auto set configure-allowed-address=true set link-protection=mac-nospoof set mac-address=auto end % sudo /usr/sbin/zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 configured /system/zones/zone1 solaris excl % sudo /usr/sbin/zonecfg -z zone1 zonecfg:zone1>
  • 18. Page 18今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Zone を使ってみる (1) の補足 以下の設定値が必須 Zonepath Solaris11 では以下のように自動設定 Solaris11 以外では明示的に設定が必要 Network 設定 Solaris11 では anet が自動設定 net を使用して、 VNIC を明示的に指定可能 Solaris11 以外では VNIC の明示的な指定が必 要 詳しくは後述 set zonepath=/system/zones/%{zonename}
  • 19. Page 19今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Zone を作ってみる (2) zonecfg -z ゾーン名 create ゾーン名の名前を付けた Zone を作成 zonecfg -z ゾーン名 verify Zone の設定を確認 zonecfg -z ゾーン名 export Zone の設定を出力 この出力情報を基に Zone 設定も可能 zonecfg -z ゾーン名 commit Zone の設定を確定 Solaris-1: % sudo /usr/sbin/zonecfg -z zone1 export > /net/solaris-2/share/zone1.cfg Solaris-2: % sudo /usr/sbin/zonecfg -z zone1 -f /share/zone1.cfg
  • 20. Page 20今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Zone を作ってみる (3) Zone のインストール zoneadm -z ゾーン名 install pkg リポジトリへアクセスが必要 デフォルトで http://pkg.oracle.com/solaris/release/ % sudo /usr/sbin/zoneadm -z zone1 install The following ZFS file system(s) have been created: rpool/VARSHARE/zones/zone1 Progress being logged to /var/log/zones/zoneadm.20150224T232755Z.zone1.install Image: Preparing at /system/zones/zone1/root. ( 中略 ) Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /system/zones/zone1/root/var/log/zones/zoneadm.20150224T232755Z.zone1.inst % sudo /usr/sbin/zoneadm list -cv パスワード : ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /system/zones/zone1 solaris excl
  • 21. Page 21今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Zone を作ってみる (4) Zone のブート zonecfg -z ゾーン名 boot Zone の初期設定 zlogin -C ゾーン名 -C を指定して、コンソールモードで接続 初回設定 (sysconfig) ホスト名 ネットワーク設定 タイムゾーン 初期ユーザ・ root のパスワード 初回以外は zlogin ゾーン名で接続
  • 22. Page 22今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring リソースの分離 同じカーネルを使用 プロセスの分離 CPU/ メモリの制限 ディスクの制限 ネットワークの制限
  • 23. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 23 同じカーネルを使用 大域ゾーン システム コール メモリ 割り当て 非大域ゾーン プロセス システム コール メモリ 割り当て プロセス カーネル
  • 24. 今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Page 24 大域ゾーンからみたプロセス 大域ゾーンからは非大域ゾーンのプロセスが見える 非大域ゾーンのプロセス= 大域ゾーンのプロセス (Zone 名付 ) % ps -efZ ZONE UID PID PPID C STIME TTY TIME CMD global root 0 0 0 2 月 07 ? 0:02 sched global root 5 0 0 2 月 07 ? 85:24 zpool-rpool global root 1 0 0 2 月 07 ? 0:01 /sbin/init global root 2 0 0 2 月 07 ? 0:00 pageout global root 3 0 0 2 月 07 ? 109:36 fsflush ( 中略 ) global root 2356 1 0 2 月 07 ? 0:00 zoneadmd -z zone1 zone1 root 3611 1 0 2 月 07 ? 0:01 /usr/sbin/syslogd zone1 root 3591 3203 0 2 月 07 zoneconsole 0:00 /usr/lib/saf/ttymon ... zone1 root 3589 1 0 2 月 07 ? 0:07 /usr/lib/fm/fmd/fmd zone1 root 3582 3580 0 2 月 07 ? 0:00 /usr/lib/autofs/automountd zone1 root 3496 1 0 2 月 07 ? 0:00 /usr/sbin/cron zone1 root 3588 1 0 2 月 07 ? 0:00 /usr/lib/inet/inetd start
  • 25. Page 25今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring 非大域ゾーンからみたプロセス 非大域ゾーンのプロセスしかみえない 他の非大域 Zone のプロセスも見えない % sudo zlogin zone1 ps -efZ Password: ZONE UID PID PPID C STIME TTY TIME CMD zone1 root 3580 2952 0 Feb 07 ? 0:00 /usr/lib/autofs/automountd zone1 root 3438 2952 0 Feb 07 ? 0:15 /usr/sbin/nscd zone1 root 3110 2952 0 Feb 07 ? 0:01 /sbin/init zone1 root 3569 2952 0 Feb 07 ? 0:00 /usr/lib/inet/in.ndpd ( 中略 ) zone1 root 3611 2952 0 Feb 07 ? 0:01 /usr/sbin/syslogd zone1 root 3591 3203 0 Feb 07 console 0:00 /usr/lib/saf/ttymon -g -d ... zone1 root 3589 2952 0 Feb 07 ? 0:07 /usr/lib/fm/fmd/fmd zone1 root 3582 3580 0 Feb 07 ? 0:00 /usr/lib/autofs/automountd zone1 root 3496 2952 0 Feb 07 ? 0:00 /usr/sbin/cron zone1 root 3588 2952 0 Feb 07 ? 0:00 /usr/lib/inet/inetd start
  • 26. Page 26今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring CPU の制限 Zone の設定で CPU を制限 capped-cpu Zone で使用する CPU 時間を制限 1 を指定すると 100 %、 1.5 を指定すると 150% 動的変更可能 (Solaris11 のみ ) dedicated-cpu(Solaris11 のみ ) 特定の CPU を指定して割り当て zonecfg:zone1> add capped-cpu zonecfg:zone1:capped-cpu> set ncpus=1 zonecfg:zone1:capped-cpu> end zonecfg:zone1> add dedicated-cpu zonecfg:zone1:dedicated-cpu> set ncpus=3-4 zonecfg:zone1:dedicated-cpu> end zonecfg:zone1> add capped-cpu zonecfg:zone1:capped-cpu> set ncpus=1 zonecfg:zone1:capped-cpu> end
  • 27. Page 27今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring メモリの制限 Zone の設定でメモリを制限 capped-memory ゾーンが使用できるメモリの最大値を指定 K 、 M 、 G 、 T の単位を指定可能 zonecfg:zone1> add capped-memory zonecfg:zone1:capped-memory> set physical=2G zonecfg:zone1:capped-memory> end
  • 28. Page 28今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring 仮想化 Network の利用 Solaris11 、 OpenSolaris では Network が仮想 化されている 仮想 SW 、 NIC を自由に組み合わせ可能 closed なネットワークも利用可能 Zone に複数の仮想 NIC を割り当てることにより 、自由なネットワーク構成可能 Zone に割り当てられた仮想 NIC 以外は接続不可
  • 29. Page 29今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring じゆうなねっとわーく Solaris11/OpenIndiana 大域ゾーン 物理 NIC VNIC01 仮想 SW1 仮想 SW2 Zone1 VNIC1 Zone2 VNIC11 VNIC12 VNIC21 ルーティング The Internet
  • 30. Page 30今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Network の制限 割り当てた VNIC に対して帯域幅を制限 dladm を使用 maxbw を VNIC に対して指定すると帯域幅を制限 以下の例では、 100Mbps に制限 flowadm を使用 大域幅、優先度、接続先など より細かい制限が可能 % dladm show-linkprop -p maxbw zone1/net0 LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE zone1/net0 maxbw rw -- -- -- -- % sudo dladm set-linkprop -p maxbw=100 zone1/net0 % dladm show-linkprop -p maxbw zone1/net0 LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE zone1/net0 maxbw rw 100 100 -- --
  • 31. Page 31今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring ZFS の使用 ZFS をゾーンの配置に使用 ZFS プール、 ZFS ファイルセットの 追加割り当て可能 ゾーン内からは、ゾーンに割り当てられた 領域以外アクセス不可 FC 、 iSCSI を zfs pool に割り当て可能 ※ Solaris11 以降
  • 32. Page 32今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring ZFS を使用したディスクの制限 Zone のパスに対して quota を設定 ZFS の機能を使用して、制限可能 以下は、 ZonePATH に対して、 1GB の quota を設定 % sudo /usr/sbin/zfs list rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris NAME USED AVAIL REFER MOUNTPOINT rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris 680M 23.2G 635M /system/zones/zone1/root % sudo /usr/sbin/zfs get mountpoint rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris NAME PROPERTY VALUE SOURCE rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris mountpoint /system/zones/zone1/root temporary % sudo /usr/sbin/zfs get quota rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris NAME PROPERTY VALUE SOURCE rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris quota none default % sudo /usr/sbin/zfs set quota=1G rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris % sudo /usr/sbin/zfs get quota rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris NAME PROPERTY VALUE SOURCE rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris quota 1G local
  • 33. Page 33今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring ZFS を使用したデプロイ (1) ゾーンの clone 既存のゾーンと同じゾーンを作成 zoneadm -z ゾーン名 clone 既存ゾーン名 % sudo zonecfg -z zone2 'create; verify; commit' % sudo zoneadm list -v ID NAME STATUS PATH BRAND IP 0 global running / solaris shared % sudo zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /system/zones/zone1 solaris excl - zone2 configured /system/zones/zone2 solaris excl % sudo zoneadm -z zone2 clone zone1 The following ZFS file system(s) have been created: rpool/VARSHARE/zones/zone2 Progress being logged to /var/log/zones/zoneadm.20150226T211933Z.zone2.clone Log saved in non-global zone as /system/zones/zone2/root/var/log/zones/zoneadm.20150226T211933Z % zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /system/zones/zone1 solaris excl - zone2 installed /system/zones/zone2 solaris excl
  • 34. Page 34今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring ZFS を使用したデプロイ (2) ZFS の clone を使用してデプロイ ZFS Clone は、 snapshot を元に書き込み可 能なファイルセットを作成する機能 snapshot 元との差分のみが書き込まれる ディスクの有効利用 % zfs list rpool/VARSHARE/zones/zone1/rpool/ROOT 717M 23.2G 31K legacy rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris 717M 307M 664M /system/zones/zone1/root rpool/VARSHARE/zones/zone1/rpool/ROOT/solaris/var 44.9M 307M 43.9M /system/zones/zone1/root/var rpool/VARSHARE/zones/zone2/rpool/ROOT 5.03M 23.2G 31K legacy rpool/VARSHARE/zones/zone2/rpool/ROOT/solaris-0 5.03M 23.2G 667M /system/zones/zone2/root rpool/VARSHARE/zones/zone2/rpool/ROOT/solaris-0/var 45K 23.2G 43.9M /system/zones/zone2/root/var
  • 35. Page 35今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring ZFS の重複排除の有効利用 ZFS の重複排除 ブロック単位で同じデータを使いまわす 変更分のみ増える Zone は root パーティションがほぼ同じ =重複排除が効きやすい! Global-Zone Zone1 Zone2
  • 36. Page 36今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring 変わりもの Zone たち Branded Zone LX Solaris8/9 Solaris10 Kernel Zone
  • 37. Page 37今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring LX Zone なぜか Zone 内で Linux が動く ただし、 CentOS3.8 OpenSolaris で動作 Project Janus の成果 カーネルをエミュレート なので遅い ...? 正式版 Solaris10/11 ではサポートされず 最近、 StormOS(by Joyent) で動きが Ubuntu14.x が動いたとか…
  • 38. Page 38今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Solaris8/9 Zone Solaris10 のみで動作 古い Solaris8/9 の延命 P2V でマイグレーション可能 ライブマイグレーション可能らしい ... 有償
  • 39. Page 39今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Solaris10 Zone Solaris11 で動作 P2V 可能 標準機能!
  • 40. Page 40今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring Kernel Zone Solaris11.2 以降で動作 Zone は同じカーネルを使用 Kernel Zone は、別カーネルで動作 他ゾーンの動作影響を受けない パッチレベルの異なるカーネルを動作可能 CPU の仮想化命令が必要 VTi 、 AMD-V 、 SPARC T4/T5 物理空きメモリ 8GB 推奨 ZFS のキャッシュ (ARC) を制限する必要あり
  • 41. Page 41今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring OpenStack と連携 Solaris11.2 から OpenStack サポート 前回 (OSC2014 Tokyo/Fall) 発表 http://www.slideshare.net/satorumiyazaki/oracle -solarisopenstack Havana ベース Zone および KernelZone をサポート Cinder(block storage) 、 Swift(Object Storage) で ZFS サポート Solaris11.2 の仮想化ネットワークスイッチ( Elastic Virtual Switch) と Neutron の連携
  • 42. Page 42今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring そんな Zone の問題点 初回起動が遅い 数分かかる サービスの初期化が遅い ⇒AIマニフェストを指定して、インストールするP KGを制限する % zoneadm -z ゾーン名 install -m ai_manifest.xml 初回設定 (sysconfig 実施 ) ⇒ インストール時に sysconfig のマニフェスト指定 % zoneadm -z ゾーン名 install -c sc_manifest.xml カーネルパニックすると皆こける ⇒Kernel Zone くらいしか回避策なし
  • 43. Page 43今もう一度知ろう。 Solaris のコンテナ型仮想化技術 OSC2015 Tokyo/Spring まとめ Solaris Zone は、同じカーネルで動く =オーバヘッドが少ない CPU/Memory/Network 帯域 を制限 ZFS の機能をフル活用 Clone 重複排除 サイズ制限 変態ゾーンもあるよ LX とか、カーネルゾーンとか OpenStack と連携もあるよ