Solaris 的 虛擬技術 Container (一)

看板Linux作者時間17年前 (2007/04/17 15:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
之前寫了 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
文章代碼(AID): #1697Vp00 (Linux)
文章代碼(AID): #1697Vp00 (Linux)