[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

CentOS 5.x 上的 Linux-VServer

<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[1]"] (see also the log)>>

ArtWork/WikiDesign/alert.png

CentOS 的開發者花費很多時間及功夫來確保 CentOS 是穩定的,並適用於生產環境內。採用 VServer 意味著使用不受支援的內核。它除了影響 KVM 模擬多個處理器的能力外,本作者未發現有其它問題。這並不等於你不會遇上問題,因此請自行承擔下面帶來的風險。

這個 wiki 上有另一篇文章更詳盡地解釋採用不受支援的內核的風險。如果你準備在生產設備上使用 VServer,請先 閱讀它

儘管如此,VServer 的人們當然也在它們的內核上花了不少功夫。本作者在測試的機器上執行了各款的程式,而除了 KVM-qemu 的 smp 問題外,並沒有遇到其它問題。最重要的一點就是 CentOS 的開發者只能官方地支援 CentOS 的內核。


Linux-VServer 與一個 FreeBSD 監獄非常相似。它並不像 VirtualBoxVMware 般是台虛擬機器,反而更像一個複雜的 chroot 環境。它可以在執行網頁伺服器等程式時加入略外一層保障。你可以為客端系統設定資源應用的上限。按預設值,它會動態地分享主機的記憶體及處理器,並以接近原生的速度運行。

VServer 的網頁內備有一篇文章解釋不同的虛擬化方式,以及在一頁裡列出它在哪些情況下是個好的選擇。

這個網站備有大量文檔。這篇文章的不少篇幅來自該處。

1. 準備安裝

進行安裝前,主機上必須先完成數件事情。簡單來說:新增 yum 軟件庫、下載內核、及修改主機的某些設定。

1.1. 新增 yum 軟件庫

在 /etc/yum/repos.d 內建立一個新檔案。VServer 的 wiki 文章稱它為 dhozac-verser.repo。這個檔案的內容有 {{{[dhozac-vserver] name=Linux-VServer related packages for CentOS $releasever - $basearch baseurl=http://rpm.hozac.com/dhozac/centos/$releasever/vserver/$basearch gpgkey=http://rpm.hozac.com/conf/keys/RPM-DHOZAC-GPG-KEY}}}

本篇 wiki 建議你在進行任何動作前先更新 yum。

yum update yum

請留意自 12 月底,dhozac 這個軟件庫經常無法被運用。在這個情況下

baseurl=http://rpm.hozac.com/dhozac/centos/$releasever/vserver/$basearch

可以臨時被替換為

baseurl=http://mirror.fubra.com/rpm.hozac.com/dhozac/centos/$releasever/vserver/$basearch

1.2. 取得 VServer 內核

下一步是要取得 vs 內核。它的版本比 CentOS 所採用的更要新,因此只要執行

yum update kernel kernel-devel

便會下載 VServer 的內核,截至本文是 2.6.22.19-vs2.3.0.34.1。kernel-devel 這個 rpm 對重建或許會有幫助,否則你也許不需要它。安裝時一個新的項目將會自動被加進 grub。

2. 更改主機設定

假若讀者擁有任何第三方的模塊,它們必須針對新的內核被重新建立。截至本文,支援漸趨流行的 Realtek 內置網絡配接卡的 r8168 模塊是其中之一。(這個情況應該在上游供應者的下個版本會有所改善,它大概會在 2008 年 6 月中旬被引進 CentOS。)假若你採用 rpmforge 的 dkms 版本,事情就相當簡單。

當新版內核被安裝後,它在 /lib/modules 內會有一個新的目錄。為了方便輸入,現時的 2.6.18-53.1.19.e15 版的 CentOS 內核將會被縮寫成 2.6.18,而 VServer 的內核將會被縮寫成 2.6.22-vs。請在 /lib/modules 內使用真實的名稱,而不是這裡的縮寫。

r8168 這個模塊將會在 /lib/modules/2.6.18/extras 之內。請將它複製到新內核的 /lib/modules 位置,然後執行 depmod。

{{{cd /lib/modules cp 2.6.19/extras/r8168.ko 2.6.22-vs/extras depmod 2.6.22-vs}}}

這個模式應該適用於任何 dkms 模塊。

至於 NVidia,或任何從該生產商的網站下載的模塊,它們很可能都須要在啟動新內核後重建。因此,假若相關的模塊是為網絡卡而設,在重新開機前請確定已經下載了所需的檔案。

在安裝前的另一個考慮,就是你若果要以 ssh 來存取虛擬客端系統,你必須編輯主機的 /etc/ssh/sshd_config 檔案。它的預設值是在所有位址聆聽。然而,客端系統將會擁有自己的位址,因此請編輯主機的 sshd_config 令它只在自己(主機)的位址上聆聽。請修改 /etc/ssh/sshd_config 內這一行

#ListenAddress 0.0.0.0

刪除 # 號來去掉它的註釋,然後將 ListenAddress 改為主機的 IP。假如主機的 IP 位置是 192.168.1.80,這一行便成為

ListenAddress 192.168.1.80

接著重新啟動 ssh。

/etc/init.d/sshd restart

安裝一些應用客端系統時所需的套件。

yum install util-vserver{,-core,-lib,-sysv,-build}

在 /etc/init.d 內將會有個新的項目。請將 vprocunhide 及 util-vserver 設定為開機時啟動。(這一步在安裝時可能已經完成。) {{{chkconfig util-vserver on chkconfig vprocunhide on}}}

用新的內核重新開機。

3. 安裝客端系統

VServer 在關於建立客端系統的文檔內提供了數個方法。在這個範例中,我們將會安裝一台 CentOS 客端系統。就 CentOS 來說,利用範本及採用 yum 是最簡單的兩個方法。

現時已經有一個範本可用來安裝最基本的 CentOS。你可以從 sandio.net 下載映像並採用範本這個方法。截至本文,現時只備有 32 位元的範本作為 CentOS 5.x 映像。

採用這個方法時請將範本,一個 tar.bz2 映像,儲存在某處。(VServer 的文檔以 /vservers/.templates 為例。)請勿將它解壓,因該檔案會在建立過程中被直接應用。

這個範本亦可以應用在其它系統上。譬如你在 Fedora 上安裝了 VServer 的內核,你亦可以建立一台 CentOS 客端系統。

在下列範例中,我們將客端系統命名為 vcentos。它的區域是 example.com。請將所有 vcentos 改為你的伺服器的名稱,並以你的域名代替 example.com。這個指令必須在同一行內輸入。(視乎畫面大小及解像度,很多瀏覽器會將它顯示為數行。)

{{{vserver vcentos build -m template --hostname vcentos.example.com --interface eth0:192.168.1.70/24 -- -d centos5 -t /vservers/.templates/centos-5-i686-2007-07-14.tar.bz2}}}

3.0.1. 解釋

vserver vcentos。客端系統去掉區域的名稱。請把它改為你選擇給客端系統的名稱。

build -m template。-m 代表「方法」。在這個例子裡,要以範本的方法進行建立。

--hostname。客端系統的完整機名,連同域名在內。

--interface eth0:192.168.1.70/24。客端系統的網絡介面及 IP 位址。它應該與主機位於同一個子網絡。在這個範例裡,我們採用典型的 192.168.1.0/24 子網絡。(對於那些不熟識這個寫法的人,它與意思等同一個 255.255.255.0 的子網遮罩。)

-- -d centos5。-- 是一個分隔符號,接著是你的發行版本的名稱。如果你下載了一個 Fedora 8 的映像,你應該用 -d fedora8。

這個 -- 並非錯字。build 這個指令分為不同部份,而它們是以 -- 隔開的。等一部份是基本選項的設定,在這個例子中包括開頭一切至 --interface。第二部份以 -- 隔開,所提供的是發行版本,以及在這個例子的範本位置。

-t /vservers/.templates/centos-5-i686-2007-07-14.tar.bz2。-t 代表要應用的範本,因此請列出範本的完整路徑。

3.0.2. 透過 yum 進行安裝

若要安裝 64 位元的 CentOS 客端系統(只可在 64 位元主機上進行),請以 yum 的方法進行安裝。

{{{vserver vcentos build -m yum --hostname vcentos.example.com --interface eth0:192.168.1.70/24 -- -d centos5}}}

這樣做會進行最細小的安裝,當中只包括基本系統、gcc 及少數其它東西。

要安裝 Fedora 8 的客端系統,請將 -d 的值改為 f8。一個可用的發行版本清單已經收錄在 /usr/lib/util-vserver/distributions。(在 64 位元主機上,這個清單位於 /usr/lib64/util-vserver/distributions。)

4. 設定客端系統

4.1. 套件管理

剛安裝好的客端系統屬最小的系統。假若你以範本來建立它,最基本的指令都應該全備,但如果你利用 yum 來建立它,less、which、passwd 及 vi 等指令都不存在。你可以從主機或在客端系統內管理套件。

要從主機管理套件,請使用 vyum 指令。它的語法是

vyum <servername> -- install <package_name>

譬如說我們要在客端系統上安裝 passwd 這個指令

vyum vcentos -- install passwd

你會看見一個典型的對話方塊,用來顯示將會被下載的套件,並要求你確認。輸入 y 或 yes 後,你將會看見被些套件被安裝。

對於透過 yum 建立的系統,就算它們不在運行中依然可以應用這個指令。

然而,假若套件的名稱不正確,例如你錯誤輸入 vi 而要是 vim-minimal 或 vim-enhanced,除了看不見典型的 yum 對話方塊外,你不會收到任何關於失敗的通知。它可能會短暫地停頓,然後便返回指令符。假如你看不見典型的 yum 對話方塊,那麼該套件便沒有被安裝。若果你提供了錯誤的套件名稱,你或許會看見典型的 yum 對話方塊以 Nothing to do 這個信息來結束,但這並非必然。

如果你以 yum 安裝方法來建立了一台客端系統,然後想在客端系統內管理套件,你首先要安裝 yum 及 vyum。接著請執行

{{{verserver pkgmgmt internalize. vyum vcentos -- install yum vserver vcentos pkgmgmt internalize}}}

如果 yum 未被正確地安裝,pkgmgmt 這個指令會匯報錯誤。

假若客端系統是從範本所建立的,以上的步驟都是不必要的。

5. 進一步的設定

客端系統的檔案都放置在 /etc/vserver/vcentos/vdir。你可以在啟動伺服器前編輯它們。(請記得 vcentos 是我們的範例伺服器名稱,你應該改用你的伺服器名稱。)

啟動客端系統。

vserver vcentos start

請進入你的伺服器作進一步的設定

vserver vcentos enter

你將會被放在一個指令提示元。預設的安裝裡沒有 /etc/shadow,因此你無法更改 root 的密碼。要解決這個問題,假設你已利用 vyum 安裝了 passwd 這個指令(或者 yum,在已安裝了 yum 的客端系統),請執行

pwconv

如此 /etc/shadow 這個檔案便會被建立。你現在可以透過正常做法為 root 設置一個密碼。

若然你計劃透過 ssh 存取客端系統,(預設不會在客端上安裝 —— 你需要安裝 openssh-server 及客戶端),客端系統上的 /etc/pam.d/sshd 必須被修改。請遵從 VServer 常見問題集,在 CentOS 及 Fedora 客端系統上將 /etc/pam.d/sshd 檔內的最後一行註釋掉。它的內容是 session    required     pam_loginuid.so

請在行首加入 # 符號將它註釋掉。

此刻,你可以一如其它 CentOS 系統般設定你的客端系統。舉個例說,如果你是要通過 VServer 為你的網頁伺服器加上額外一層保障,現在你便可以安裝 httpd 並在設定客端系統上的相關檔案。

6. 在主機啟動時執行 VServer

要在你的主機啟動時啟動預設的 vserver 客端系統,請先啟用 /etc/init.d/vserver-default 這個腳本。

chkconfig vserver-default on

接著進到 /etc/vservsers/vcentos/apps/init。(請以你的伺服器名稱替代 vcentos。)

echo default > mark

換句話說,你會建立一個名為 mark 的檔案,當中包含 default 這個單字。下次你啟動主機系統時,名叫 vcentos 的 Vserver 客端系統亦會啟動。

這是一個頗簡單的介紹。你亦可執行多台機器、限制一台機器所應用的資源、與及其它事情。我們建議讀者瀏覽 VServer 的網頁來取得更多資訊。

(這篇文章的原稿已收錄在 http://home.roadrunner.com/~computertaijutsu/vserver.html

Translation of revision 12


2023-09-11 07:23