Solaris 的 虛擬技術 Container (一)
之前寫了 linux 下 Xen & vserver 的分享
現在來一篇 Solaris Unix 的虛擬技術分享
雖然是在 linux 版發表 不過既然都是虛擬技術 想想跟大家分享一下也好
簡介:
Solaris Container 的虛擬技術是在 Solaris 10 裡發表的
正確來說應該是從 Solaris u1 版才正式收錄
其虛擬技術稱為 Solaris Container
一共包括二部分 資源管理 (Resource Manager) & 區域 (Zone)
資源管理部分比較瑣碎 就不提了 且跟本版無關 著重在 Zone 的介紹
因為文章較長分成多個部分介紹完
一、
範例一 設定完整 Root 模式 ( Whole Root Model ) 的 Non-global Zone
** Root 指的是跟目錄 **
Sheel> zonecfg -z mysql5
zonecfg:mysql5> create
zonecfg:mysql5> set zonepath=/export/mysql5
zonecfg:mysql5> set autoboot=true
zonecfg:mysql5> set pool=pool_default
zonecfg:mysql5> add fs
zonecfg:mysql5:fs> set dir=/usr/local
zonecfg:mysql5:fs> set special=/opt/local
zonecfg:mysql5:fs> set type=lofs
zonecfg:mysql5:fs> end
zonecfg:mysql5> add inherit-pkg-dir
zonecfg:mysql5:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:mysql5:inherit-pkg-dir> end
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
zonecfg:mysql5> add net
zonecfg:mysql5:net> set address=192.168.30.97
zonecfg:mysql5:net> set physical=bge1
zonecfg:mysql5:net> end
zonecfg:mysql5> add rctl
zonecfg:mysql5:rctl> set name=zone.cpu-shares
zonecfg:mysql5:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:mysql5:rctl> end
zonecfg:mysql5> add attr
zonecfg:mysql5:attr> set name=comment
zonecfg:mysql5:attr> set type=string
zonecfg:mysql5:attr> set value="This is MySQL 5 work zone"
zonecfg:mysql5:attr> end
說明:
1.1 基本設定
1.1.1 設定 ZONE 路徑
zonecfg:mysql5> set zonepath=/export/mysql5
1.1.2 設定開機自動啟動
zonecfg:mysql5> set autoboot=true
1.1.3 設定資源池
zonecfg:mysql5> set pool=pool_defaul
1.2 設定檔案系統
zonecfg:mysql5> add fs
1.2.1 設定 Non-global Zone 檔案系統掛載點 /usr/local
zonecfg:mysql5:fs> set dir=/usr/local
1.2.2 掛載 Global Zone 的 /opt/local 作為 Non-global Zone 的
/usr/local 當作跟 Global Zone 的檔案交換目錄
zonecfg:mysql5:fs> set special=/opt/local
1.2.3 設定檔案系統交換類型為 lofs
zonecfg:mysql5:fs> set type=lofs
1.2.4 檔案系統設定結束
zonecfg:mysql5:fs> end
1.3 設定 mount Global Zone上 的檔案系統 但在 Non-Global Zone 裡卻是唯讀的
1.3.1 設定直接從 Global Zone 上繼承 mount 上來的檔案系統,
這些檔案系統在 Non-global Zone 裡面都是唯讀的
zonecfg:mysql5> add inherit-pkg-dir
1.3.2 /opt/sfw 直接從 Global Zone 繼承取得使用,
/opt/sfw 是 Golbal Zone 已安裝 package 的目錄
zonecfg:mysql5:inherit-pkg-dir> set dir=/opt/sfw
1.3.3 掛載唯讀目錄結束
zonecfg:mysql5:inherit-pkg-dir> end
1.4 移除預先安裝的目錄將 Non-global Zone 設為完整 Root 模式
( Whole Root Model )
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
1.5 設定配發的 ip 跟指定的 NIC 介面
zonecfg:mysql5> add net
zonecfg:mysql5:net> set address=192.168.30.97
zonecfg:mysql5:net> set physical=bge1
zonecfg:mysql5:net> end
1.6 資源限制
zonecfg:mysql5> add rctl
zonecfg:mysql5:rctl> set name=zone.cpu-shares
zonecfg:mysql5:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:mysql5:rctl> end
1.7 註解說明
zonecfg:mysql5> add attr
zonecfg:mysql5:attr> set name=comment
zonecfg:mysql5:attr> set type=string
zonecfg:mysql5:attr> set value="This is MySQL 5 work zone"
zonecfg:mysql5:attr> end
** 也可以下列的範例設定快速建立完整 Root 模式 **
** ( Whole Root Model ) 的 Non-global Zone **
Sheel> zonecfg -z zone1
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create -b
zonecfg:zone1> set zonepath=/zones/zone1
zonecfg:zone1> exit
Sheel> time zoneadm -z zone1 install
二、
範例二 設定簡易 Root 模式 ( Sparse Root Model) 的 Non-global Zone
** Root 指的是跟目錄 **
zonecfg -z apache2
zonecfg:apahe2> create
zonecfg:apahe2> set zonepath=/export/apahe2
zonecfg:apahe2> set autoboot=true
zonecfg:apahe2> set pool=pool_default
zonecfg:apahe2> add fs
zonecfg:apahe2:fs> set dir=/usr/local
zonecfg:apahe2:fs> set special=/opt/local
zonecfg:apahe2:fs> set type=lofs
zonecfg:apahe2:fs> end
zonecfg:apahe2> add inherit-pkg-dir
zonecfg:apahe2:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:apahe2:inherit-pkg-dir> end
zonecfg:apahe2> add net
zonecfg:apahe2:net> set address=192.168.30.98
zonecfg:apahe2:net> set physical=nge0
zonecfg:apahe2:net> end
zonecfg:apahe2> add rctl
zonecfg:apahe2:rctl> set name=zone.cpu-shares
zonecfg:apahe2:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:apahe2:rctl> end
zonecfg:apahe2> add attr
zonecfg:apahe2:attr> set name=comment
zonecfg:apahe2:attr> set type=string
zonecfg:apahe2:attr> set value="This is apche2 work zone"
zonecfg:apahe2:attr> end
說明:
2.1 基本設定
2.1.1 設定 ZONE 路徑
zonecfg:apache2> set zonepath=/export/apache2
2.1.2 設定開機自動啟動
zonecfg:apache2> set autoboot=true
2.1.3 設定資源池
zonecfg:apache2> set pool=pool_default
2.2 設定檔案系統
zonecfg:apache2> add fs
2.2.1 設定 Non-global Zone 檔案系統掛載點 /usr/local
zonecfg:apache2:fs> set dir=/usr/local
2.2.2 掛載 Global Zone 的 /opt/local 作為 Non-global Zone 的
/usr/local 當作跟 Global Zone 的檔案交換目錄
zonecfg:apache2:fs> set special=/opt/local
2.2.3 設定檔案系統交換類型為 lofs
zonecfg:apache2:fs> set type=lofs
2.2.4 檔案系統設定結束
zonecfg:apache2:fs> end
2.3 設定 mount Global Zone上 的檔案系統 但在 Non-Global Zone 裡卻是唯讀的
2.3.1 設定直接從 Global Zone 上繼承 mount 上來的檔案系統,
這些檔案系統在 Non-global Zone 裡面都是唯讀的
zonecfg:apache2> add inherit-pkg-dir
2.3.2 /opt/sfw 直接從 Global Zone 繼承取得使用,
/opt/sfw 是 Golbal Zone 已安裝 package 的目錄
zonecfg:apache2:inherit-pkg-dir> set dir=/opt/sfw
2.3.3 掛載唯讀目錄結束
zonecfg:apache2:inherit-pkg-dir> end
2.5 資源限制
zonecfg:apache2> add rctl
zonecfg:apache2:rctl> set name=zone.cpu-shares
zonecfg:apache2:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:apache2:rctl> end
2.6 註解說明
zonecfg:apache2> add attr
zonecfg:apache2:attr> set name=comment
zonecfg:apache2:attr> set type=string
zonecfg:apache2:attr> set value="This is apache2 work zone"
zonecfg:apache2:attr> end
** 也可以下列的範例設定快速建立簡易 Root 模式 **
** ( Sparse Root Model ) 的 Non-global Zone **
Sheel> zonecfg -z zone2
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
zonecfg:zone1> set zonepath=/zones/zone2
zonecfg:zone1> exit
Sheel> time zoneadm -z zone2 install
簡易 Root 模式 跟 完整 Root 模式的差異在於
完整 Root 模式移除掉原本預設會有的 /lib /platform /sbin /usr
這樣 Golbal Zone 系統的變動就不會影響到 Non-global Zone 系統
當然 Non-global Zone 系統的變動自然也不會影響到 Golbal Zone
ex:
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
** 配發 ip 跟指定 NIC 並不硬性規定一定要用實體 NIC **
** 一樣可以單張 NIC 搭配 Non-global Zone 配發多個 虛擬 IP **
翻譯 Whole Root Model & Sparse Root Model 的方式說明
因為 Sparse 在英文裡並不是簡易的意思 我私下稱為簡易是相對於 Whole 的語意
若有更適當的表達法歡迎來信告知 謝謝
--
(__) 歡迎加入 GNU Debian Linux
(oo) msn:cheung@debian.nccu.edu.tw
/------\/
/ | ||
* /\---/\ ...."Have you mooed today?"...
~~ ~~
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 220-132-173-42.hinet-ip.hinet.net
Linux 近期熱門文章
23
129
PTT數位生活區 即時熱門文章