SystemImager 4.0.0中文手冊


目錄
第1章. SystemImager介紹 ................................................................................................................................ 1
1.1. SystemImager縱攬 .............................................................................................................................. 1
1.2. 誰應該使用這個嚮導 ......................................................................................................................... 1
1.3. SystemImager如何工作 ...................................................................................................................... 1
1.3.1. 支持的發行版本 ..................................................................................................................... 1
1.3.2. 系統需求 ................................................................................................................................. 2
1.4. 名詞術語 .............................................................................................................................................. 2
第2章.安裝SystemImager ................................................................................................................................. 4
2.1. 它是如何工作的? ............................................................................................................................. 4
2.2. 獲得SystemImager ............................................................................................................................. 4
2.3. 選一個機器作爲鏡像服務器............................................................................................................. 4
2.4. 安裝一個鏡像服務器 ......................................................................................................................... 4
2.5. 選一個機器作爲Golden Client ......................................................................................................... 6
2.6. 在Golden Client上製作鏡像 ............................................................................................................ 6
2.7. 在Golden Client上安裝SystemImager客戶端軟件 ..................................................................... 6
2.8. 從零開始製作鏡像 ............................................................................................................................. 6
2.9. 升級SystemImager ............................................................................................................................. 7
2.9.1. 重新生成自動化安裝腳本 .................................................................................................... 7
2.9.2. 移植自定義文件/etc/systemimager/rsyncd.conf到SystemImager 3.0.0 .......................... 7
2.9.3. 重新生成啓動媒介 ................................................................................................................. 7
2.9.4. 二進制tar包發生了什麼? .................................................................................................... 7
第3章. 使用SystemImager ............................................................................................................................... 8
3.1. 安裝過程縱攬...................................................................................................................................... 8
3.1.1. 安裝詳細說明 ......................................................................................................................... 8
3.1.2. SystemImager工具................................................................................................................ 15
3.1.2.1. si_prepareclient命令 ................................................................................................ 15
3.1.2.2. si_getimage命令 ....................................................................................................... 15
3.1.2.3. 自動執行腳本 .......................................................................................................... 16
3.1.2.4. si_addclients命令和si_clusterconfig命令 ............................................................ 16
3.1.2.5. 附加安裝信息 .......................................................................................................... 16
3.1.2.6. 如何更新鏡像 .......................................................................................................... 17
第4章. 如何使用BitTorrent進行點對點安裝 ............................................................................................. 19
4.1. 安裝SystemImager v3.7.4或更高版本 .......................................................................................... 19
4.2. 在鏡像服務中配置BitTorrent傳輸 ............................................................................................... 19
4.3. 配置BitTorrent傳輸客戶端 ............................................................................................................ 20
4.4. 注意事項 ............................................................................................................................................ 20
4.5. 過程的詳細步驟 ............................................................................................................................... 21
4.6. 參見 .................................................................................................................................................... 21
第5章. 如何使用Flamethrower進行多重安裝 ............................................................................................ 22
5.1. 安裝SystemImager v3.2.x或更高版本 .......................................................................................... 22
5.2. 安裝Flamethrower包和依賴包 ...................................................................................................... 22
5.3. 執行si_getimage, si_mvimage, or si_cpimage ............................................................................... 22
E-mail:[email protected] IV
5.4. 啓動Flamethrower進程 .................................................................................................................. 22
5.5. 讓自動安裝客戶端使用Flamethrower .......................................................................................... 22
5.6. 自動安裝客戶端 ............................................................................................................................... 22
5.7. 過程的詳細步驟 ............................................................................................................................... 22
5.8. 參見 .................................................................................................................................................... 23
第6章. 如何使用OpenSSH進行安全安裝 .................................................................................................. 24
6.1. 使用OpenSSH安全安裝(需要SystemImager v3.8.x或更高版本) ...................................... 24
6.2. 鏡像服務器的配置 ........................................................................................................................... 24
6.3. 客戶端驅動方法 ............................................................................................................................... 24
6.4. 用SSH傳輸配置客戶端(客戶端驅動) .................................................................................... 25
6.5. 服務器驅動方法 ............................................................................................................................... 25
6.6. 配置客戶端使用SSH傳輸(服務器驅動) ................................................................................ 25
6.7. 等待客戶端準備連接SSH .............................................................................................................. 25
第7章. 用SystemImager監控客戶端的安裝 ............................................................................................... 27
7.1. 總攬 .................................................................................................................................................... 27
7.2. 安裝監控服務器 ............................................................................................................................... 27
7.3. 使客戶端發送監控數據 ................................................................................................................... 27
7.4. 疑難解答 ............................................................................................................................................ 27
7.4.1. 沒有顯示客戶端 ................................................................................................................... 27
7.4.2. 沒有X服務器的話看si_monitortk接口... ....................................................................... 28
第8章.通過SystemImager集羣分發配置文件 ............................................................................................. 29
8.1. 安裝Install SystemImager v3.9.4或更高版本 .............................................................................. 29
8.2. 總攬 .................................................................................................................................................... 29
8.3. 定義集羣拓撲.................................................................................................................................... 29
8.4. 例子 .................................................................................................................................................... 29
8.5. 參見 .................................................................................................................................................... 30
第9章. FAQ (常見問題解答) .................................................................................................................... 31
9.1. 參見 .................................................................................................................................................... 38
第10章. 疑難解答 ............................................................................................................................................ 39
10.1. 什麼是“ETHER_SLEEP”變量,什麼時候需要調整它? ........................................................ 39
10.2. si_getimage出現“Failed to retrieve /etc/systemimager/mounted_filesystems from <golden .... 39
10.3. 客戶端自動安裝/更新掛起,崩潰或出奇的慢 .......................................................................... 39
10.4. 我的自動安裝CD不能啓動 ......................................................................................................... 40
10.5. 我的客戶端不能自動安裝,當我手工執行rsync命令,它總是用鏡像服務器回覆 .......... 40
10.6. 客戶端出現這個錯誤:“chroot: cannot execute systemconfigurator: No such file or directory” ..................................................................................................................................................................... 41
10.7. 客戶端成功完成自動安裝進程,但是重啓後出現“Invalid Partition Table”錯誤,然後Linux就起不來了 ................................................................................................................................................ 41
10.8. 參見 .................................................................................................................................................. 41
E-mail:[email protected] V
例子列表 2-1. 生成新的自動安裝腳本............................................................................................................12 3-1. 執行si_mkdhcpserver ................................................................................................................14 3-2. 用“-autoinstall”和“-config”選項執行si_updateclient.............................................................15 3-3. 執行si_getimage.........................................................................................................................15 3-4. si_addclients在/etc/hosts中創建的詞條.....................................................................................19 3-5. 從運行系統的硬盤啓動自動安裝介質....................................................................................20 8-1. 例子 1:向所有節點分發passwd, shadow和group ................................................................35 8-2. 例子 2:分發不同的access.conf給Login和Compute節點......................................................35 8-3. 例子 3:對無權限用戶把第2個登錄節(node002)點關閉.................................................35
10-1. 將SystemConfigurator安裝到鏡像服務器中的鏡像中..........................................................46

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第1章. SystemImager介紹
1.1. SystemImager縱攬
SystemImager,是System Installation Suite的一部份,它能使安裝GNU/Linux,軟件發行,和生產部署自動進行。 SystemImager的一個主要特徵是與發行版本無關並且能支持不同種類的硬件。這允許部署任何種類的GNU/Linux發行版(標準的甚至是自定義的)到任何種類的目標機。這個項目的主要目標是輕鬆地部署大量的計算機。典型的環境包括計算機實驗室和render farms(譯者注:視覺農場,很多大片在後期製作所使用的圖形渲染的工作站,類似於超級計算機),但是它已經被證實了在集羣計算環境中很流行,諸如網格計算和高性能計算。 別一個促進GNU/Linux的發行以及硬件的獨立設計特徵是SystemImager對基於文件的系統鏡像起作用。鏡像被存儲爲目錄體系結構的文件,代表了機器的一個全面的快照,包含機器的根文件系統的所有文件及目錄。鏡像可以以多種方法獲得,包括從標本系統(golden client)獲得,或直接在SystemImager上生成 製作鏡像標準的方法包括克隆一個預裝的機器,golden-client。用這種方法,使用者可以根據他的需求定製並調整golden-client的配置,檢驗它的正常運作,並確保鏡像一旦部署,就會同golden-client一樣的方式運轉。通過同步一個已經更新的golden-client到鏡像使增量更新成爲可能,然後應用命令si_updateclient同步鏡像到部署的機器上。鏡像被作爲主要部分存儲在服務器的中央存儲庫中,稱作image-server,並且應用不同的傳輸方式可以將鏡像在客戶中分發,如:rsync(默認),multicast(通過Flamethrower1),SSL加密rsync(應用SSH tunnel),通過BitTorrent。
1.2. 誰應該使用這個嚮導
這個嚮導是爲在網絡環境中安裝和配置系統的系統管理員準備的。 ? 使用SystemImager的受益者包括: ? 擁有Internet server farms(譯者注:服務器中心,IBM提出的)的機構 ? 管理很多工作站或是服務器的機構 ? 用Linux做超級計算機/集羣的機構 ? 含有基於Linux的複雜的網格計算環境的機構 ? 需要維護大量具有相同配置機器的人 ? 必須自動爲基於Linux的機器預裝軟件過程的生產機構。
1.3. SystemImager如何工作
SystemImager允許你從golden client獲得一個完整系統的鏡像,golden client是手工安裝的、定製的機器,對一個鏡像服務器來說,它是用來保存和分發系統鏡像的機器。可以部署鏡像服務器中鏡像到任何數量的客戶系統中。在初始鏡像部署後,可以通過將系統與更新的鏡像同步來更新客戶系統。更新快速且高效的原因是隻有更改過的部分被客戶端複製過來。
1.3.1. 支持的發行版本
SystemImager應用SystemConfigurator(http://wiki.systemimager.org/index.php/System_Configurator)來爲特殊發行版本自定義配置自動安裝的客戶端。通過SystemConfigurator,SystemImager支持所有主要的GNU/Linux發行版和大部分其它的系統,包括自定義的或是內部發行版。應用”footprints”, SystemConfigurator是通過基於系統配置類型起作用的而不需要知道發行版的名稱。來決定一個系統的footprint,SystemConfigurator識別在
E-mail:[email protected] 2
用的配置文件並將footprint同配置類型結合。然後恰當的安排設置,如主機名或是IP地址,不需要知道發行版的名稱。 因此,幾乎在所有的範圍裏SystemImager與發行版本無關。少數除外,所有發行的具體知識存在於SystemConfigurator工具內,支持很大範圍的發行版。如果你發現一個發行版不能使用SystemImager,請提出bug報告。
1.3.2. 系統需求
? 你的鏡像服務器必須有足夠的硬盤空間來容納將要安裝於你的客戶端系統(默認存儲鏡像的目錄是/var/lib/systemimager/images)的鏡像。 ? 使用相同鏡像的所有的客戶端應該有相同的硬件設備。硬件可以是不同的容量,硬盤大點兒沒問題,太小就有問題了。高級用戶可以修改鏡像中的/etc/systemimager/autoinstallscript.conf文件來調整鏡像,然後用命令si_mkautoinstallscript(8)將鏡像安裝在有不同硬盤或是不同文件系統配置的客戶端中。 ? 對PXE安裝,你需要有一個兼容的TFTP服務器跑在boot服務器上,通常這個機器也作爲鏡像/DHCP服務器。Debian在tftpd-hpa包和atftpd包中提供這樣的服務,而Red Hat 7.0和之後的版本在tftp-server包中含有這個服務。H. Peter Anvin維護的tftp-hpa包提供了必需的功能。 ? 另外對兼容的TFTP服務器,PXE基於network的安裝仍然需要一個PXE守護進程跑在你的鏡像服務器上。這個要求依賴於客戶端的固件和你的DHCP服務器的容量。通常,如果鏡像服務器使用的是一個最近的發行版本,那就沒必要啓動一個PXE的守護進程,因爲最近的DHCP守護進程中包括了PXE的功能。 ? 要正確的安裝boot服務器的話強烈推薦使用si_mkbootserver(8)這個功具。
1.4. 名詞術語
image 源自機器的根文件系統的包含文件和目錄的快照。 鏡像是一個可chroot的文件系統,存儲在/var/lib/systemimager/images/$NAME。 例如: ? /var/lib/systemimager/images/RHEL4/ ? /var/lib/systemimager/images/Ubuntu_7_04/ ? /var/lib/systemimager/images/HPC_1.0/ ? ... override Overrides可以用來管理不同的鏡像。一個典型的應用就是定製一個“vanilla”(譯者注:開源的web論壇軟件)鏡像加入一些額外的包,但是它們通常通過si_pushoverrides(8)命令來存儲和分發配置文件。 Overrides默認被存放在/var/lib/systemimager/overrides/(這個目錄可以在配置文件/etc/systemimager.conf中被修改)。所有的override中所定義的文件和目錄像照現在的樣子被正確的分發,這意味着保存所有的數據和源數據:權限,屬主,時間戳等。 例如: ? /var/lib/systemimager/overrides/RHEL4/ ? /var/lib/systemimager/overrides/Compute_config/ ? /var/lib/systemimager/overrides/HPC_1.0_custom/ ? ... image server
E-mail:[email protected] 3
一個擁有所有image和override的可以用來安裝的服務器。 client 將要被自動安裝(單一)鏡像的機器。 golden client 一個手工安裝,用來取得鏡像來部署客戶端系統的定製過的機器。 transport 用來從鏡像服務器發佈鏡像到客戶端的協議。可以使用不同的方法,取決於特定的傳輸應用:push / pull / p2p / ... 例如:rsync, multicast, rsync over SSH, BitTorrent autoinstall media 媒介是用來啓動一個自動安裝客戶端開始自動安裝過程。自動安裝媒介可以是一個U盤,一個CDROM,網絡(通過PXE),或者自動安裝客戶端的本地硬盤。 autoinstall script 一個或多個同鏡像聯繫起來的腳本,每一個對應一個具體的分區/文件系統/網絡配置。si_getimage(8)命令製作一個初始的自動安裝腳本,以後也能重新生成,使用si_mkautoinstallscript(8)命令,加上不同的選項。自動安裝腳本(也被稱爲“master script”)被自動安裝客戶端下載並執行大部分自動安裝過程。自動安裝腳本的名稱以鏡像名開始,以.master結束。例如:my_webserver_image_v1.master。 si_getimage(8) 在鏡像服務器上執行的一個命令,從golden client將系統鏡像拖過來。 si_prepareclient(8) 這個命令要在鏡像服務器執行si_getimage(8)之前在golden client上先執行。si_prepareclient(8)準備將golden client相關的信息的鏡像取回並創etc/systemimager等目錄,如硬盤分區設置。 si_clusterconfig(8) 管理並顯示SystemImager集羣拓撲的一個工具。通過這個命令可以通知鏡像服務器將哪一個image和override安裝在自動安裝客戶端上。 si_mkdhcpserver(8) 用來生成與SystemImager相應的/etc/dhcpd.conf文件的命令。DHCP可以用來給自動安裝客戶端分配IP。 si_mkdhcpstatic(8) 用來修改/etc/dhcpd.conf文件的命令,基於通過DHCP服務器爲這些客戶端分配IP地址來爲自動安裝客戶端增加靜態入口。 si_mkbootserver(8) 用來爲SystemImager安裝和配置網絡啓動的一個很有用的命令。 si_updateclient(8) 更新或是同步客戶端系統到一個新的或是已經更新了的鏡像的命令,可以分發軟件或目錄。 si_pushoverrides(8) 更新或是保持同步客戶端文件,從鏡像服務器推進由si_clusterconfig(8)定義的override。
E-mail:[email protected] 4
第2章.安裝SystemImager
2.1. 它是如何工作的?
SystemImager使用一箇中央服務器,被稱作鏡像服務器,它取回一個golden client的整個系統鏡像並將其部署到任何不同數量的客戶端系統中。golden client系統是你按照自己的喜好定製的。你可以重新編譯內核,安裝軟件,按你的喜好調整任何配置文件。si_getimage(8)命令將golden client鏡像備份到鏡像服務器中,用來部署其它系統。 一旦你對客戶端系統部署了初始的鏡像,你可以通過將它們與鏡像服務器中更新了的鏡像同步來更新或是升級客戶端系統。出於快速,高效和確保大量更新或是升級,只有更改過的文件被傳到客戶端。 注意:除了SystemImager這種工具可以執行自動化安裝外,像Red Hat的Kickstart,基於預定義的安裝包清單來安裝系統,或者用debootstrap從零開始製作基於Debain的系統。然而,這種基於包的安裝非常有限,因爲它對非安裝包的文件沒有辦法自動化安裝,如果重新編譯內核,加入了一些非安裝包的軟件,或者是更改具體的配置文件,基於包安裝的方法通常要求你做某種腳本或是編程來處理這些“特殊案例”。
2.2. 獲得SystemImager
SystemImager目前以RPM和DEB格式打包。官方軟件包可以從http://www.systemimager.org/ (http://www.systemimager.org)下載。
2.3. 選一個機器作爲鏡像服務器
因爲SystemImager應用其它網絡服務,如DHCP,用一個提供這些服務的服務器來作鏡像服務器通常是一個很好的選擇。另外,你選的鏡像服務器要有足夠的磁盤空間來容納你要部署的鏡像。SystemImager把鏡像存儲爲非壓縮的目錄結構,所以快速分析golden client上的磁盤使用量將會給你一個對鏡像服務器空間需求的很好的估計。如果你計劃做多個同步鏡像更新,爛處理器的性能將會成爲您的鏡像服務器的瓶頸。 另一種可擴展且可靠的用來突破鏡像服務器的帶寬和性能限制的方法就是使用BitTorrent傳輸。應用 BitTorrent,利用點對點網絡的優勢,客戶端上載帶寬可以用來在節點之間分發鏡像。更多的信息參考http://wiki.systemimager.org/index.php/BitTorrent
http://wiki.systemimager.org/index.php/BitTorrent)。
2.4. 安裝一個鏡像服務器
官方SystemImager包在文件發佈系統SourceForge.net上分發,鏈接如下: https://sourceforge.net/project/platformdownload.php?group_id=259
https://sourceforge.net/project/platformdownload.php?group_id=259)。 SystemImager依賴於System Configurator包,這個也可以在SourceForge上獲得: https://sourceforge.net/project/showfiles.php?group_id=24006
https://sourceforge.net/project/showfiles.php?group_id=24006)。 快速下載所有需要的包的方法是執行sis-install腳本(你的客戶端需要是i386架構)。 $ mkdir systemimager $ cd systemimager $ wget http://download.systemimager.org/pub/sis-install/install
E-mail:[email protected] 5
$ chmod u+x install $ ./install -v --download-only --tag stable --directory . \ > systemconfigurator \ &gt; systemimager-client systemimager-common \ &gt; systemimager-i386boot-standard systemimager-i386initrd_template \ &gt; systemimager-server \ &gt; systemimager-bittorrent systemimager-flamethrower 用./install —help 獲得更多信息。 在鏡像服務器中安裝所有基本的包。在基於RPM包發行版中執行: # rpm -ivh systemconfigurator-*.rpm \ &gt; systemimager-common-*.rpm systemimager-server-*.rpm \ &gt; systemimager-*initrd_template-*.rpm systemimager-*boot-standard-*.rpm 在Debian或類似Debian的發行版中執行: # dpkg -i systemconfigurator-*.deb \ &gt; systemimager-common-*.deb systemimager-server-*.deb \ &gt; systemimager-initrd_template-*.deb systemimager-boot-*-standard-*.deb \ 如果你想應用BitTorrent傳輸安裝還要安裝systemimager-bittorrent包。RPM包: # rpm -i systemimager-bittorrent-*.rpm DEB包: # dpkg -i systemimager-bittorrent-*.deb 如果你想多重傳輸安裝還要安裝systemimager-flamethrower包。RPM包: # rpm -i systemimager-flamethrower-*.rpm DEB包: # dpkg -i systemimager-flamethrower-*.deb
這個包要求udpcast(http://udpcast.linux.lu/source.html)和Flamethrower(http://freshmeat.net/projects/flamethrower),通常在一般的發行版中都有。 如果你的客戶端有多種架構還要下載systemimager-ARCHboot-standard和systemimager-ARCHinitrd_template到你的鏡像服務器中。 啓動包支持多種配置。因爲不同的客戶端配置要求不同的驅動,內核版本等,SystemImager允許安裝不同的啓動包,被稱爲 “啓動風格”。 每個SystemImager版本對每個支持的架構提供”標準”風格。例如,3.9.6版本應該有以下這些包: ? systemimager-boot-i386-standard_3.9.6-1_all.deb, ? systemimager-boot-x86_64-standard_3.9.6-1_all.deb, ? systemimager-boot-ppc64-ps3-standard_3.9.6-1_all.deb, ? ...
SystemImager和它的標準啓動風格支持大多數普通硬件的配置。.config文件列出了對這個內核的
E-mail:[email protected] 6
選項。 你可以在任何時候應用其它風格來支持不同的客戶配置,多啓動風格可以同時安裝。
你可以利用UYOK(應用自己的內核)特徵製作一個與發行版本完全兼容的自定義風格。標準的風格應用支持大部分硬件設備的一般用途的內核,但明顯的是它不可能支持所有出現在用戶端(還要看硬件專門的驅動)的設備。由於這個原因,從3.6.x版本UYOK特徵爲被引進。這個特徵允許應用golden client的內核在其它客戶端執行安裝。這個方法理論上支持所有的硬件設備。如果你發行版本的內核在客戶端工作良好的話,安裝也會動作良好。更多信息參考http://wiki.systemimager.org/index.php/UYOK 。
2.5. 選一個機器作爲Golden Client
golden client是你想要用來做成鏡像(克隆)的手工安裝且定製了的系統。
2.6. 在Golden Client上製作鏡像
爲了部署,用SystemImager工具來製作一個鏡像,安裝配置一個Linux發行版,並且你可以讓鏡像系統中包含任何你想要的附加軟件,就像你使用的golden client一樣。你將部署這個系統(或者是golden client)的鏡像到其它的機器上。
2.7. 在Golden Client上安裝SystemImager客戶端軟件
要創建golden client,你必須安裝systemimager-client包。 1.下載安裝systemimager-client包 $ mkdir systemimager $ cd systemimager $ wget http://download.systemimager.org/pub/sis-install/install $ chmod u+x install $ ./install -v --download-only --tag stable --directory . \ &gt; systemconfigurator \ &gt; systemimager-client systemimager-common \ &gt; systemimager-i386initrd_template 用./install —help獲得更多的信息。 在鏡像服務器中安裝所有的基礎軟件包,在基於RPM的發行版中執行: # rpm -ivh systemconfigurator-*.rpm \ &gt; systemimager-common-*.rpm systemimager-client-*.rpm \ &gt; systemimager-*initrd_template-*.rpm 在Debian或類似Debian的發行版中執行: # dpkg -i systemconfigurator-*.deb \ &gt; systemimager-common-*.deb systemimager-client-*.deb \ &gt; systemimager-initrd_template-*.deb
2.8. 從零開始製作鏡像
E-mail:[email protected] 7
另一個製作鏡像的方法是將所有需要的軟件安裝一個目錄中。
System Installer,是System Installation Suite的一個組件,屬於SystemImager,允許你直接將Linux安裝到一個鏡像中,繞過golden client這一步。System Installer包和文檔可以從http://systeminstaller.sourceforge.net 找到。用SystemInstaller製作鏡像可以同用SystemImager工具製作的互換。你甚至可以應用發行版中的一個普通工具製作鏡像,而不用SystemInstaller。這個工具必需能將一個發行版安裝到一個目錄中(如Debain的Debootstrap,Red Hat的kickstart或yum,SuSE的YaST等)。
2.9. 升級SystemImager
雖然大多數方法中SystemImager的升級是自動的,但你必需手工執行一些升級過程來防止丟失用戶的定製。
2.9.1. 重新生成自動化安裝腳本
對每一個SystemImager版本,用si_mkautoinstallscript命令更新自動安裝腳本,它存儲在/var/lib/systemimager/scripts中。用舊的腳本可能出問題。
例子 2-1. 生成新的自動安裝腳本 # si_mkautoinstallscript -image myimage -post-install reboot -ip-assignment dhcp 如果你要定製你的自動化腳本,編輯目錄/var/lib/systemimager/scripts/中恰當的.master文件。
2.9.2. 移植自定義文件/etc/systemimager/rsyncd.conf到SystemImager 3.0.0
在SystemImager 3.0.0版本之前,對/etc/systemimager/rsyncd.conf文件的更改可以直接寫到文件中,但是升級容易出現問題。對3.0.0版本可以在一個保存整個升級的獨立文件中更改。更多細節看si_mkrsyncd_conf(8)的man page。
2.9.3. 重新生成啓動媒介
每次升級Systemimager,你還必需升級用來啓動自動安裝系統的啓動介質。用si_mkautoinstallcd或者si_mkautoinstalldisk重新生成可移動媒介。
2.9.4. 二進制tar包發生了什麼?
SystemImager 3.0.0不贊成二進制tar包版本並且引入了啓動包特徵,要求SystemImager系統的不同組件有相同種類的版本控制。不依賴於包管理系統,版本控制需要做出重大努力,所以SystemImager 3.0.0不支持沒有打包的二進制。 然而,基於make構建的系統,可以執行像install_server_all這樣的命令等,這是在沒有用包管理器安裝時的首選方法,雖然你需要手工找出所有的安裝依賴性和執行依賴性。
警告 si_mkautoinstallscript重寫了先前鏡像存在的腳本。如果你對自動安裝腳本(也被稱做.master腳本)做了任何更改,備份這些腳本來推進移植更改的新版本。
E-mail:[email protected] 8
第3章. 使用SystemImager
3.1. 安裝過程縱攬
1. 應用第二章的介召,在選來做鏡像服務器的機器上安裝SystemImager服務器軟件包。 2. 在golden client上安裝GNU/Linux並按需求定製。 3. 應用第二章的介召,在golden client中安裝SystemImager客戶端軟件。 4. 在golden client中執行si_prepareclient命令。 5. 對自動安裝客戶端選擇並配置分配IP地址的方法。這些信息在下一步的si_getimage命令中需要;當然,以後可以通過執行si_mkautoinstallscript命令來更改這些設置。 6. 在鏡像服務器執行si_getimage命令將golden client複製到鏡像服務器。 7. 執行si_clusterconfig -e來定義客戶組並分配鏡像和override給用戶組。si_clusterconfig命令在SystemImager 3.9.4之後的版本中可用。 否則的話可以用命令si_addclients(看一下點)將客戶端與鏡像聯繫起來。 8. 如果使用si_clusterconfig的話這步可以跳過去。否則的話在鏡像服務器上執行si_addclients來告知哪個客戶端將會接收到什麼樣的鏡像並填寫鏡像服務器的/etc/hosts和/var/lib/systemimager/scripts/hosts文件。 9. 爲你的客戶端生成一個啓動介質。自動安裝有四種方法來啓動你的客戶端: ? 從網絡啓動(PXE)--見si_mkclientnetboot(8) ? 從自動安裝CD啓動--見si_mkautoinstallcd(8) ? 從自動安裝盤啓動(USB設備或內置磁盤)--見si_mkautoinstalldisk(8) ? 從一個運行的系統啓動--見si_updateclient(8) 10. 用一個(或多個)生成的啓動媒介在其它機器上自動安裝鏡像。 注意: 工具的詳細描述及功能見這章的SystemImager工具選擇部分。
3.1.1. 安裝詳細說明
1. 應用第二章的說明將SystemImager服務包安裝在你選來做鏡像服務器的機器中。 2. 在golden client上安裝Linux並按需要定製。記住,你安裝的軟件將最終將構成給其它節點進行安裝的鏡像。第一次不要過多考慮完全正確,可以很輕鬆的用SystemImager對鏡像進行增量更改或是部署這些變更而不用重新安裝。 3. 應用第二章的說明,在golden client上安裝SystemImager客戶端軟件。 4. 在golden client上,以root執行si_prepareclient命令。這會在/etc/systemimager目錄下生成許多文件,其中包含分區方案,文件系統類型等。si_prepareclient也會啓動一個rsync進程來讓這些文件傳輸到服務器上。golden client已經準備好了將它的鏡像放入鏡像服務器中。
警告 如果你用的不是ssh模式,golden client上所有的文件對於網絡中的任何人都可以公開查閱的。一旦將鏡像從golden client中複製過來後,rsync進程將會自動停止。取回鏡像的過程中萬一出現問題,一定要通過手工殺死進行程或重啓golden client確保rsync進程停止。重新啓動後,rsync服務不會自動開啓。在rsync over SSH模式中,rsync通過在鏡像服務器到golden client上打開SSH隧道進行交流。
E-mail:[email protected] 9
5. 爲自動安裝客戶端選擇並配置分配IP地址的方法。最常用的給客戶端分配IP的方法是DHCP。爲了簡化DHCP配置文件(/etc/dhcpd.conf),SystemImager引入了一個叫si_mkdhcpserver的工具。這個工具會詢問它需要的所有信息來創建適合SystemImager安裝的DHCP配置文件。安裝完,客戶端已經啓動並收到IP地址後,在正進行的基礎上通過執行si_mkdhcpstatic命令,用DHCP來爲客戶分配靜態IP地址。si_mkdhcpstatic會更改鏡像服務器上的/etc/dhcpd.conf文件,包括每個主機的靜態入口。
另外,你可以將主機名,鏡像服務器,網絡信息,通過安裝參數,以變量=值的形式寫入。安裝參數可以在/etc/systemimager/pxelinux.cfg/syslinux.cfg中定義或是用附加“STRING”方式作爲si_mkautoinstalldisk,si_mkautoinstallcd,或 si_mkclientnetboot的參數傳遞。更詳細的安裝參數請參見http://wiki.systemimager.org/index.php/Installation_Parameters(http://wiki.systemimager.org/index.php/Installation_Parameters)。 或者,如果應用正在運行的系統的硬件設備做爲啓動媒介,可以執行si_updateclient -autoinstall -server <imageserver> -configure-from eth0,在包括現有網絡設置的用戶硬件設備的根中生成local.cfg文件。當自動安裝客戶端啓動時,它會找這個文件並應用提供的值代替從鏡像服務器中的DHCP和/var/lib/systemimager/scripts/hosts文件中獲得的值。 例如 3-1. 執行si_mkdhcpserver [root@imageserver]# si_mkdhcpserver 例如 3-2. 用“-autoinstall”和“-config”選項執行si_updateclient 注意選項-autoinstall,-server和-configure-from可以縮寫成-a,-s和-c。可以將SystemImager的命令選項縮寫成唯一的最小形式。唯一的最小形式即如果一個命令的兩個選項相同,如命令si_getimage的選項-image和-ip-assignment可以縮寫成-im和-ip。 [root@server7]# si_updateclient -a -s imageserver -c eth0 Retrieving SystemImager kernel... Retrieving SystemImager initial ramdisk... Adding SystemImager entry in /etc/lilo.conf... running /sbin/lilo -d 50 -D systemimager ... Ignoring entry ’delay’ Ignoring entry ’default’ Added linux Added systemimager * <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Below are the contents of your /local.cfg file. Make sure that all the variables are filled in and that they contain the proper values. You may edit the file directly if you need to change any of the values. <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; # # “SystemImager” # # Copyright (C) 1999-2002 Bald Guy Software <[email protected]> # # This file is: /local.cfg
E-mail:[email protected] 10
# HOSTNAME=server7 DOMAINNAME=mydomain.com DEVICE=eth0 IPADDR=192.168.1.7 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.254 GATEWAYDEV=eth0 IMAGESERVER=192.168.1.203 6. 在鏡像服務器上執行si_getimage,將鏡像從golden client複製到鏡像服務器。應用si_getimage,鏡像服務器從客戶文件系統的根目錄將所有文件及目錄備份成鏡像存放於/var/lib/systemimager/images中。 基本的語法是:“si_getimage -golden-client [client_hostname] -image [image_name]” 其中[client_hostname]是golden client的主機名或IP地址,[image_name]是你想要給存儲鏡像的名稱。可以用“man si_getimage”查看更多其它的選項。 例如 3-3. 執行si_getimage [root@imageserver]# si_getimage -golden-client my-golden-client \ &gt; -image web_server_image_v1 si_getimage與golden client聯繫並請求它的/etc/systemimager/mounted_filesystems文件,其中包括掛載了的文件系統和它們的掛載點。si_getimage排除文件系統中不支持的掛載點並創建一個排除清單。目前SystemImager支持的文件系統有ext2,ext3,reiserfs,xfs,jfs和vfat。其它的文件系統將被忽略,包括proc,nfs,devpts,iso9660等。 7. 執行si_clusterconfig管理SystemImager數據庫中的客戶組。si_clusterconfig也可以用來顯示屬於每組客戶名單的定義組。在顯示模式,命令接受主機名稱,主機範圍,或主機組作爲參數,它在等效主機名單中解析並將它們打印到標準輸出。編輯模式可以是互動的(-e選項)或批處理的(-u選項)。在互動的編輯模式下,si_clusterconfig在終端打開一個編輯器,用XML語法可以更改客戶組的定義和它們的屬性。在批處理編輯模式中它僅剖析預定義的XML配置(/etc/systemimager/cluster.xml)並刷新SystemImager的內部配置文件。
這是一個很受好評的集羣例子: <?xml version=’1.0’ standalone=’yes’?>
警告 不要直接編輯/etc/systemimager/cluster.xml。應用si_clusterconfig -e來確保安裝進程需要的所有文件嚴格的同步。
E-mail:[email protected] 11
<!-- ********************************* WARNING ************************************** This file has been generated by si_clusterconfig(8), do not edit manually! ********************************* WARNING ************************************** This is the main configuration file to describe the topology of your clients and your image server informations. This file will be used by all the SystemImager commands to identify the logical groups of your clients and their specific configurations. See comments below for more details. --> <xml> <!-- The image server hostname. --> <master>master1</master> <!-- This is the global name: this name will be used to identify all the hosts defined in this file (the global supergroup). IMPORTANT: this is a mandatory entry!!! --> <name>all</name> <!-- This is the global override: all the files stored in this overrides will be pushed to all the clients. IMPORTANT: this is a mandatory entry!!! If you don’t want to use it do not create the global override in /var/lib/systemimager/overrides/ Multiple overrides can be specified as a list of multiple XML tags: &lt;override>OVERRIDE_NAME_1</override> <override>OVERRIDE_NAME_2</override> ... <override>OVERRIDE_NAME_N</override> The OVERRIDE_NAME_1 ... OVERRIDE_NAME_N will be distributed preserving the same order as they appear in the XML file. This means that in case of file overlaps (more files in multiple overrides that should be distributed to the same target filename) the first hit wins. In this case OVERRIDE_NAME_1 is the most important and OVERRIDE_NAME_N is the least important. --&gt; <override>all</override> <!-- Following there is an example of a “fake” group. The group name is “Local”, it uses the image “Local”, the override in /var/lib/systemimager/overrides/Local and it contains only the localhost server. Totally useless, but it’s there to explain how it works... ;-)
E-mail:[email protected] 12
--> <group> <name>Local</name> <image>Local</image> <override>Local</override> <node>localhost</node> </group> <!-- This is a group that contains two nodes: node001 and node002. The group is called “Login” and it uses the override: The clients node001 and node002 will be auto-installed using the image: /var/lib/systemimager/images/SuSE10 And the override: /var/lib/systemimager/overrides/SuSE10_frontend After the initial installation it will be possible to keep in sync the common files for the Login group creating them into the “SuSE10_frontend” override and using the command si_pushoverride(8). It will be even possible to define host-only files creating an override using the hostname of the target client. For example all the files in /var/lib/systemimager/overrides/node001 will be distributed only to node001 (and in case of overlaps these files will replace the files that come from the group override and from the global override). --> <group> <name>Login</name> <!-- If a client belongs to multiple groups, the group with the higher priority will be used to choose the image for that client; for the overrides the groups will be sorted by group priority: in case of file overlaps first hit wins. In this example node001, that belongs to the group Login and Storage, will be auto-installed with the image SuSE10 and it’ll receive the overrides in the following order (remember that in case of file overlaps first hit wins): SuSE10_frontend, SuSE10, Storage --> <priority>10</priority> <image>SuSE10</image>
E-mail:[email protected] 13
<!-- Also a group can have multiple overrides. The same rules for multiple values of the global overrides are valid also here. --> <override>SuSE10_frontend</override> <override>SuSE10</override> <node>node001,node002</node> </group> <!-- Another example. The group Storage contains 16 nodes (from node1293 up to node1308). They will be auto-installed using the image: /var/lib/systemimager/images/RHEL4 And the override: /var/lib/systemimager/overrides/Storage In general the best practice is to use the same name for the override and the group name (like this group). --> <group> <name>Storage</name> <priority>20</priority> <image>RHEL4</image> <override>Storage</override> <node>node001,node1293-node1308</node> </group> <!-- Define your custom groups below (and remember to remove or comment the previous entries if you don’t want to use them). ... --> </xml> 8. si_addclients爲每一個指定的自動安裝客戶端分配鏡像的master腳本創建一個符號鏈接。si_addclients也填寫鏡像服務器的/etc/hosts和/var/lib/systemimager/scripts/hosts文件。hosts文件爲自動安裝客戶端查閱他們的主機名提供默認的機制。
警告 如果你使用前一點中所提出的si_clusterconfig方法則可以跳過si_addclients這一步。
E-mail:[email protected] 14
當si_addclients不加參數執行時,你需要三個配置屏幕來交互。
a. 在si_addclients的第一個配置屏幕,需要指出自動安裝客戶端主機名稱樣式。一個主機範圍的字符串和一個域名服務器來定義自動安裝客戶端主機名。例如,如果你選擇”systemimager.org”做爲你的域名,”www07-www11,www20”作爲範圍,你將定義如下的自動安裝客戶端。
www07.systemimager.org www08.systemimager.org www09.systemimager.org www10.systemimager.org www11.systemimager.org www20.systemimager.org b. 在第二個配置屏幕,將第一部分寫定義的客戶端映射到到一個鏡像。 Note:注意:si_addclients的每一個援引可以將客戶單一的範圍映射到一個鏡像。如果想將不同的客戶端範圍映射到不同的鏡像,必需多次執行si_addclients命令。 c. 在第三個配置屏幕,si_addclients命令要求一個IP地址範圍,這個IP存在於/etc/hosts和 /var/lib/systemimager/scripts/hosts文件中。當自動安裝客戶端啓動時,它會從鏡像服務器中檢索後面的文件並應用它查找主機名。如果這一步失敗了,客戶端將會進行反向域名查找。如果有配置每一個自動安裝客戶端的RTP記錄,可以跳過第三個配置這步;然而,爲了系統更健壯推薦完成這一步。 例如 3-4. si_addclients在/etc/hosts中創建的詞條 如果給si_addclients的IP範圍“192.168.1.1-192.168.1.99”,主機名範圍“server1-server99”,域名“mydomain.com”,則會創建如下的/etc/hosts文件: 192.168.1.1 server1.mydomain.com server1 192.168.1.2 server2.mydomain.com server2 192.168.1.3 server3.mydomain.com server3 192.168.1.4 server4.mydomain.com server4 192.168.1.5 server5.mydomain.com server5 192.168.1.6 server6.mydomain.com server6 192.168.1.7 server7.mydomain.com server7 192.168.1.8 server8.mydomain.com server8 192.168.1.9 server9.mydomain.com server9 192.168.1.10 server10.mydomain.com server10 192.168.1.11 server11.mydomain.com server11 [ ... etc, etc, etc ... ] 192.168.1.97 server97.mydomain.com server97 192.168.1.98 server98.mydomain.com server98 192.168.1.99 server99.mydomain.com server99 9. 創建啓動媒介自動安裝客戶端 可以用四種方法來自動安裝客戶端:
E-mail:[email protected] 15
? 從USB磁盤或內置磁盤啓動。 執行si_mkautoinstalldisk來創建一個其它機器都可以用的自動安裝USB設備(或一個通用磁盤)。 ? 從CDROM啓動系統。 執行si_mkautoinstallcd來創建一個可以燒錄到CDROM中的ISO鏡像。可以用CDROM啓動自動安裝客戶端並在其它機器中使用它。 ? 從一個運行的系統自動安裝鏡像。 如果客戶端已經運行GNU/Linux,可以簡單的執行si_updateclient命令並用-autoinstall選項。 例如 3-5. 從運行系統的硬盤啓動自動安裝介質 [root@server7]# si_updateclient -a -s imageserver -c eth0 ? 從網絡啓動系統。如果可以從網絡啓動,以應用PXE爲例,可以不同本地介質啓動自動安裝。 PXE通常可以從BIOS中設置。啓動可能不穩定且客戶端固件不一至。 SystemImager的si_mkbootserver用來配置PXE服務器。si_mkbootserver的執行是一個交互的過程。它會創建一個tftproot目錄,配置tftp服務器,並執行一些測試看看功能是否正常。一旦si_mkbootserver檢測出錯誤,它會宣告失敗並生成錯誤日誌。更正錯誤後,可以重新執行si_mkbootserver,不斷重複這個過程直到成功。si_mkbootserver很可以不會在所有的PXE客戶端正常工作,如果在你的配置下它不能正常工作,請發郵件至[email protected](mailto:[email protected])。 ? 在現是時候來在客戶端安裝鏡像了,用生成的介質來啓動它並等待完成自動安裝。
3.1.2. SystemImager工具
3.1.2.1. si_prepareclient命令
? 在配置完golden client,執行si_prepareclient命令會將你硬盤的信息一併生成文件存放到/etc/systemimager/autoinstallscript中。 ? si_prepareclient也會分創建一個臨時的rsync(1)配置文件(在/tmp中)並在服務模式(rsync —daemon)下開始rsync。這一步服務器端可以將從客戶端取得鏡像,golden client重啓之後並不會重啓rsync進程,避免通過rsync從共享的golden client的根文件系統引起安全問題。一旦鏡像成功的從golden client上獲得,rsync進程會自動停止。
3.1.2.2. si_getimage命令
? 執行si_prepareclient之後,在鏡像服務器中執行si_getimage命令。例如:si_getimage -golden-client 192.168.1.1 -image my_webserver_image_v1。 ? si_getimage聯繫golden client並請求/etc/systemimager/mounted_filesystems文件,其中包含掛載文件系統的清單和掛載的設備。它排除文件系統中不支持的掛載點並創建一個排除清單。目前SystemImager支持的文件系統有ext2,ext3,reiserfs,xfs,jfs和vfat。不支持其它的文件系統,包括proc,nfs,devpts,iso9660等。 ? 之後通過連接運行的golden client中的rsync進程,si_getimage獲得golden client的完整的系統鏡像,除了在排除清單中的文件系統。客戶端所有的文件將被複制過來,在鏡像目錄中重新創建文件和目錄結構。
E-mail:[email protected] 16
? 通過指定一個現有鏡像名稱,可以用si_getimage更新現有鏡像。例如:si_getimage -golden-client 192.168.1.1. -image <imagename>。然後si_getimage更新鏡像來匹配golden client中的文件。做這步時,只有不同的文件會被複制。在老鏡像中存在的文件卻不在golden client中的將會被刪除,golden client和鏡像中都有的文件如果有改動的話也會更新。然而,這個方法是基於鏡像對鏡像的修正控制,並不是基於一行行跟蹤修正不同的文件。推薦的方法是不要覆蓋現存的可用鏡像。基於鏡像對鏡像的修正控制在si_updateclient命令中也可用。默認所有的鏡像存儲在/var/lib/systemimager/images/的文件夾中,在具有鏡像名字的目錄裏。例如: ? /var/lib/systemimager/images/my_webserver_image_v1/ ? /var/lib/systemimager/images/my_webserver_image_v2/ ? /var/lib/systemimager/images/my_webserver_image_HEAD/ ? ...
3.1.2.3. 自動執行腳本
? 在鏡像服務器中以命令si_getimage將獲得了的文件存入鏡像目錄後,它創建一個用來定製鏡像的自動安裝腳本。在這個例子中自定義安裝腳本叫做“my_webserver_image_v1.master”。腳本存放於/var/lib/systemimager/scripts目錄。 ? si_prepareclient命令留下的磁盤分區信息中增加需要的命令可重新對自動安裝客戶端磁盤分區。 ?從鏡像中/etc/systemimager/autoinstallscript.conf文件獲得的文件系統信息(例如/var/lib/systemimager/images/my_webserver_image_v1 /etc/systemimager/autoinstallscript.conf)用來決定適當創建文件系統的命令並且決定自動安裝過程的掛載點。網絡信息被加入到基於命令行的選項傳遞給si_getimage的自動安裝腳本中或者它提示你的信息。在自動安裝可程中信息以不同的形式加進來,正如自動化安裝腳本將會決定一些參數的值,如主機名和IP地址。
3.1.2.4. si_addclients命令和si_clusterconfig命令
? 執行完si_getimage命令,執行si_clusterconfig命令,會打開一個交互式編輯器,可以在其中將你的客戶組同鏡像進行捆綁限定。 si_addclients命令可以完成同樣的操作,它要求你將安裝的主機名範圍,但是它沒有主機組這個概念,所以要指定一個主機範圍或唯一主機名(si_clusterconfig命令也可以執行)。si_addclients提示選擇將要安裝到這些主機中的鏡像併爲每個主機名創建指向鏡像的master自動安裝腳本的符號鏈接。例如:”www3.sh -&gt; web_server_image_v1.master” 如果鏡像更新了你也以用si_getimage來更新master自動安裝腳本。則每個聯繫的軟鏈接會指向更新的自動安裝腳本。如果主機需要獨立的配置,主機的軟鏈接可以刪除掉並用可以對主機進行定製的master自動安裝腳本替換。定製是手工過程並且要系統管理員來做,強烈建議限制手工定製,在打開新的bug前要反覆檢查。
3.1.2.5. 附加安裝信息
警告 命令si_addclients做的配置可以覆蓋si_clusterconfig命令的配置。爲了排除未預料到的問題強烈建議只用si_clusterconfig命令,明顯這是可行的(這意味着使用SystemImager 3.9.4或高級版本)。
E-mail:[email protected] 17
? 自動化安裝過程靈活且幾乎可以在任何硬件下執行。也很容易更改適應新的或是指定的硬件。一個小型的Linux發行版叫做Brian’s Own Embedded Linux (BOEL)用來自動安裝。它包含了定製的內核和只包括指定的命令和執行安裝必需功能的外部ram磁盤。相同內核及初始化ram盤(initrd.img)可以用來從USB磁盤,CDROM,網絡或其它運行的Linux系統的本地硬盤中啓動。si_mkautoinstalldisk命令和si_mkautoinstallcd命令需要syslinux(2)功能來創建啓動SystemImager內核和初始化ram盤的磁盤和CDROM。pxelinux(2),syslinux的姊妹工具,用相同的內核和初始化ram盤從網絡啓動支持PXE功能的機器。 syslinux和pxelinux都需要配置文件,SystemImager處理後可以讓這兩個工具使用一個配置文件。 ? The 標準的自動安裝內核包括大部份系統所需要的驅動。可以使用UYOK特徵生成定製內核來滿足指定的磁盤和網絡驅動需求。用UYOK並生成golden client的kernel+initrd.img執行下面的命令: # si_prepareclient --server servername --no-rsyncd --my-modules initrd.img將在進行中從initrd_template包(例如systemimager-i386initrd_template)中生成。如果你指定了—no-rsyncd參數,rsync會重啓。用—my-modules參數在UYOK initrd可以節省很大空間,因爲只有目前golden client中加載的模塊被包含進來。沒有—my-modules參數則所有可用的模塊都會被加入到initrd中,允許你的UYOK kernel+initrd.img應用在不同的客戶端。如果一切進行順利,可以在你的golden client中/etc/systemimager/boot/找到UYOK kernel+initrd.img。從鏡像服務器上執行si_getimage(這樣的話不用指定—no-rsyncd),UYOK kerne和initrd.img將被傳到鏡像服務器的/usr/share/systemimager/boot/<arch>/<name_of_your_image>。總的來說,如果有不同的環境(客戶端有不同的硬件和組件),最好使用標準的BOEL kernel+initrd,因爲標準的內核爲了獲得最佳表現而進行了大力的優化。其它情況,特別是你有3rd-party(譯者注:第三方軟件)或定製內核模塊,強烈推薦使用UYOK。 ? 一旦內核已經啓動,它掛載初始化ram盤作爲它的根文件系統。然後內核在已經寫入的ram盤中執行初始化腳本來做SystemImager的具體任務。這個腳本使用一個配置文件(/local.cfg),安裝參數(由內核啓動選項傳遞,完整的且最新的安裝參數清單見http://wiki.systemimager.org/index.php/Installation_Parameters),或者是與DHCP關聯和從鏡像服務器獲得的用來確定自動安裝客戶端IP地址和主機名信息的/var/lib/systemimager/scripts文件。 如果使用了DHCP,客戶端通過解析從鏡像服務器中檢索的hosts文件來找到它的IP地址並確定它的主機名。最終,客戶端基於它的主機名從鏡像服務器檢索一個自動安裝腳本並執行它。自動安裝腳本是鏡像指定的,決定客戶端會檢索到哪一個鏡像。下面是摘要:IP地址-&gt;主機名-&gt;鏡像,具體的自動安裝腳本按主機名命名。
3.1.2.6. 如何更新鏡像
? 如果要更新鏡像服務器中的鏡像,可以下面的兩個方法之一: 1. 直接在鏡像目錄中編輯。這樣做最好的方法是chroot到鏡像的目錄。然後可以把鏡像當成運行的機器一樣來處理。甚至可以用apt-get,aptitude或者RPM和yum來安裝軟件包。 2. 再次執行si_getimage命令,指定一個已經按照需求更改過的golden client。只有被更改過的文件會被複制過來。 golden client中刪除的東西同樣也會在鏡像中刪除。可以選擇更新(推薦)鏡像的master自動安裝腳本或保留原樣。執行i_getimage的好處是可以覈實golden client 新的配置及master自動化安裝腳本被更新了。
E-mail:[email protected] 18
? 一旦系統已經自動安裝,可以用si_updateclient更新客戶端系統來匹配新的或已更新鏡像服務器中的鏡像。例如,你已經安裝了你公司的300臺web服務器,第二天出了一個安全補丁,你可以簡單地更新鏡像服務器中的鏡像並在每一個web服務器上執行si_updateclient。只有更改過的文件被複制,這樣你的站點很快打完補丁。可以創建一個有新版本號的鏡像,這就有了一種形式的修正控制。這樣,如果你發現打的補丁破壞了整個web farm的話,可以簡單地執行si_updateclient恢復到上一個可以正常工作的鏡像。
? 也可以加-autoinstall選項用si_updateclient命令來複制自動安裝內核和初始化ram盤到正在運行的自動安裝客戶端的本地硬盤中,但是用這種方法的話鏡像需要重新部署。si_updateclient隨後更改boot-loader配置來爲新的內核和初始化ram盤包括一個恰當的條目,並使這個新的內核成爲默認的。下次客戶端電腦啓動時,加載SystemImager內核與初始化ram盤,開始自動安裝過程。因此可以遠程部署任何運行的Linux機器而不用插入額外的CD或USB磁盤,對某些有問題的BIOS,也不用重新配置BIOS來啓動網絡。
警告 建議在任何情況下通過si_updateclient執行更新前停止機器中的生產任務,因爲正在執行的應用程序可能會阻止更新或當應用程序正在使用時把它刪掉。
E-mail:[email protected] 19
第4章. 如何使用BitTorrent進行點對點安裝
4.1. 安裝SystemImager v3.7.4或更高版本
下面的幾步詳細地描述了安裝部分。
4.2. 在鏡像服務中配置BitTorrent傳輸
打開文件/etc/systemimager/bittorrent.conf確認配置,特別檢查下面的參數: ? BT_INTERFACE=ethi 必須是連到客戶節點的正確接口, ? BT_IMAGES=image1,image2,...,imageN 必須包含要通過BT分發的鏡像列表,用逗號分隔 ? BT_OVERRIDES=override1,override2,...,overrideM 必須包含要通過BT分發的override列表(可以通過BT分發一個鏡像並用rsync或vice-versa分發一個override), 用逗號分隔 ? BT_UPDATE=y|n 置y將在鏡像服務器的守護進程每次重啓時強制BT數據與鏡像及override內容同步, ? BT_COMPRESS=y|n 置y將在部署(僅當你的鏡像服務器非常強大時才用這個選項,特別是用較新的CPU)之前把鏡像和override進行壓縮(用gzip)。 下面是一個典型的配置,用override部署兩個鏡像(suse10和suse10_frontend) # # “SystemImager” # # Copyright (C) 2006 Andrea Righi <[email protected]> # # $Id: bittorrent.conf 3533 2006-04-24 20:25:59Z bli $ # # The bittorrent tracker port. BT_TRACKER_PORT=6969 # Tracker state file. BT_TRACKER_STATE=/tmp/dstate # Tracker log file. BT_TRACKER_LOG=/var/log/systemimager/bittorrent-tracker.log # Interface used to seed files with bittorrent. BT_INTERFACE=eth0 # Set to yes if you want to compress the images before distributing # them via BitTorrent. Set to ’n’ if the image server has an old CPU or # is not powerful in computations. # # Allowed values: y|n BT_COMPRESS=y # Set to yes if you want to always synchronize the BitTorrent images # with the chrootable images on /var/lib/systemimager/images when the # SystemImager BitTorrent daemon starts. # # Allowed values: y|n
E-mail:[email protected] 20
BT_UPDATE=n # Comma separated list of images to distribute with BitTorrent # (ex. BT_IMAGES=RHEL4_base,suse10,frontend,backend...) # IMPORTANT: no spaces between images!!! BT_IMAGES=suse10,suse10_frontend # Comma separated list of overrides to distribute with BitTorrent # (ex. BT_OVERRIDES=RHEL4_base,suse10,frontend,backend...) # IMPORTANT: no spaces between overrides!!! BT_OVERRIDES=suse10,suse10_frontend
4.3. 配置BitTorrent傳輸客戶端
爲了讓客戶端能使用BT傳輸,需要指定啓動參數BITTORRENT=y。可以通過在/etc/systemimager/pxelinux.cfg/syslinux.cfg文件中的內核啓動字符串後加上這個選項或者是在命令行通過—append選項來傳遞(si_mkclientnetboot,si_mkautoinstallcd,si_mkautoinstalldisk)。這有一個典型的syslinux.cfg配置可以讓所有的客戶端使用BT傳輸進行自動安裝。 DEFAULT systemimager # # Uncomment next line to send pxelinux boot prompt over serial port 0. # NOTE: Be sure your serial port speed is appropriate (57600, 9600, etc.) # #SERIAL 0 57600 DISPLAY message.txt PROMPT 1 TIMEOUT 50 # Add the following to the append line above to use your first serial port # (ttyS0) as a console in addition to your monitor (tty0). NOTE: Be sure # your serial port speed is appropriate (57600, 9600, etc.) # #console=ttyS0,57600 # Add the following to the append line above to increase the size of your tmpfs # filesystem. About 100MB larger than your image size should suffice. # # Other tmpfs mount options are also supported. See the FAQ for details. #tmpfs_size=800M LABEL systemimager KERNEL kernel APPEND vga=extended initrd=initrd.img root=/dev/ram BITTORRENT=y MONITOR_SERVER=172.16.36.1 最後一步包括用適當的自動安裝啓動介質啓動客戶端並享用BT進行自動安裝。
4.4. 注意事項
E-mail:[email protected] 21
只需要更改/etc/systemimager/bittorrent.conf文件中的BT_UPDATE=y,然後重啓BT進程。 # /etc/init.d/systemimager-server-bittorrent restart 如果並不想對每一個重啓的守護進程重構庫的話可以改成BT_UPDATE=n。 加速服務器端的進程,可以刪除鏡像的tar包和種子,來代替在配置文件中設置BT_UPDATE=y。這種情況下重啓BT進程會重新創建單一鏡像的tar包和種子。
4.5. 過程的詳細步驟
1. 通過/etc/init.d/systemimager-server-bittorrent start命令在鏡像服務器啓動BT跟蹤。跟蹤器准許所有種子發佈,種子存放在目錄/var/lib/systemimager/torrents中。下一步會創建鏡像需要的種子。 2. BT協議設計用來傳輸常規文件和目錄,但是不能用來傳輸UNIX源數據(metadata)和特殊文件(例如/dev/)。因此將所有鏡像中的文件映射成常規文件是必要的。在systemimager-server-bittorrent啓動期間,SystemImager爲每一個通過傳輸來分發的鏡像和override創建一個tar包和一個”.torrent”文件。tar包存儲於/var/lib/systemimager/tarballs,”.torrent”存儲於/var/lib/systemimager/torrents。 3. tar包和種子創建後,第一個傳播者通過/etc/init.d/systemimager-server-bittorrent腳本在鏡像服務器上啓動(在跟蹤器之後)。第一個傳播是者擁有所有從頭開始分發到其它節點的文件塊的唯一節點。在鏡像過程的第一個階段它構成唯一的瓶頸(就像服務器--客戶端的方法),但是當數據塊的第一塊分發到一些節點(節點設置)後,它們開始共同工作,執行點對點網絡的優勢並從負載釋放鏡像服務器。用這種方法,在這個傳輸階段後,鏡像服務器成爲集羣中另一個節點,將不再是瓶頸。 4. 客戶端同包括BT客戶端的啓動包(kernel + initrd.img)啓動。客戶端的第一步是下載需要的種子。這個可以通過rsync協議(相對於鏡像來說種子是非常小的,這並是說測量上有問題,同樣有大量用戶在同一時間下載)。 5. 客戶端需要種子時他們可以用BT下載他們需要的。最初通過BT下載的文件是BOEL二進制(以tar包分發,下載後在客戶端解壓)。在整個自動安裝過程中,客戶端繼續傳播(上傳)BOEL二進制tar包,當解壓完畢,把它們上載帶寬給新的客戶端。 6. 下載BOEL二進制tar包並初始化第一個系統後,便開始通過BT下載鏡像tar包了,這與BOEL二進制分發同樣操作。 7. 在客戶端文件系統中解壓tar包。解壓期間,客戶端仍然作爲tar包的傳播者(上傳者)。解壓完畢,客戶端主機將刪除鏡像的tar包且BT客戶端也停止。 8. override以同樣的方式下載。 9. 客戶端重啓,按照安裝後的執行。
4.6. 參見
見http://wiki.systemimager.org/index.php/BitTorrent(http://wiki.systemimager.org/index.php/BitTorrent)獲得更多信息。
警告 對通過BT安裝的鏡像或override進行任何改動時,記住要對BT庫強制同步。
E-mail:[email protected] 22
第5章. 如何使用Flamethrower進行多重安裝
5.1. 安裝SystemImager v3.2.x或更高版本
下面的幾步詳細地描述了安裝部分。
5.2. 安裝Flamethrower包和依賴包
Debian用戶可以用”apt-get update”和”apt-get install flamethrower”。基於RPM的版本可以下載Flamethrower的RPM包(http://sourceforge.net/project/showfiles.php?group_id=259)。
5.3. 執行si_getimage, si_mvimage, or si_cpimage
Flamethrower是一個獨立的工具,但是SystemImager維護Flamethrower配置文件(/etc/flamethrower/flamethrower.conf)的一個單獨的副本(/etc/systemimager/flamethrower.conf)。這三個命令(si_getimage,si_mvimage, si_cpimage)中的任意一個都可以爲指定的鏡像在/etc/systemimager/flamethrower.conf中生成適當的條目。如果你覺得有必要的話,可以手工增加條目。看一下flamethrower.conf 的man page,或者配置文件(鏡像條目在文件的最底端)中的內容。然而,更簡單的做法是: si_mvimage my_image-v1 tmp_name && si_mvimage tmp_name my_image-v1
5.4. 啓動Flamethrower進程
編輯/etc/systemimager/flamethrower.conf,設置如下: START_FLAMETHROWER_DAEMON = yes 然後用下面方法重啓: /etc/init.d/systemimager-server-flamethrowerd restart
5.5. 讓自動安裝客戶端使用Flamethrower
如果用DHCP,可以把下面兩行加入到dhcpd.conf文件: option option-143 code 143 = string; # (only for ISC’s dhcpd v3) option option-143 “9000”; 然後重啓DHCP進程,通常是: /etc/init.d/dhcp restart 或 /etc/init.d/dhcpd restart 如果用參數安裝的方法,可以把下面一行加入到/etc/systemimager/pxelinux.cfg/syslinux.cfg(執行si_mkclientnetboot)或者用si_mkautoinstalldisk或si_mkautoinstallcd加上--append “STRING”選項: FLAMETHROWER_DIRECTORY_PORTBASE=9000
5.6. 自動安裝客戶端
從你喜歡的自動安裝介質(網絡,軟盤,CD或硬盤)啓動客戶端即可。
5.7. 過程的詳細步驟
E-mail:[email protected] 23
1. 鏡像服務器啓動,執行初始腳本/etc/init.d/systemimager-server-flamethrowerd來啓動Flamethrower進程(flamethrowerd)。flamethrowerd,反過來,按照/etc/systemimager/flamethrower.conf啓動udp發送過程。 2. 用si_getimage獲得新的鏡像,然後flamethrower.conf中的信息被更新。 3. 在啓動每個特性前,flamethrowerd會檢查是否flamethrower.conf已經被更新。如果是,它會被重新讀出來,這准許動態地創建新的鏡像,而不用重啓flamethrowerd。 4. 自動安裝客戶端啓動,它檢查是否設置了FLAMETHROWER_DIRECTORY_PORTBASE。這可以通過“option-143”來設置,或者通過local.cfg文件中的FLAMETHROWER_DIRECTORY_PORTBASE變量設置。FLAMETHROWER_DIRECTORY_PORTBASE的默認值是9000。 如果FLAMETHROWER_DIRECTORY_PORTBASE設置了,自動安裝客戶端要從在端口FLAMETHROWER_DIRECTORY_PORTBASE執行的flamethrower進程獲得目錄信息。鏡像服務器等待其它客戶端加入目錄信息多點傳送,然後去除目錄信息。目錄信息是文件的一個目錄,每個模塊一個,每個裏面都包含用來進入特殊模的塊的多點傳送的細節。 5. 當客戶端接收Flamethrower的目錄信息,它會爲下面的每一個模塊尋找多點傳送信息,然後把每一個連續地加入多點傳送: a. BOEL二進制(自動安裝客戶端用來繼續安裝的附加二進制) b. 整個自動安裝腳本的目錄 6. 在接收到腳本列表後,它會尋找自動安裝腳本,並執行它。自動安裝腳本會爲適當的鏡像通過連續加入多點傳送繼續進行安裝,然後是override的目錄。 7. 接收完所有列表,客戶端按照boot loader配置的自動安裝腳本完成安裝,並執行安裝後的操作。 8. 當flamethrowerd進程爲一個模塊完成列表部分,它檢查flamethrower.conf文件中的變動,如果需要的話重新讀取,然後對這個模塊監聽要加入到列表的新用戶。分開的模塊列表可以並行。
5.8. 參見
見http://wiki.systemimager.org/index.php/Multicast (http://wiki.systemimager.org/index.php/Multicast) 獲得更多信息。
E-mail:[email protected] 24
第6章. 如何使用OpenSSH進行安全安裝
6.1. 使用OpenSSH安全安裝(需要SystemImager v3.8.x或更高版本)
SystemImager支持通過ssh獲取並安裝鏡像。如果在一個沒有保護的網絡中或者通過公網進行安裝的話會需要這個特點的。一些可擴展性和安裝時間的增加是預料之中的,目前我們還不支持安全多點安裝(flamethrower)。
見:http://wiki.systemimager.org/index.php/SSH (http://wiki.systemimager.org/index.php/SSH) 獲得更多信息。
6.2. 鏡像服務器的配置
將/etc/systemimager/rsync_stubs/10header文件中的下面兩行取消注示: #hosts allow = 127.0.0.1 #hosts deny = 0.0.0.0/0 重啓執行si_mkrsyncd_conf: # si_mkrsyncd_conf 重啓rsync進程: # /etc/init.d/systemimager-server-rsyncd restart 這種方法連接到rsync出口的鏡像會拒絕除本地外(在SSL隧道建立後使用sshd)的所有連接。
6.3. 客戶端驅動方法
首先要創建啓動包(kernel + initrd.img),包括將SSH私鑰直接放入initrd.img。這種情況下不贊成通過PXE啓動。因爲通過TFTP傳輸到客戶端時內核和initrd.img並沒有加密。創建BOEL的啓動包執行下面的命令: # mkdir /tmp/boot-package # si_mkbootpackage --destination /tmp/boot-package --kernel \ /usr/share/systemimager/boot/i386/standard/kernel --filesystem cramfs \ --ssh-key ~foo/.ssh/id_dsa —yes 記住用客戶端的架構取代i386以獲得正確的內核(如x86_64)或者如果你想使用UYOK: # mkdir /tmp/boot-package # si_mkbootpackage --destination /tmp/boot-package --image YOUR_IMAGE \ --ssh-key ~foo/.ssh/id_dsa —yes 這個命令會在/tmp/boot-package創建啓動包幷包括用戶”foo”的SSH私鑰在initrd中。讓”foo”用戶可以無密碼登錄執行命令: $ cat ~foo/.ssh/id_dsa.pub &gt;&gt; ~foo/.ssh/authorized_keys
相同的方法同樣可以在golden client上使用--ssh-key與si_prepareclient。這種方式不需要在在鏡像
E-mail:[email protected] 25
服務器中創建啓動包,簡單地通過si_prepareclient生成kernel + initrd.img即可。
6.4. 用SSH傳輸配置客戶端(客戶端驅動)
用下面命令創建一個自動安裝CD: # si_mkautoinstallcd --out-file /tmp/boot-package/systemimager.iso --kernel \ /tmp/boot-package/kernel --initrd /tmp/boot-package/initrd.img --append \ “MONITOR_SERVER=172.16.36.1 MONITOR_CONSOLE=yes SKIP_LOCAL_CFG=y SSH=y” 記住換回監測服務器(如果你想用它的話)的地址並加上所需要的安裝參數。如果你選用自動安裝USB設備代替CD的話執行: # si_mkautoinstalldisk --device YOUR_USB_DEVICE --kernel \ /tmp/boot-package/kernel --initrd /tmp/boot-package/initrd.img --append \ “MONITOR_SERVER=172.16.36.1 MONITOR_CONSOLE=yes SKIP_LOCAL_CFG=y SSH=y” \ --yes 然後用自動安裝CD或USB設備(客戶端用SSH則不推薦使用PXE)啓動客戶端。
6.5. 服務器驅動方法
同客戶端驅動一樣,服務驅動方法也需要創建一個客戶端啓動包。這種情況不需要包含SSH私鑰(用來連接服務器),需要的是受權密鑰,因爲鏡像服務器會爲客戶端打開SSH隧道。用BOEL創建啓動包的話在服務器端執行下面的命令: # mkdir /tmp/boot-package # si_mkbootpackage --destination /tmp/boot-package --kernel \ /usr/share/systemimager/boot/i386/standard/kernel --filesystem cramfs \ --authorized-keys ~foo/.ssh/id_dsa.pub —yes 記住用客戶端的架構取代i386以獲得正確的內核(如x86_64)或者使用UYOK: # mkdir /tmp/uyok-boot-package # si_mkbootpackage --destination /tmp/boot-package --image YOUR_IMAGE \ --authorized-keys ~foo/.ssh/id_dsa.pub --yes 之後會在目標目錄(/tmp/boot-package)中發找到kernel+initrd.img。
6.6. 配置客戶端使用SSH傳輸(服務器驅動)
確保在安裝參數中定義SSH=y(更多詳情參見:http://wiki.systemimager.org/index.php/Installation_Parameters)。重要事項:服務器驅動方法是在客戶端部署鏡像最安全的方法,因爲它並不直接進入鏡像服務器。因爲這個原因可以阻止任何連入服務器的方法(用hosts deny策略或通過iptables抑或應用你自己的防火牆)。因爲只給客戶端分發了一個公鑰,可以忽略客戶端驅動方法不通過PXE啓動的警告:這樣initrd.img中並不包含私有信息並且不加密傳輸的話也沒有問題。
6.7. 等待客戶端準備連接SSH
等下面的信息出現於客戶端的控制檯中: Started sshd. You must now go to your imageserver and issue
E-mail:[email protected] 26
the following command: si_pushinstall --hosts ${HOST_OR_IP}. 如果沒有直接看到客戶端的控制檯可以應用監控的方法從SystemImager虛擬控制檯(參見http://wiki.systemimager.org/index.php/Monitoring獲得更多詳情)檢查這個消息。上面的信息意味着客戶端準備好接受從鏡像服務器連接SSH,所以運行控制檯上推薦的命令。你可以通過si_pushinstall在一次工作中打開所有的SSH通道。例如如果要從節點01到節點20更新鏡像執行: # si_pushupdate —hosts node01-node020 然後用自動安裝CD或USB設備通過PXE啓動客戶端並享受安全的自動安裝吧。
E-mail:[email protected] 27
第7章. 用SystemImager監控客戶端的安裝
7.1. 總攬
這個文檔展示如何利用SystemImager的監控特性。監控可以觀察所有客戶端安裝過程的細節。監控由兩個組件控制: ? si_monitor: 在監控服務器上運行的進行收集客戶端數據 ? si_monitortk: 基於perl-Tk的GUI監控。
7.2. 安裝監控服務器
在監控服務器(常規上同鏡像服務器在一個機器中)上地執行: # /etc/init.d/systemimager-server-monitord start 這會啓動si_monitor進程。由客戶端發送的數據將被si_monitor收集並存儲在XML中/var/lib/systemimager/clients.xml。如果監控服務器中不能執行X程序可以簡單地週期性查看監控設備的文件。
然後執行si_monitortk登錄GUI監控。
7.3. 使客戶端發送監控數據
對客戶端內核啓動選項定義如下的參數: ? MONITOR_SERVER=IP|HOSTNAME:監控服務器的IP地址或主機名 ? MONITOR_CONSOLE=yes|no:是否能全控制檯觀看,如果使能的話則監控接口(默認沒有)中會跟蹤客戶端(標準輸出和標準錯誤)所有的安裝部分。 通常需要在/etc/systemimager/pxelinux.cfg/syslinux.cfg中定義參數。通過網絡安裝或自動安裝介質(CD,USB盤等)都可以。例如下面的使能監控的配置: LABEL systemimager KERNEL kernel APPEND vga=extended initrd=initrd.img root=/dev/ram MONITOR_SERVER=192.168.1.1 MONITOR_CONSOLE= 記住重新執行si_mkclientnetboot(對PXE啓動),si_mkautoinstallcd(對CD啓動進行自動安裝)或者si_mkautoinstalldisk(對USB設備啓動的自動安裝)來重新構建配置文件或啓動介質以接受上面新定義的參數。
7.4. 疑難解答
7.4.1. 沒有顯示客戶端
警告 千萬不要手工執行si_monitor!要用systemimager-server-monitord腳本!
E-mail:[email protected] 28
當啓動時若在監控接口中沒有看到客戶端檢查下面的問題: ? 鏡像服務器中是否有防火牆在8181端口進行過濾?客戶端用這個端口連接鏡像服務器。 ? 試着用監控服務器的IP地址代替主機名。 ? 確保客戶端使用正確的啓動參數?(如果能進入真實的控制檯,可以查看/proc/cmdline,則可以直接從客戶端檢查參數)。 ? 增加si_monitor日誌的長度,將/etc/init.d/systemimager-server-monitord中LOGLEVEL=2改成LOGLEVEL=3,重啓監控進程(/etc/init.d/systemimager-server-monitord restart);所有的日誌存儲在/var/log/systemimager/si_monitor.log。
7.4.2. 沒有X服務器的話看si_monitortk接口...
如果X服務器不可用的話客戶端也可以被監控,例如,如果通過ssh遠程連接到了鏡像服務器且不能轉發X11可以查看/var/lib/systemimager/clients.xml文件。這是一個XML,但是客戶端和屬性名可記性強。可以週期地顯示文件或者寫入你自己的控制檯監控腳本。如果你寫了一個可以自由張貼的漂亮ncurses或者控制檯接口,請郵寄補丁包給sisuite-devel列表(發郵件給:[email protected])。
E-mail:[email protected] 29
第8章.通過SystemImager集羣分發配置文件
8.1. 安裝Install SystemImager v3.9.4或更高版本
下面的幾步詳細地描述了安裝部分。
8.2. 總攬
使用SystemImager的overrides,si_pushoverrides是一個用來從鏡像服務器到客戶端或組分發配置文件的一個工具。命令接受組或節點名的名單做爲參數並用服務器驅動的方法並行同步override關聯的內容(鏡像服務器用rsync通過ssh利用帶寬優化和安全的優勢複製文件到客戶端)。 si_clusterconfig是用來管理並展示集羣拓撲的工具。在顯示模式命令接受主機名稱,主機範圍和主機組做爲參數, 它用等效的主機名解析它們並打印到標準輸出。編輯模式可以是互動的(-e選項)或批處理的(-u選項)。在互動的編輯模式下,si_clusterconfig在終端打開一個編輯器,用XML語法可以更改客戶組的定義和它們的屬性。在批處理編輯模式中它僅剖析預定義的XML配置(/etc/systemimager/cluster.xml)並刷新SystemImager的內部配置文件。
8.3. 定義集羣拓撲
以root執行si_clusterconfig -e命令。override有三個等級: ? 全局override:向所有節點分發, ? 組override:只在組內節點分發, ? 節點override:只在節點上分發。 注意事項:全局override的文件向所有節點分發。如果在組override中有相同路徑相同名稱的文件,則組override佔主導。如果在節點override中有相同路徑相同名稱的文件,則節點override佔主導。 需要的元素是: ? 鏡像服務器的名稱:<master></master> ? 全局組的名稱(確認所有的客戶):<name></name> ? 全局override的名稱(在所有客戶端分發): <override></override>
8.4. 例子
<xml> <master>master1</master> <name>all</name> <override>all</override> <group> <name>Login</name> <image>RHEL5</image> <override>Login</override> <node>node001</node> <node>node002</node> </group> <group>
E-mail:[email protected] 30
<name>Compute</name> <image>Ubuntu_gutsy</image> <override>Compute</override> <node>node003-node010</node> </group> </xml> 這是一個有10個節點的定義。鏡像服務器的主機名是master1;集羣有2個使用override的登錄節點(節點001,節點002)稱作Login,有8個使用override的計算節點(節點001,節點002,節點003,節點004,節點005,節點006,節點007,節點008)稱作Compute。 例如 8-1. 例子 1:向所有節點分發passwd, shadow和group。 創建文件: # cp -p /etc/passwd /var/lib/systemimager/overrides/all/etc/passwd # cp -p /etc/shadow /var/lib/systemimager/overrides/all/etc/shadow # cp -p /etc/group /var/lib/systemimager/overrides/all/etc/group 從master1執行命令: # si_pushoverrides -v all 基本上當指定了定義在cluster.xml的所有全局override節點,則按照override的等級進行升級。 例如 8-2. 例子 2:分發不同的access.conf給Login和Compute節點 只准許root從本地域登錄到”Login”, /var/lib/systemimager/overrides/Login/etc/security/access.conf: -:root:ALL EXCEPT LOCAL .localcluster.domain.org 不准許沒有權限的用戶登錄”Compute”節點, /var/lib/systemimager/overrides/Compute/etc/security/access.conf: -:ALL EXCEPT root wheel:ALL 在master1執行命令: # si_pushoverrides -v Compute Login 例如 8-3. 例子 3:對無權限用戶把第2個登錄節(node002)點關閉/var/lib/systemimager/overrides/node002/etc/security/access.conf: -:ALL EXCEPT root:ALL -:root:ALL EXCEPT LOCAL .localcluster.domain.org 在master1執行命令: # si_pushoverrides -v node002
8.5. 參見
見http://wiki.systemimager.org/index.php/File_distribution(http://wiki.systemimager.org/index.php/File_distribution) 獲得詳細信息。
E-mail:[email protected] 31
第9章. FAQ (常見問題解答)
Q: 鏡像存儲在哪裏? A: 存在/var/lib/systemimager/images。 注意: 如果你硬盤的這個分區不夠,將目錄移到其它分區: mv /var/lib/systemimager/images /home/systemimager_images 然後創建一個軟鏈接到新的目錄。 ln -s /home/systemimager_images /var/lib/systemimager/images Q: 我怎樣製做一個自動安裝CD? A: 在鏡像服務器中執行si_mkautoinstallcd命令。 Q: 怎樣創建一個自動安裝USB盤: A: 在鏡像服務器中執行si_mkautoinstalldisk命令。 Q: 當我從dhcp傳遞參數,客戶端出現請使用十六進制數字代替。我該如何用IP地址代替。 A: 十六進行地址實際上是IP地址的十六進制表示(可以用gethostip命令更改)。這通常是引用的問題,在配置文件的IP地址中加上引號。 Q: 我執行了si_netbootmond,但是它沒有工作,怎麼回事兒? A: 爲了讓si_netbootmond能正常工作,必須啓動rsync進程: “/etc/init.d/systemimager-server-rsyncd start”。 Q: 如何配置服務器可以用網絡啓動ia-64客戶端? A: 1. 在啓動服務器中安裝tftp(推薦tftp-hpa &gt;= 0.28)。 2. 配置inetd或xinetd使tftp可用。 ? 配置inetd,在/etc/inetd.conf中找到tftp詞條,將它修改: tftp dgram udp wait root /usr/sbin/in.tftpd -v -v -v -s /var/lib/tftpboot 如果安裝到了不同的目錄,將“/usr/sbin/in.tftpd”改tftp服務器的完整路徑。 -v並不嚴格要求,只是讓ftp服務器更詳細,更容易檢測問題。 最後,發送一個HUP信號給inetd(這會重新裝載它的配置文件)。# killall -HUP inetd ? 配置xinetd,修改: service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/tftp disable = no
E-mail:[email protected] 32
} 改成: service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot -r blksize disable = no } 最終,給xinetd發送一個USR2信號(這會重新裝載它的配置文件)。 3. 配置DHCP服務器,它將爲客戶端提供啓動參信息。安裝DHCP服務器時要小心--如果它用來解決動態地址並在一個公共子網中,它會給其它網絡中的機器發送假信息,可以會損壞那些機器上的數據。如果用網絡安裝的話推薦在私網內進行。如果可能的話,應該配置DHCP服務器只回答基於MAC地址的已知機器。 爲啓動客戶端在/etc/dhcpd.conf中加入一個詞條 host mcmuffin { hardware ethernet 00:30:6e:1e:0e:83; fixed-address 10.0.0.21; filename “elilo.efi”; } 4. 從IA-64機器中複製elilo.efi到你的tftpboot目錄,並讓它全局可讀。這個文件通常在/boot/efi或/usr/lib/elilo子目錄中。同樣也可在IA-64發行版的elilo包中獲得。 必須在tftpboot目錄中創建一個elilo.conf文件。樣例在/usr/share/doc/systemimager-doc/examples中,或者輸入下面的。 5. 編輯/var/lib/tftpboot/elilo.conf: # # Sample elilo.conf for netbooting ia64 systemimager clients # # Inside your tftp directory you may also want to do this: # # mkdir -p ia64/standard # cp /usr/share/systemimager/boot/ia64/standard/* ia64/standard/ # default=systemimager image=ia64/standard/kernel label=systemimager initrd=ia64/standard/initrd.img root=/dev/ram append=“vga=extended ramdisk_blocksize=4096 console=tty0” #
E-mail:[email protected] 33
# Uncomment APPEND line below, and comment out APPEND line above, to use # both monitor (tty0) and first serial port (ttyS0) as console at the # same time. # # NOTE: Be sure your serial port speed is appropriate (57600, 9600, etc.) # #append=“vga=extended ramdisk_blocksize=4096 console=tty0 console=ttyS0,9600n8” read-only 如果ABCDEFGH是客戶端十六進制IP地址,elilo.efi將會用下面文件中的第一個。 ? ABCDEFGH.conf ? ABCDEFG.conf ? ABCDEF.conf ? ... ? A.conf ? elilo.conf 可以用ipcalc功能,從syslinux包中可以獲得,來計算十六進制的IP地址。 6. 配置客戶端支持TFTP啓動。 a. 啓動到EFI(譯者注:可擴展固件接口) b. 進入啓動選擇維護菜單 c. 加入啓動選項 d. 按在出現“Load file [Acpi/.../Mac()]”時按回車 e. 調用Netboot詞條或其它相似的 f. 保存並退出,Netboot在啓動菜單中可以使用了。 Q: 如何安裝自動安裝客戶端,使得控制檯可以通過串口使用。 A: si_mkautoinstallcd和si_mkautoinstalldisk支持-append選項,准許爲自動安裝內核指定安裝參數,包括串口控制檯選項。例如: si_mkautoinstallcd -out-file autoinstall.iso -append “console=ttyS0” Q: DHCP服務器必須在鏡像服務器上麼? A: 不是。如果使用DHCP,可以用“option-140”並對鏡像服務器的IP地址設置它的值。如果使用si_mkdhcpstatic來配置dhcpd.conf文件,它會詢問鏡像服務器的IP地址並加入適當的詞條。 因爲這不是option-140的官方用法,要麼獲得一個官方分配的號或應用一個私有範圍的號來完成工作。 Q: SystemImager可以用在哪個發行版中? A: SystemImager設計上可以在任何發行版中使用。鏡像配置登記由System Configurator處理,它通過使用“footprinting”技術區別使用的系統配置文件類型,並配置網絡,啓動和其它一些信息。如果你發現哪個發行版本中不能使用SystemImager,請提交問題報告。 Q: 如何在自動安裝內核中加入特殊板卡驅動?
A: 如果標準的啓動包中不包含你需要驅動的硬件,可以使用UYOK特性自己創建一個定製的啓動
E-mail:[email protected] 34
包。見http://wiki.systemimager.org/index.php/UYOK (http://wiki.systemimager.org/index.php/UYOK)。 Q: 我需要對用來獲得鏡像的客戶端準備些什麼? A: 當然,要安裝systemimager-client包。如果這個包已經安裝,只需要在在鏡像服務器中執行si_getimage前執行si_prepareclient命令。可以安裝任何軟件,配置任何文件,按照你的選擇對系統進行定製。 Q: 我可以在超過一臺機器上使用自動安裝磁盤或是自動安裝CD麼? A: 當然可以。自動安裝介質是通用的,可以在任何機器上自動安裝。 Q: 如果將鏡像送到客戶端? A: 用3.8.0版本啓動,可以使用si_pushinstall命令,它會從鏡像服務器上打開一個SSH通道到客戶端。然後每個客戶端使用鏡像服務器打開的SSH通道進行下載鏡像。這是在不安全的網絡中進行的最安全的安裝客戶端的方法。 Q: 如何將鏡像拉到客戶端? A: 如果你執行si_mkdhcpserver來配置你的dhcp信息,如果回答了所有執行si_getimage時被問的問題,包括主機名和IP地址,然後要做的就是用下面的3種形式的自動安裝介質之一啓動客戶端: 1. 自動安裝CD――它啓動時間短並且持久性佳,但是必須有刻錄機並且客戶端可以讀CD盤。 2. 自動安裝磁盤――啓動時間短,但是要求客戶端的BIOS支持從USB設備啓動。 3. 網絡啓動――啓動時間更短,但是這個方法要求客戶端網卡具有PXE功能和服務器端的配置。 見本手冊的命令參考章中si_mkautoinstallcd和si_mkautoinstalldisk詞條獲得更多信息。 Q: 自動安裝客戶端如何知道要安裝哪個鏡像? A: 通過讀自動安裝客戶端的步驟來更好的理解這個答案: 1. 啓動自動安裝介質 2. 從DHCP獲得一個IP地址 3. 通過DHCP來決定鏡像服務器的IP地址 4. 從鏡像服務器要求一個hosts文件 5. 在hosts文件中找到基於IP地址的主機名 6. 從鏡像服務器中得到一個基於主機名的(例如:www237.sh)腳本。 7. 執行這個腳本。 正在說的這個腳本是當執行si_getimage時動態創建的$image.master腳本的一個軟鏈接。這個腳本明確地指出從鏡像服務器中取得哪個鏡像。 這些腳本和$image.master腳本可以在/var/lib/systemimager/scripts中找到。 Q: 如果想給客戶端分配靜態IP可以麼?怎麼做? A: 可以。si_getimage會問你是否要用靜態IP。 Q: 我想用DHCP來分配靜態IP給我的客戶端,但是我不想手工輸入1000個mac地址。我該怎樣做? A: SystemImager有si_mkdhcpstatic功能。啓動客戶系統,DHCP服務器會連續地分配地址。按照你想要它們接收IP地址的順序啓動系統,你可以確保它們獲得你想要給它們分配的IP地址。啓動系統後,執行si_mkdhcpstatic。它會重寫/etc/dhcpd.conf文件,按照每個客戶端的主機名及MAC地址。然後重啓DHCP進程。因此,每次客戶端要從DHCP獲得一個IP地址,它總會被分配到適合的靜態IP地址。
E-mail:[email protected] 35
注意:應用客戶主機名代替IP地址,所以要更改DHCP服務器(或者DNS,NIS等)中的hosts文件來更改客戶端接收到的IP地址。 注意:通過DHCP分配靜態IP地址是筆者選擇的一種在大量系統中管理IP的好方法。 Q: 我能期望什麼樣的性能? A: Ole Holm Nielsen,物理系,丹麥技術大學報告:
在我們的SystemImager安裝中,我們可以在6分鐘內安裝1.8G的鏡像到18個客戶端。請見The NIFLHEIM SystemImager Page(http://www.fysik.dtu.dk/CAMP/Niflheim/systemimager.html)。我們的服務器擁有Gigabit網絡,2GB的RAM,dual Intel Xeon 2.4 GHz,客戶端是Intel P4和100 Mbit網絡。 James Braid 報告: 從一個Celeron 700/512Mb服務器,100Mbit網絡,我們做到了7~10分鐘安裝大概1G的鏡像。硬盤是設置了LVM的5x 120Gb Seagate Barracuda V(non striped),文件系統爲ReiserFS。 Q: 如何更新鏡像服務器中的鏡像? A: 有兩種方法更新鏡像服務器中的鏡像: 1. 在客戶端進行一些改變然後再次執行si_getimage。 ――指定相同的鏡像名稱,在當前鏡像將要被更新的情況下(只有更改的部分被拷走)。 ――或者你可以指定一個新的鏡像名稱而且可以進行版本控制(強烈推薦這種方法)。 注意:每次執行si_getimage,重新創建$image.master腳本。如果自定義了$image.master腳本,確保再次執行si_getimage前保存它。 2. 直接更改文件。可以cd到此適當的鏡像目錄並更改文件,或者(推薦)cd到鏡像目錄然後執行‘chroot.sh’。這將會改變你工作的根目錄到你想要操作鏡像的根目錄。然後在鏡像中執行rpm或是其它命令,並不用擔心損壞或是弄混鏡像服務器。改完後,輸入exit你將會回到正常的shell中。 Q: 如何更新客戶端來匹配鏡像? A: 一旦更新了鏡像服務器中的鏡像,就可以更新客戶端了。(不需要完全的重新安裝)可以在客戶端用si_updateclient命令,將鏡像服務器的名稱和想要更新到客戶端的鏡像做爲命令的參數。執行si_updateclient --help獲得更多關於這個命令的信息。推薦使用“如何更新鏡像服務器中的鏡像?”FAQ中版本控制方法執行完si_updateclient以測試鏡像的生產環境恢復到已知狀態。(例如,對上一個可以工作的鏡像執行si_updateclient)。 客戶端/etc/systemimager/updateclient.local.exclude文件是用來從被si_updateclient命令正在更新的文件中排除文件和目錄。可以更改它以適應自己的環境。 Q: updateclient.local.exclude這個文件是用來幹什麼的? A: si_updateclient命令使用它。見”如何更新客戶端來匹配鏡像?”FAQ獲得更多信息。 Q: 如何使用SystemImager更新一小部分文件?例如,我應用了安全補丁,想將所有機器都更新。 A: 在客戶端使用si_updateclient命令。
1. 選用下面的一個方法更新服務器中的鏡像:
a. 直接在鏡像中應用補丁 b. 在一個客戶端上應用補丁,然後執行si_getimage指定相同的鏡像名(不會花費太長時間更新鏡像)
E-mail:[email protected] 36
c. 在一個客戶端上應用補丁,然後執行si_getimage指定不同的鏡像名。選擇這個可以對版本控制。 2. 在想要更新的客戶端執行si_updateclient。執行si_updateclient --help來獲得語法幫助。 Q: 有沒有保存自動安裝客戶端狀態的日誌文件? A: 有。SystemImager日誌可以在鏡像服務器中的/var/log/systemimager中找到。 Q: SystemImager基於其它什麼軟件? A: SystemImager大部分由Perl編寫,要用以下的軟件: ? busybox ? bc ? devfsd ? ISC dhcp ? discover ? dosfstools ? e2fsprogs ? jfsutils ? xfsprogs ? Linux kernel ? parted ? pxelinux ? rsync ? syslinux ? raidtools ? reiserfsprogs ? systemconfigurator ? uClibc 爲了確定還是看一下System Installation Suite (SIS),其中包括SystemInstaller,SystemImager和System Configurator。SystemInstaller是准許你安裝鏡像目錄到鏡像服器中的軟件。標準的SystemImager版本中使用System Configurator,執行配置目標機,如IP地址,網卡,安裝後用來啓動客戶端的初始化RAM盤。 Q: 什麼是override目錄? A: override目錄是一個在主鏡像傳輸完後複製到目標機的目錄。override目錄中所有內容複製到目標機的新文件系統的根目錄中。 所有文件的屬性被複制,包括目錄,權限和屬主。這允許對鏡像中的文件取代。Overrides目錄在/var/lib/systemimager/overrides/。 簡單地編輯master自動安裝腳本並改變override變量來包含適當的overrides目錄。例如,可以改變OVERRIDES=“my_image”爲OVERRIDES=“my_image-ide”。 如果所有機器使用相同的override,就沒必要更改自動安裝腳本。只要把你想要override的文件放到同你的鏡像有相同名稱的overrides目錄中,並執行它。
也可以使用多重override目錄,用於你指定的順序--每一個目錄取代前一個目錄。可以在多類機器中有少量不同的高度複雜的環境中使用這種方法,但是它們都源於一個鏡像。例如,OVERRIDES=
E-mail:[email protected] 37
“my_image-ide web_app”。 Q: 如何擴展文件系統? A: 見“如何更改一個分區的大小?” Q: 如何更改一個分區的大小? A:
1. 用你喜歡的編輯器打開autoinstallscript.conf文件。
注意: 由si_prepareclient創建默認的autoinstallscript.conf文件在你鏡像的/etc/systemimager目錄。 2. 找到<disk>部分,其中dev設置含有要更改分區信息的磁盤。 3. 找到<part>詞條,其中num是我們現在說的分區號。 4. 更改size,改變新分區的大小,如果你分配的空間不足以容納存儲的文件,自動安裝將會失敗。 注意:每個<disk>部分可以用MB (megabytes)或% (percentages)來指定分區大小。參見man autoinstallscript.conf 獲得更多信息。 5. 用新的參數執行si_mkautoinstallscript創建新的自動安裝腳本。 注意:默認,si_mkautoinstallscript使用鏡像的./etc/systemimager目錄中的autoinstallscript.conf文件。參見man si_mkautoinstallscript和man autoinstallscript.conf獲得更多信息。 Q: 如可更改文件系統目標機才能使用? A: 1. 確保內核支持你想用的文件系統。 2. 在你喜歡的編輯器中打開autoinstallscript.conf文件。 注意:由si_prepareclient創建默認的autoinstallscript.conf文件存儲在鏡像的./etc/systemimager目錄。 3. 找到<fsinfo>詞條,其中mp (mount point)是用來設置想要更改的文件系統。 4. 將fs更改成想使用的文件系統。參見man autoinstallscript.conf查看支持的文件系統列表。 必需明白選擇的文件系統的功能。依賴於選擇的文件系統,還要更改文件的掛載點,通過options詞條來設置。如果選擇了不支持的選項,自動安裝會失敗。 迄今所知道的案例,更改文件系統類型時沒有必要更改<disk>部分的fs詞條。<disk>部分的fs詞條實際上不決定創建於那些分區上的文件系統,而是SystemImager所使用的parted工具創建分區時使用那個參數。 5. 用新的參數執行si_mkautoinstallscript創建一個新的自動安裝腳本。默認,si_mkautoinstallscript使用鏡像的./etc/systemimager目錄中的autoinstallscript.conf文件。參見man si_mkautoinstallscript和man autoinstallscript.conf獲得更多信息。 Q: 如何更改磁盤類型目標機才能使用? A: 1. 確保鏡像中的內核中包含你想用的磁盤類型的驅動。
E-mail:[email protected] 38
2. 執行si_mkautoinstallscript --autodetect-disks ...創建一個新可以在客戶端安裝鏡像時自動檢測硬盤類型的自動安裝腳本 3. 另一種方法是手工更改autoinstallscript.conf並重新執行si_mkautoinstallscript。 Q: 對不同的磁盤或分區配置可以使用一個鏡像麼? A: 可以。如果在客戶端有不同的硬盤類型,使用si_getimage或si_mkautoinstallscript時確保使用--autodetect-disks參數,並對你想使用的每個分區表創建不同的autoinstallscript.conf和master腳本
9.1. 參見
參考SystemImager站點中的疑難解答指南 http://wiki.systemimager.org/index.php/Troubleshooting and the online FAQ at (http://wiki.systemimager.org/index.php/FAQ for details)。
E-mail:[email protected] 39
第10章. 疑難解答
10.1. 什麼是“ETHER_SLEEP”變量,什麼時候需要調整它?
ETHER_SLEEP變量指定自動安裝客戶端在進行網絡通話之前要進行等待的秒數。默認是0,爲了使安裝更快些,通常不需要暫停。 某一網絡設備,著名的交換機,在30多秒鐘的延時後,可能拒絕從新出現交換端口的接口上通過傳輸。這個延時通常是可以設置的選項(如果交換機有這個功能)。不管交換機設置的是供應還是具體地址。 如果在自動安裝時遇到問題,例如自動安裝客戶端不能通過DHCP獲得一個IP地址:a)用命令行要求得到一個DHCP地址時,你會得到一個。b)手工配置網絡接口然後連接鏡像服務器;然後你可以更改ETHER_SLEEP變量。 這些問題都可以解釋爲手工干預前的30多秒的暫停。 如果你想要更改ETHER_SLEEP變量,大多數情況下這個值是35(ETHER_SLEEP=35)。ETHER_SLEEP變量可以在local.cfg文件中設置或通過更改BOEL源代碼中./etc/init.d/rcS腳本。 注意:交換機的30多秒暫停開始於自動安裝客戶端被激活(驅動裝載),沒有必要將端口與IP地址捆綁。
10.2. si_getimage出現“Failed to retrieve /etc/systemimager/mounted_filesystems from <golden
client>”消息 兩個已知的問題會導致這個錯誤: 1. 你的防火牆可能阻止了rsync端口。一些Red Hat發行版(其它的發行版也有可能)將防火牆規則作爲默認安裝的一部分。ipchains和iptables功能加上L參數會打印激活規則列表。 2. rsync依賴於遠程機器的反向查尋能力。如果你的集羣中沒有沒有反解DNS,你可以在集羣中的每個機器的/etc/hosts文件中加入一個詞條。爲你的鏡像服務器加入一個詞條,加在golden client的/etc/hosts文件中,這樣就可以正常使用si_getimage了。
10.3. 客戶端自動安裝/更新掛起,崩潰或出奇的慢
Goran Pocian報告了一個不能接受的si_updateclient執行的案例,他將內核從2.2.17升級到2.2.18時發生的。他還指出,在執行完si_prepareclient如果掛載NFS文件系統,si_getimage將會檢索它的內容。這將嚴重增加網絡的負載,同樣會引起性能惡化。 Brian Finley執行了另一個可能的原因: 每過一會兒,就有人報告與rsync有關的一些奇怪的掛載或傳輸中斷問題。我有機會與Andrew Tridgell對面討論這個問題。我們發現引起這個問題的兩個原因。一個是已知的內核問題,一個是rsync問題。內核的問題在2.4.x系列的內核中已經解決了,(SystemImager並沒有用2.4.x內核進行“官方測試”)也不會在所有的2.2.x系列的內核中出現(我這樣認爲)。rsync的bug在2.4.7版本解決了。rsync的bug由過多的錯誤佔滿了錯誤隊列,因此引發競爭狀態。然而,到rsync的2.4.7版本有一段時間了,我仍然推薦使用2.4.6的版本除非你明確地經歷了這些問題。
E-mail:[email protected] 40
似乎有一個苦工爲Chris Black工作。在<image>.master腳本中每個rsync命令”rsync”後面加上”--bwlimit=10000”。 更改:“rsync -av --numeric-ids $IMAGESERVER::web_server_image_v1/ /a/” 改成:“rsync --bwlimit=10000 -av —numeric-ids $IMAGESERVER::web_server_image_v1/ /a/” 這是幾個在檢查問題上的技巧: ? 如果你的錯誤日誌/var/log/messages中有看起來像: Jan 23 08:49:42 mybox rsyncd[19347]: transfer interrupted (code 30) at io.c(65) 你可以看一下errcode.h文件中的代碼號,在這裏會找到rsync源代碼。 ? 判斷內核bug:執行netstat -tn。這有一些樣例輸出(來自正常工作的系統) $ netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 1 0 192.168.1.149:1094 216.62.20.226:80 CLOSE_WAIT tcp 1 0 192.168.1.149:1090 216.62.20.226:80 CLOSE_WAIT tcp 1 0 192.168.1.149:1089 216.62.20.226:80 CLOSE_WAIT tcp 0 0 127.0.0.1:16001 127.0.0.1:1029 ESTABLISHED tcp 0 0 127.0.0.1:1029 127.0.0.1:16001 ESTABLISHED tcp 0 0 127.0.0.1:16001 127.0.0.1:1028 ESTABLISHED tcp 0 0 127.0.0.1:1028 127.0.0.1:16001 ESTABLISHED 問題是: ? 機器A在Send-Q中有數據 ? 機器B在Recv-Q中沒有數據 ? 機器A的Send-Q並沒有減少 發生了這樣的情況: 1. 一個或兩個內核不尊敬另一個的發送/接收設置(這些是動態計算的)。 2. 結果是內核不從機器A到機器B中取得數據 3. Rsync,因此,在接收端不獲得數據 4. 進程持掛起。 ? rsync的bug細節: 發生了什麼: 1. 大最的錯誤日誌在接收端和生成端阻塞 2. 所有的進程停止 3. 再一次,進程出現掛起。 希望這些信息有所幫助... 一個可能的解決方法,Robert Berkowitz建議的,在rsync的腳本里rsync選項加上--bwlimit=10000。
10.4. 我的自動安裝CD不能啓動
下載並安裝一個新的syslinuxRPM包。
10.5. 我的客戶端不能自動安裝,當我手工執行rsync命令,它總是用鏡像服務器回覆
E-mail:[email protected] 41
確保鏡像服務器可以在IP地址的基礎上找到主機名。最簡單的方法是爲客戶端系統獲得鏡像服務器的/etc/hosts文件中的這個詞條。
10.6. 客戶端出現這個錯誤:“chroot: cannot execute systemconfigurator: No such file or directory”
這個失敗最有可能與用來創建鏡像的SystemImager版本和用來創建相應的.master腳本的SystemImager不匹配聯繫起來。 如SystemImager 2.0,SystemConfigurator用來製作對鏡像更改的最終配置。SystemConfigurator從在鏡像內部執行,所以它必須安裝於鏡像服務器的鏡像中。確保這個,在從golden client中獲得鏡像前,SystemConfigurator必須安裝在任意的golden client中。如果你從一個沒有安裝SystemConfigurator的golden clients中獲得鏡像,可以直接在鏡像服務器中的鏡像裏安裝SystemConfigurator。 例如:10-1,將SystemConfigurator安裝到鏡像服務器中的鏡像中 1. 從http://sourceforge.net/projects/systemconfig下載最新的SystemConfigurator包。 2. 複製SystemConfigurator包到鏡像的目錄。例如: # cp systemconfigurator-1.10-1.noarch.rpm /var/lib/systemimager/images/my_image/tmp 3. Chroot到鏡像目錄並安裝包。 # chroot /var/lib/systemimager/images/my_image bash # rpm -Uvh /tmp/systemconfigurator-1.10-1.noarch.rpm # exit
10.7. 客戶端成功完成自動安裝進程,但是重啓後出現“Invalid Partition Table”錯誤,然後Linux就起不來了
SystemImager 2.0.x和早期的版本在分區表中沒有可啓動標誌。在大多數情況下都可以,但是在一些情況下這導致不能啓動系統。爲了解決這個問題,從rescue介質啓動系統,然後用cfdisk或者其它分區工具在你的啓動分區設置可啓動標誌。如果准許啓動系統,必須升級SystemImager並重新生成自動安裝腳本。如果因爲某些原因不能升級,那麼檢查下面: ? 確保使用最新版本的SystemImager並使用同這個版本一起的自動安裝磁盤。注意版本號可能不匹配。參見VERSION文件。
10.8. 參見
參考SystemImager站點中的疑難解答指南
http://wiki.systemimager.org/index.php/Troubleshooting獲得詳細信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章