又完成了一個小型集群,交流一下
花了1個星期的時間,我用Fedora+openmosix+view完成了一個十二台的
小型集群,但整體運算效率我感覺不是很高,但用了openmosixview管理
卻很方便,不知道大家用什麼集群軟體,效率如何。
清大家推薦一些好用的集群軟體,一下是openmosixview的管理界面,用起來確實很方便。
《解決方案》
又完成了一個小型集群,交流一下
openmosixview
http://bbs.whatisnet.net/uploads/post-26-1070292964.jpg
《解決方案》
又完成了一個小型集群,交流一下
沒這麼多機子,你那集群拿來做啥的?
《解決方案》
又完成了一個小型集群,交流一下
是啊,老大把經驗給介紹介紹吧
《解決方案》
又完成了一個小型集群,交流一下
分享一下吧,很有興趣
《解決方案》
又完成了一個小型集群,交流一下
介紹一下經驗..讓我們也分享分享!
《解決方案》
又完成了一個小型集群,交流一下
你覺得效率是什麼意思?
機群說實話最大的用處就是用pvm,mpi這些介面來算題,否則沒什麼太大的意義。
《解決方案》
又完成了一個小型集群,交流一下
我的集群主要用來計算,我指的效率是最後測試值不是很高。大家如果感興趣,我可以把過程大概給大家寫一下。
《解決方案》
又完成了一個小型集群,交流一下
太謝謝了!大俠寫寫吧!
《解決方案》
又完成了一個小型集群,交流一下
正如你所看到的一樣,你的機器在絕大多數時間是空閑的,如果你在Windows下用任務管理器或其他的Linux平台的工具(例如top,xload)觀察CPU,你會看到CPU的使用率常見在1~2%。事實上,如果你有更多的計算機,這種浪費會加劇,在一個有300台計算機的部門裡,CPU的空閑率是驚人的。然而這些部門還是需要強大的伺服器用來編譯或模擬計算,這樣的情況還會加劇,不止需要一台,因為隨著用戶的增加,即使是8個CPU的伺服器,滿負荷時也不能把任務交給另外的空閑伺服器,因為用戶很少會改變習慣去登陸另外一台伺服器。如果能利用現有的計算資源,把空閑的CPU利用起來,或者能讓伺服器智能的遷移負荷,就是你看下去的理由。
集群的基本單位是單獨的計算機,稱為節點(node)。其可增長的特性,稱為延展性(Scale),也就是向集群中加入計算機。集群沒有嚴格的定義,可以說就是許多利用高速聯接的,具有高速運算能力的,具有單一用戶界面的計算機組合。這並不是集群的定義,而是表面現象的描述。集群中的節點需要硬體儘可能的一致,不一致的硬體集群稱為異構集群,雖然這並不能改變集群的特性,但是異構導致集群會花費額外的時間來處理由於異構帶來的延遲,另一方面這也是集群的優勢,任何其他的多CPU系統都是嚴格要求CPU是一致的,集群就有足夠的自由度增減節點,不受類型的限制。
本文選擇MOSIX作為集群的方案,並使用無盤節點。架構集群並沒有想象中那樣複雜,參考下面的步驟可以一步步的架構集群,整個的方案並不是很昂貴,而且便於擴展。使用RedHat是因為在中國這是最有權威的版本,不論是初學者還是專業工作者,都可以在RedHat Linux中定製自己的版本。使用終端伺服器LTSP是因為結構簡單,便於快速擴展。使用的硬體是可以改進的,比如使用雙CPU的主板和至強處理器,這樣單一機櫃中處理器就密集到48塊CPU,本例中可以使用24塊CPU。除了CPU以外,還可以使用千兆網卡或光纖網卡,交換機可以使用光纖交換機,內存總數可以達到48GB。但是隨著硬體的升級,整體價格就會過高,而性能的提升並不是按比例的,因此本例的配置是性價比較好的組合。MOSIX是利用給內核源代碼加補丁的辦法,增加內核的功能來達到內核級的集群支持,通過編譯后的內核啟動的系統間類似SMP多處理器的系統,從外面的角度看只有一台有很多處理器的龐大機器,但是內部是用很多機器架構成的。而MOSIX集群的特點是對用戶透明,原有的應用程序不需要修改代碼即可以在集群中分佈計算。
有幾種情況是不需要使用集群系統的,使用類似網格計算的腳本就可以完成計算,比如三維動畫的渲染,這類計算可以使用不同的節點,不需要對稱的硬體,不需要一致的操作系統(需要應用具有支持不同操作系統的版本),只需要按照處理器來分割渲染的任務段,在每個節點上運行相應的任務段,然後合成所有節點的計算結果。因為計算數據是離散的(結果的連續是視覺的連續),因此用類似網格計算的腳本也可以完成。這類計算不需要使用集群也可以完成。
下面本文將告訴你如何準備硬體和軟機環境。首先是規劃你的計算環境。
硬體環境:
49U標準機櫃,安裝1U的交換機,24台2U機架式機箱。
1U的24口100MB交換機(不是集線器)
Intel P4 2GHz CPU,1GB DDR,Intel 845D主板,軟碟機,NVIDIA顯卡(能啟動X Windows就可以),2U機架式機箱,3C905B 10/100MB自適應網卡,網關需要配置光碟機,80GB硬碟和雙網卡。
5類線,按照693A壓3米網線24根。
顯示器,鍵盤,滑鼠僅在安裝時使用。
軟體環境和必要的安裝包(除特殊說明外,高版本不一定適用):
Redhat 7.2 CD1 和CD2安裝光碟 www.redhat.com
dhcp-3.0.1rc9-1.i386.rpm是支持啟動內核調用的DHCP版本www.redhat.com
dhcpcd-1.3.22pl1-7.i386.rpm是DHCPD守護進程www.redhat.com
mknbi-1.2-6.noarch.rpm是製作客戶端啟動內核的必要軟體包www.redhat.com
MOSIX-1.6.0.tar.gz是原始的MOSIX文件,最新的版本是1.7.0 www.mosix.com
MOSKRN-1.6.0.tar.gz是原始MOSIX內核文件,最新的版本是1.7.0 www.moxis.com
openmosix-kernel-2.4.18-openmosix2.i386.rpm是MOSIX分支版本的通用內核,最新的版本是2.4.19 www.openmosix.org
openmosix-kernel-2.4.18-openmosix2.i686.rpm是MOSIX分支版本的新處理器內核,最新的版本是2.4.19 www.openmosix.org
openmosix-kernel-smp-2.4.18-openmosix2.i686.rpm是MOSIX分支版本的多處理器內核,最新的版本是2.4.19 www.openmosix.org
openmosix-kernel-2.4.18-openmosix2.src.rpm是MOSIX分支版本的源代碼www.openmosix.org
openmosix-tools-0.2.2-1.i386.rpm是MOSIX分支版本的客戶端工具www.openmosix.org
ltsp_core-3.0-11.i386.rpm是LTSP的核心文件www.ltsp.org
ltsp_kernel-3.0-3.i386.rpm是LTSP的內核www.ltsp.org
ltsp_floppyd-3.0.0-2.i386.rpm是LTSP的軟盤工具www.ltsp.org
ltsp_initrd_kit-3.0.1-i386.tgz是LTSP的啟動製作工具www.ltsp.org
linux_kernel-2.4.18.tar.gz是需要編譯的內核源碼www.kernel.org
網路配置環境:
網關對外網卡配置10.193.15.169,子網掩碼255.255.255.0給內部網使用,用於登錄和提交進程。 網關對內網卡配置192.168.0.254,子網掩碼255.255.255.0,網關為10.193.15.169給集群用於DHCP伺服器,NFS伺服器,LTSP伺服器。
網關對內網卡配置DHCP,分配地址從192.168.0.100到192.168.0.253,子網掩碼255.255.255.0,都是C類。
當以上條件都具備時,可以開始架構MOSIX集群。
1.安裝所有硬體,並能確保可以從光碟啟動網關伺服器系統,節點可以使用軟盤啟動,檢查BIOS的啟動設置,並確認可以正確啟動。將所有節點和交換機安裝到機柜上,用網線連接交換機和各節點,網關需要額外的網線連接到區域網,因為可以稱集群計算環境為計算場(Computing Farm),因此對應區域網稱集群系統的網路為計算網路。連接好電源后,使用兩套顯示器和鍵盤滑鼠,分別連接一台節點機和網關伺服器。
2.安裝RedHat 7.2版本在具有兩塊網卡的網關伺服器上,分區使用自動分區(比較簡單,本文不討論Linux其他問題),選擇定製安裝,但不要安裝所有的軟體包,除預設的選擇外,需要額外選擇軟體開發和內核開發兩組軟體包,安裝時沒有選擇的軟體包,可以在系統正常啟動后參考「如何編譯內核」中的軟體包來安裝。安裝到網路配置時,按照網路環境配置IP地址,需要配置DNS的需要修改對外網卡的設置,使用小寫mosix為主機名。安裝完后需要驗證網關伺服器可以正常啟動,按照個人喜好來設定系統,推薦使用文本模式,圖形模式資源消耗較大。另外需要連接到RedHat網站升級有缺陷的軟體包,減少系統漏洞,注意別把內核也升級了,並不是因為本文的操作,而是內核升級后,系統很可能啟動失敗,本文將自己編譯內核。升級完成後重啟,再次確認系統沒有任何錯誤。
3.安裝MOSIX包(openmosix的安裝是另外的分支)需要很多步驟,注意操作步驟的準確性:
A,將所有下載的軟體包上載到伺服器的/usr/src/tmp目錄下,確認下載的軟體包是完整的,確認md5的校驗結果一致:
su - cd /usr/src/ makdir tmp md5 package_file_name
B,將RedHat 7.2 CD2放入到光碟機。參考以下操作確認編譯內核需要的軟體包已經存在:
mount /dev/cdrom /mnt/cdrom cd /mnt/redhat/RPM rpm -Uvh kernel-headers* rpm -Uvh kernel-source* rpm -Uvh kernel-doc* rpm -Uvh dev86* rpm -Uvh make-* rpm -Uvh glibc-devel* rpm -Uvh cpp* rpm -Uvh ncurses-devel* rpm -Uvh binutils* rpm -Uvh gcc-2* rpm -Uvh tftp* cd /usr/src umount /mnt/cdrom
C,安裝需要的軟體包,展開所有的tar.gz軟體包:
tar xvfz MOSIX-1.6.0.tar.gz tar xvfz MOSKRN-1.6.0.tar.gz tar xvfz linux-2.4.18.tar.gz
D,如果展開文件沒有錯誤,將各個軟體展開目錄移到正確的位置:
mv MOSIX-1.6.0 /usr/src/ mv MOSKRN-1.6.0 /usr/src/ mv linux /usr/src/linux-2.4.18
E,為了避免以往MOSIX腳本的錯誤,需要確認以下步驟:
chmod goa+x /usr/src/MOSIX-1.6.0/inst/add_kernel_to_grub mkdir /usr/local/man
F,下面才是真正有趣和讓人著迷的步驟,首先要創建編譯內核配置文件的目錄,這是個好習慣,因為每次的編譯配置不一定相同,後面排錯也會提到相關的問題:
cd /usr/src mkdir config.backup cd /usr/src/linux-2.4.7-10/configs cp kernel-2.4.7-i686.config /usr/src/config.backup/kernel-2.4.8.config
G,將配置文件複製到待編譯內核的目錄:
cd /usr/src/ cp config.backup/kernel-2.4.18.config linux-2.4.18/.config
H,根據你的情況修改Makefiles的EXTRAVERSION部分,原值為18,可改為mosix來標明編譯后的內核版本,並可以區分模塊的版本。
cd /usr/src/linux-2.4.18 vi Makefile EXTRAVERSION = 18
I,開始安裝MOSIX 1.6.0
cd /usr/src/MOSIX-1.6.0 ./mosix.install
J,安裝開始後會有一些問題,除新內核加入LILO或GRUB一問回答為G以外的問題都用回車使用預設選擇(大寫的字母為預設值)。問題依次為內核源代碼的路徑,新內核的啟動選項添加在那個啟動程序中,內核所包含的庫文件連接,MOSIX服務的啟動級別,創建MFS裝載目錄,啟動那種內核編譯配置菜單,是否顯示內核編譯詳細過程,是否顯示用戶級編譯詳細過程。隨後系統開始給內核源代碼加補丁,啟動內核編譯配置菜單。
K,在內核編譯配置菜單中,你可以看到新增加的MOSIX選項。
L,選擇進入MOSIX選項並添加直接文件系統訪問 (Direct File-System Access) 和MOSIX文件系統 (MOSIX File-System)。用ESC鍵推出當前選單。
M,添加塊設備 (Block devices) 的內存虛擬盤的支持 (RAM disk support) 和使用初始化進程初始化內存虛擬盤 (Initial RAM disk (initrd) support)兩項。
N,在網路選項 (Networking options) 中增加對IP內核級自動配置 (IP: kernel level autoconfiguration),IP動態地址支持 (IP: DHCP support),IP啟動地址綁定支持 (IP: BOOTP support)。
O,建議除去SCSI的支持,本例中沒採用SCSI設備,並且可以避免內核編譯失敗。建議除去音效卡支持。
P,在網路文件系統 (Network File System) 中增加NFS支持根文件系統(Root file system on NFS)。
Q,最後多按一次ESC鍵,提示保存配置文件,選擇Yes。系統將開始編譯內核,編譯模塊,安裝內核,安裝模塊。該過程可能會產生一些警告,只要編譯沒退出,並正常完成回到提示符狀態就完成了編譯。
R,先不要忙於重啟,需要修改/boot/grub/grub.conf文件中MOSIX的內核路徑一行,原路徑為/boot/vmlinuz-2.4.18-mosix,修改為/vmlinuz-2.4.18-mosix。修改完后鍵入reboot可以重新啟動。
S,這時的啟動菜單中出現Mosix 1.6.0 (2.4.18),選擇該項啟動MOSIX系統。
T,系統啟動中會出現若干錯誤,圖中第一個是由於沒有創建/mfs引起的,第二個是由於MOSIX更改了sshd服務的許可權,而沒啟動另外的MOSIX的sshd引起的。第一次啟動MOSIX系統,會要求配置mosix.map文件,回車選擇預設的編輯器進入編輯。
U,配置文件修改完成後,系統會提示節點的IP地址有變化時需要修改mosix.map文件中的節點號。因為網關伺服器是192.168.0.254因此定義為節點1,其他的節點從192.168.0.1開始共有253個節點,節點號從2開始。
V,進入系統后,啟動MOSIX,顯示初始化MOSIX,MOSIX配置完成。
service mosix start
4.因為MOSIX有另外的分支openmosix,因為版權問題不同(後面將會介紹),openmosix更開放一些,而且openmosix的安裝相對簡單,推薦沒有經驗的初學者使用,下面是openmosix的安裝和基於openmosix的客戶端配置。注意:MOSIX和openmosix雖然都是MOSIX原理下的軟體,但是互相是不能通訊的,因此一個集群系統里要統一使用一種平台。openmosix是使用rpm為安裝包的,事實上只是把編譯好的內核直接掛接到系統里,並沒有經過你自己的編譯,對於初學者而言要方便許多。以下操作是在剛安裝完RedHat Linux 7.2的系統上完成的,除openmosix的軟體包外,不需要其他任何的軟體包,預設目錄在/usr/src/下。可根據情況安裝SMP版本,openmosix-kernel-2.4.18-openmosix2.i386.rpm版本適合於所有X86體系的處理器,openmosix-kernel-2.4.18-openmosix2.i686.rpm版本適合本例,openmosix-kernel-2.4.18-openmosix2.src.rpm是包含kernel-2.4.18和openmosix內核補丁的源代碼。當安裝完成後啟動時就可以看到openmosix的啟動項。
cd /usr/src/ rpm -Uvh openmosix-kernel-2.4.18-openmosix2.i686.rpm rpm -Uvh openmosix-kernel-2.4.18-openmosix2.src.rpm rpm -Uvh openmosix-tools-0.2.2-1.i386.rpm
5.下面是利LTSP配置客戶端系統,首先需要安裝必要的軟體包。並將文件安裝放到到適當的路徑下。
rpm -Uvh dhcp-3.0.1rc9-1.i386.rpm rpm -Uvh dhcpcd-1.3.22pl1-7.i386.rpm rpm -Uvh mknbi-1.2-6.noarch.rpm rpm -Uvh ltsp_core-3.0-11.i386.rpm rpm -Uvh ltsp_kernel-3.0-3.i386.rpm rpm -Uvh ltsp_floppyd-3.0.0-2.i386.rpm rpm -Uvh ltsp_initrd_kit-3.0.1-i386.tgz mv ltsp_initrd_kit /usr/src/
6.因為使用的是openmosix,你需要單獨展開的linux-2.4.18.tar.gz文件和openmosix的補丁文件,需要將openmosix的補丁加入,你在安裝openmosix-kernel-2.4.18-openmosix2.src.rpm時,源文件會存在於/usr/src/redhat/SOURCES/目錄下,同時還有內核補丁文件。
cd /usr/src/redhat/SOURCES/ tar xvfz linux-2.4.18.tar.gz mv /usr/src/redhat/SOURCES/linux /usr/src/linux-2.4.18-om2
7.將內核補丁文件展開並加入內核源文件,並作編譯前準備,將舊的內核編譯中間結果清理乾淨:
cp /usr/src/redhat/SOURCE/openMosix-2.4.18-2.gz /usr/src/linux-2.4.18-om2/ gunzip /usr/src/linux-2.4.18-om2/openMosix-2.4.18-2.gz cd /usr/src/linux-2.4.18-om2 patch -Np1 < openMosix-2.4.18-2 make mrproper
8.修改Makefile文件的EXTRAVERSION部分,加入-om2標記:
vi Makefile EXTRAVERSION = -om2
9.將LTSP的內核編譯配置文件備份並放到內核編譯目錄下:
cp /opt/ltsp/kernel-configs/config.2.4.9-ltsp-5 /usr/src/config.backup/ cp /opt/ltsp/kernel-configs/config.2.4.9-ltsp-5 /usr/src/linux-2.4.18-om2/.config
10.啟動內核編譯配置菜單,注意選擇openmosix選項中的進程遷移(process migration support),直接文件系統訪問( Direct File-System Access),openmosix文件系統(OpenMosix File-System),注意不要選擇內核調試(Kernel Debugger)。其他的配置根據具體需要,沒有SCSI硬碟可以去掉SCSI選項,不需要音效卡,也可以去掉。
make menuconfig
11. 編譯內核一般分為編譯庫(make dep),編譯啟動映象(make bzImage),編譯模塊(make modules) 和安裝模塊(make modules_install)。系統可以連續完成幾步操作:
make dep && make bzImage && make modules && make modules_install
12. 如果系統沒有提示錯誤並中止,將會顯示新的內核映象的大小,模塊編譯完成並安裝等信息。編譯完成的內核將作為客戶端的內核系統,因此需要將模塊複製到LTSP的目錄下:
cp -R /lib/modules/2.4.18-om2 /opt/ltsp/i386/lib/modules/
13.完成後將創建符合無盤啟動的系統,使用LTSP的初始化工具就可以完成,進入/usr/src/ltsp_initrd_kit目錄,修改buildk文件的最後部分,用#註釋掉原有prepare_kernel部分,並添加適合本例的命令。
cd /usr/src/ltsp_initrd_kit/ vi buildk # prepare_kernel /usr/src/linux-2.4.9-ltsp 2.4.9-ltsp-5 # prepare_kernel /usr/src/linux-2.4.9-ltsp-lpp 2.4.9-ltsp-lpp-5 lpp prepare_kernel /usr/src/linux-2.4.18-om2 2.4.18-om2
14. 修改完后運行buildk將會在/tftpboot/lts/下創建新的內核啟動文件。
./buildk
15. 建議創建內核啟動文件連接,這樣不必頻繁修改配置文件的內容,下次只要改變文件名就可以更換內核了。
cd /tftpboot/ltsp/ ln -s vmlinuz-2.4.18-om2 vmlinuz-openmosix
16. 修改/etc/dhcpd.conf文件,使動態地址分配支持新的啟動內核。修改內核啟動文件的名稱和路徑,如果該文件不存在,可以參考後面的配置文件。
cd /etc/ vi dhcpd.conf filename "/lts/vmlinuz-openmosix";
17. 隨後你可以添加自動分配主機名,這樣每台客戶機啟動時自動生成主機名,注意主機名要和你的hosts文件對應。本例中自動生成的主機名將是node001到node253,數字部分是根據IP地址補齊三位數得到的。
vi dhcpd.conf filename "/lts/vmlinuz-openmosix"; option host-name = concat("node" , binary-to-ascii( 10, 8, "", substring(reverse( 1, leased-address), 0, 1)));
18. 檢查重要的服務進程是否啟動,並使新配置文件生效。
chkconfig tftp on chkconfig dhcpd on service dhcpd restart service xinetd restart
19. 創建mosix.map文件,並保持伺服器和客戶端的一致。
cd /etc/ vi mosix.map 1 192.168.0.254 1 2 192.168.0.1 253 cp /etc/mosix.map /opt/ltsp/i386/etc/
20. 複製openmosix的工具到客戶端的目錄中。
cp /sbin/setpe /opt/ltsp/i386/sbin/ cp /bin/mosrun /opt/ltsp/i386/bin/ cp /bin/mosmon /opt/ltsp/i386/bin/ cp /bin/mosctl /opt/ltsp/i386/bin/ cp /bin/migrate /opt/ltsp/i386/bin/
21. 因為/opt/ltsp/i386目錄最後是客戶端的根文件系統,需要的工具都可以複製到相應的目錄中。因為/opt/ltsp/i386/etc/hosts文件是連接,因此需要先刪除后複製新文件。
cp /bin/touch /opt/ltsp/i386/bin rm -f /opt/ltsp/i386/etc/hosts cp /etc/hosts /opt/ltsp/i386/etc/ cp /etc/rc.d/init.d/openmosix /opt/ltsp/i386/etc/rc.openmosix
22. 創建客戶端的/mfs目錄:
mkdir /opt/ltsp/i386/mfs
23. 修改客戶端文件系統配置文件,加入mfs的配置:
cd /opt/ltsp/i386/etc vi fstab none /mfs mfs dfsa = 1 0 0
24. 修改客戶端啟動進程腳本,加入啟動openmosix的配置,禁止客戶端提交集群計算的設置,和裝載/mfs文件系統的配置。
vi /opt/ltsp/i386/etc/rc.local # OpenMosix startup section # we don't want any terminal processes to migrate echo 1 >; /proc/mosix/admin/lstay # start mosix /etc/rc.openmosix start # mount mfs filesystem. doesn't work when done earlier mount /mfs # End OpenMosix Startup Section
25.配置完成後準備軟盤製作以太啟網啟動盤。訪問www.Rom-O-matic.net網站,選擇網卡類型生成乙太網啟動晶元的映象,保存到Linux上,使用cat生成啟動軟盤。本例中使用3C905B。放入一張空白三吋軟盤。
cat eb-5.0.7-3c905b-tpo100.lzdsk >; /dev/fd0
26. 修改LTSP客戶端啟動配置文件/opt/ltsp/i386/etc/lts.conf,禁止啟動X Windows,修改參數X_USBMOUSE_BUTTONS = 3,即啟動文本界面。
27. 確認/etc/exports文件包含共享客戶端根文件系統和交換區內容:
more /etc/exports /opt/ltsp/i386 192.168.0.0/255.255.255.0(ro,no_root_squash) /var/opt/ltsp/swapfiles 192.168.0.0/255.255.255.0(rw,no_root_squash)
28. 將以太啟動軟盤放入客戶端,開機並確認正常啟動,正常獲得動態地址,載入內核成功,初始化腳本正常運行,主機名自動生成,openmosix正常初始化,沒有任何錯誤提示。
29. 回到伺服器,通過檢查/mfs文件系統來檢查mfs文件系統。
30. 啟動mosmon監控程序來檢查通訊是否有效,這是剛加入3個節點時,啟動setiathome計算的狀態。將下載的應用展開在/dw目錄下,注意命令的格式。
mosrun -j1-3 /mfs/1/dw/setiathome1 -nolock
31. 製作啟動盤,陸續加入節點,MOSIX集群就創建完了。
典型的配置文件
/etc/mosix.map1 192.168.0.254 12 192.168.0.1 253
/etc/dhcpd.confdefault-lease-time 21600;max-lease-time 21600;ddns-update-style none;allow booting;allow bootp;option subnet-mask 255.255.255.0;option broadcast-address 192.168.0.255;option routers 192.168.0.254;option domain-name-servers 192.168.0.254;option domain-name "mosix";option root-path "192.168.0.254:/opt/ltsp/i386";shared-network NODES { subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.100 192.168.0.253; use-host-decl-names on; option log-servers 192.168.0.254; if substring (option vendor-class-identifier, 0, 9) = "PXEClient" { filename "/lts/pxe/pxelinux.bin"; } else { filename "/lts/vmlinuz-2.4.18-mosix"; option host-name = concat("node" , binary-to-ascii( 10, 8, "", substring(reverse( 1, leased-address), 0, 1))); } }}group { use-host-decl-names on; option log-servers 192.168.0.254; host node001 { hardware ethernet 00:E0:06:E8:00:84; fixed-address 192.168.0.1; filename "/lts/boot/bootp/vmlinuz.eepro100.bootp"; } host node002 { hardware ethernet 00:D0:09:30:6A:1C; fixed-address 192.168.0.2; filename "/lts/boot/bootp/vmlinuz.tulip.bootp"; } host node003 { hardware ethernet 00:D0:09:30:28:B2; fixed-address 192.168.0.3; # kernels are specified in /tftpboot/lts/boot/pxe/pxelinux.cfg/ filename "/lts/boot/pxe/pxelinux.bin"; }}
/etc/exports/opt/ltsp/i386 192.168.0.0/255.255.255.0(ro,no_root_squash)/var/opt/ltsp/swapfiles 192.168.0.0/255.255.255.0(rw,no_root_squash)
/etc/hosts 和 /opt/ltsp/i386/etc/hosts192.168.0.254 mosix192.168.0.1 node001192.168.0.2 node002192.168.0.3 node003192.168.0.4 node004
省略一部分
192.168.0.253 node253127.0.0.1 localhost.localdomain localhost/opt/ltsp/i386/etc/fstabnone /mfs mfs dfsa=1 0 0
/opt/ltsp/i386/etc/lts.conf SERVER = 192.168.0.254 XSERVER = off X_MOUSE_PROTOCOL = "PS/2" X_MOUSE_DEVICE = "/dev/psaux" X_MOUSE_RESOLUTION = 400 X_MOUSE_BUTTONS = 3 X_USBMOUSE_PROTOCOL= "PS/2" X_USBMOUSE_DEVICE = "/dev/input/mice" X_USBMOUSE_RESOLUTION = 400 X_USBMOUSE_BUTTONS = 3 USE_XFS = N LOCAL_APPS = N RUNLEVEL = 3 SOUND = Y VOLUME = 75
常見問題和解決方法
內核編譯失敗怎麼辦?
編譯內核是MOSIX集群的最大操作,對於沒有編譯過內核的人會遇到很多編譯失敗的問題。對於經常出現的問題和解決辦法如下:
編譯失敗在SCSI設備時,如果沒有SCSI設備,在編譯配置菜單中除去SCSI選項。
編譯失敗在SiS晶元時,如果沒使用SiS晶元組的主板,在編譯菜單中除去SiS晶元支持選項。
更改編譯文件后仍然編譯失敗時,注意將上一次編譯的中間文件清理乾淨,使用如下命令(不要忘記備份.config文件):
cd /usr/src/linux-2.4.18-om2 cp .config /usr/src/config.backup/config-newkernel make mrproper
DHCP為什麼不能正確讀取配置文件?
確認你的DHCP版本要3.0.1以上,可以到RedHat的網站上下載。另外檢查/etc/dhcpd.conf文件配置是否有錯誤,可以參考本例的文件。
配置完啟動時出現sshd載入失敗時怎麼辦?
該情況出現在MOSIX修改sshd的屬性后出現,你可以載入MOSIX的ssd守護進程,操作如下:
chkconfig sshd.pre-mosix on service sshd.pre-mosix start
首次啟動MOSIX時提示Host name lookup failure是什麼原因?
這是由於/etc/hosts文件沒有正確標出主機名對應的地址造成的,修改/etc/hosts文件正確就可以。
首次啟動MOSIX時提示以下錯誤:
setpe: the supplied table is well-formatted,
but my IP address (127.0.0.1) is not there!
是什麼原因?
這是由於RedHat Linux 的host文件預設只有127.0.0.1對應主機名,可以將/etc/hosts文件中的127.0.0.1 mosix localhost分開描述:
vi /etc/hosts 192.168.0.254 mosix 127.0.0.1 localhost
製作LTSP啟動內核映象失敗
注意使用的LTSP初始化工具是ltsp_initrd_kit-3.0.1-i386.tgz版本,其他的版本因為修改了初始化腳本,目前沒有方法可以初始化成功。
另外製作啟動內核映象時必須有mknbi-1.2-6.noarch.rpm包,從RedHat的網站上可以下載最新的版本。
配置ltsp客戶端DHCP啟動失敗
檢查/etc/dhcpd.conf文件指向的啟動內核路徑正確,確認物理連接正確,確認軟盤未損壞,確認LTSP內核啟動文件正常編譯。確認安裝並啟動了tftp守護進程,確認/etc/exports文件共享了正確的客戶端根文件系統路徑。
配置ltsp客戶端啟動X Windows失敗
如果需要在客戶端啟動X Windows,需要安裝LTSP的X包,並根據顯示卡的不同安裝不同的X伺服器版本。
rpm -Uvh ltsp_x_core-3.0.1-1.i386.rpm rpm -Uvh ltsp_x_fonts-3.0.0-0.i386.rpm
下載連接是:http://sourceforge.net/project/showfiles.php?group_id=17723
如果並不需要啟動X Windws,需要修改/opt/ltsp/i386/etc/lts.conf文件中X_USBMOUSE_BUTTONS = 3即可啟動文本界面。
LTSP客戶端啟動后找不到主機名或不能解析主機名
確認/opt/ltsp/i386/hosts文件不是符號連接,並且和/etc/hosts文件一致,確認/etc/dhcpd.conf文件中加入自動生成主機名配置,確認生成的主機名與hosts文件中的一致。
LTSP客戶端啟動后不能啟動mosix
確認/etc/mosix.map和/opt/ltsp/i386/etc/mosix.map文件一致。
啟動mosix后沒找到mfs目錄
手動創建/mfs目錄:
mkdir /mfs mkdir /opt/ltsp/i386/mfs
背景資料:
相關名詞
SMP:對稱多處理器
LTSP:Linux終端伺服器項目 (Linux Terminal Server Project)
Kernel:內核
Ramdisk:內存虛擬盤
Etherboot:以太啟動
Bootrom:網卡啟動晶元
大型主機(Mainframes),超級計算機(Supercomputers)和集群(Clusters)
縱觀計算機的歷史,最先讓人了解的就是大型主機和超級計算機,這是計算機歷史的一部分,沒有這些大傢伙,就沒有今天的個人電腦。這些大傢伙通常是一個或幾個有強大研發隊伍和資金的廠商完成,最初的目的是軍方或政府的需要,很多大學的研發也促成了這些大傢伙更強大。一般情況下,大型主機和超級計算機都使用超過8個,多達上百個的CPU和自己的專用操作系統,計算機歷史上很多的重要成員都和這些大傢伙有關,IBM,DEC,Cray,SGI,HAL。大型主機已經成為歷史,而超級計算機成了各國技術實力的爭奪焦點,但是目前個人電腦的發展使集群成為競爭超級計算機的強大對手,集群的CPU數和浮點能力和超級計算機的差距已經越來越近。
Cluster
集群系統,也有成為機群和群集系統的。集群主要分為三類:容錯集群(Fail-over Cluster),負載均衡集群(Load balancing Cluster),高性能計算集群(High Performance Computing)。
容錯集群是指兩台主機通過兩個或兩個以上網路連接的系統,其中一個連接稱為心跳線(heartbeat),利用每台主機上的服務進程監控對方主機的狀態,一旦發現對方主機宕機或出現不能正常工作的情況,心跳線會反映給互為備份的另外一台主機,該主機則會接替出問題的主機。典型的使用場景是空軍的雷達追蹤系統。
負載均衡集群一般用於相應網路請求的網頁伺服器,代理伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。
高性能計算集群是指具有響應大量計算的性能,可以作為數據中心使用的計算機的集合。比如壓縮mp3,氣象雲圖的分析等。
集群模式
(N)UMA非一致性內存訪問(Non-)Uniform Memory Access一般是指通過執行特殊的程序代碼對內存的共享訪問。在Linux內核中,可以執行對訪問時間內的不同內存區域進行交叉訪問,也就是內核進程可以使用接近CPU使用時的內存。對正在使用內存區域的訪問,才可以共享。線性的內存訪問是無法共享的。
PVM/MPI是指并行虛擬機(Parallel Virrual Machine)和信息傳遞界面(Message Passing Interface)。在Beowulf的世界里最常提到的就是這兩個概念,該軟體包已經提供了多平台的版本。通過開放式的標準信息傳遞庫,并行機之間可以通訊,事實上PVM也是一組庫,程序可以使用這些編譯庫來改造程序適應并行系統。但是這些都要相應的修改源程序,系統內核事實上並沒有發生改變。
其他模式:Turbo Linux EnFuzion,Platform等網格計算(Grid Computing)不必討論這類集群不是單純意義的集群,以Enfuzion為例,EnFuzion是Turbo Linux收購的一個軟體改良版(前身就叫Cluster),因為使用了Java,可以跨平台,使用駐留系統服務來監控集群間的通訊,事實上是任務分發和監控器,依賴於計算數據離散性,對於數據不可分的程序,無能為力。也就是說每個節點都運行相同的程序,但處理的數據是不同的,該集群提供了控制這些程序的界面,跨平台性也只是依賴於計算的應用有跨平台版本,而其只提供跨平台的監控。主要集中在CPU空閑的監控和計算的再分配。
數據可分和程序可分
集群計算中最重要的就是分佈,根據不同的應用,分為兩種:數據可分和程序可分。
數據可分是指數據間沒有必然聯繫或聯繫在結果的基礎上,比如mp3的壓縮,每個單獨的mp3互不關聯,或者有限元計算的某個步驟,單一的曲面計算生成結果再參加後面的關聯計算,更著名的是SETI@home通過分析射電望遠鏡的信號尋找外星人,這是典型的將中間分析結果傳遞給下一部分析,這就是數據可分,這最適合網格計算。
程序可分,用過ANSYS的人都知道商業軟體分為單處理器和多處理器版本,因為計算量大,所以支持SMP的計算軟體和使用單一CPU的軟體是不同的,多CPU共同運算時也要考慮到內存的訪問,處理通訊和負載均衡,除非操作系統支持,不然使用DOS和Windows9x很難用到第二個CPU(甚至不可見),有了操作系統的支持,應用程序也要支持,即使操作系統支持并行,應用程序不可分的話,只能使用1/n(n=CPU數量)的處理能力,典型的例子就是2CPU的WindowsNT/2000下使用單處理器版本的ANSYS,處理器進程顯示50%,但是2CPU共同生效。而使用多處理器版本時,2CPU都可以在98%的使用率。因此程序可分是集群重要的應用基礎,即使程序本身不可分,而集群支持子進程的遷移,也意味著類似SMP系統支持程序可分。
需要強大計算的應用
財務與社會行為分析,使用數學模型模擬的計算。
音樂,圖象等多媒體數據處理,例如mp3壓縮,動畫渲染,後期處理。
流體力學,有限元分析,例如樂高玩具的數字模擬強度分析。
編譯,資料庫挖掘。
醫學研究,例如AIDS和DNA的結構分析,成功運作的有UD(United Devices http://www.ud.com/home.htm)
天文研究,例如SETI@home,在家尋找外星人項目(http://setiathome.ssl.berkeley.edu/index.html)。天氣和海浪預報。
電子電路數字模擬分析,例如研發新的處理器。
窮舉解密,例如破解DES密碼(http://www.distributed.net/index.html.en)。
正在研發的分散式計算系統
相關連接:www.beowulf.org
Plan 9
1993年源於貝爾實驗室(Computing Sciences Research Center of Bell Laboratories) 開發的新分散式操作系統,建立在Unix和C與C++基礎上,支持的處理器有Intel x86, Sparc, Alpha, Power PC, 和ARM。目前沒有象KDE漂亮的圖形界面,使用上接近UNIX,標準UNIX工具也可以使用,但是從設計原理和基礎上不同於UNIX,核心已經完全重寫並設計成網路操作系統,就像設計完UNIX后的補充,其中設計元素包括用戶端的終端,存儲固定文件的伺服器和提供更快CPU的計算伺服器,提供用戶驗證和網關特性。
目前吸引人的焦點是Plan 9的文件系統可以支持所有的系統服務進程,也就是說所有任何用戶可以使用的資源在文件系統中都可以找到唯一的命名,已經可以稱為命名空間了。通過網路層的協議9P來訪問所有的資源,這一點類似NFS,但不同之處是對用戶不透明。支持異構的網路:乙太網,光纖和普通數據機,還有ISDN的連接。
較早的Plan 9更像文件系統,現在的系統支持更多的用戶併發。標準情況下,用戶可以運行任意的從他們的終端上或CPU伺服器上啟動應用,應用將會從文件伺服器上獲取數據,並且可以小到在筆記本上運行。因為具備了高可配置性,因此擺脫了客戶機伺服器體系的中心控制模式。
相關連接:http://plan9.bell-labs.com/plan9dist/
其他的網格計算
http://www.gridcomputingplanet.com/ 網格計算的信息站點
http://wwws.sun.com/software/gridware/ SUN的網格計算軟體
http://www.turbolinux.com/enfuzion TurboLinux的EnFuzion
如何編譯內核
首先你的手中要有一個Linux的分發版本,RedHat是個不錯的選擇,為了具有普遍性,下面的操作是在RedHat 7.2的基礎上完成的。
當你安裝完Linux后,你需要確認下列的rpm包已經存在(*是指不同的版本),你可以使用rpm -Uvh來安裝(絕大多數文件在CD2中) :
mount /dev/cdrom /mnt/cdrom cd /mnt/redhat/RPM rpm -Uvh kernel-headers* rpm -Uvh kernel-source* rpm -Uvh kernel-doc* rpm -Uvh dev86* rpm -Uvh make-* rpm -Uvh glibc-devel* rpm -Uvh cpp* rpm -Uvh ncurses-devel* rpm -Uvh binutils* rpm -Uvh gcc-2* cd /usr/src umount /mnt/cdrom
如果你從www.kernel.org上下載了Linux穩定的內核2.4.18,可以將他解開並移到/usr/src目錄下:
tar xvfz linux-2.4.18.tar.gz mv linux /usr/src/linux-2.4.18
你可以修改Makefile文件來改變編譯的內核名稱,RedHat 7.2的內核版本是2.4.7.10,首先要清理編譯的過程文件,將當前版本內核配置文件作為新編譯內核版本的配置使用,編譯中的錯誤輸出到指定文件
cd /usr/src/linux-2.4.18 make mrproper cp -p /usr/src/linux-2.4/config/kernel-*-i686.config .config make oldconfig make dep make bzImage 2 >; errors make modules 2 >; mod-errors cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.4.18 cp -p System.map /boot/System.map-2.4.18 make modules_install
編譯內核的初始化文件:
new-kernel-pkg -install -mkinitrd -depmod 2.4.18 mkdir /mnt/initrd gzip -dc /boot/initrd-2.4.8.img >; /tmp/initrd.img mount -o loop /tmp/initrd.img /mnt/initrd ls -R /mnt/initrd umount /mnt/initrd
修改GRUB的啟動配置(/boot/grub/grub.conf)文件,加入新編譯內核的條目:
vi /boot/grub/grub.conf title Red Hat Linux (2.4.18) root (hd0,0) kernel /vmlinuz-2.4.18 ro root=/dev/hda2
下次啟動時就可以選擇了。
www.Rom-O-matic.net
動態創建乙太網啟動映象。目前的版本是5.0.7。使用的原理就是用軟盤啟動來模擬網卡的啟動晶元。主頁是互動式的,通過下拉菜單,可以選擇網卡的類型和映象類型。在配置菜單中還可以設置支持的啟動類型和其他的參數,最後點擊Get ROM將提示保存映象文件。把保存的結果傳到Linux上,使用cat命令將映象文件創建以太啟動軟盤。
LTSP的啟動過程
LTSP的啟動過程需要很多步驟,了解這些步驟可以很好排除出現的問題:
以下的例子硬體環境是
客戶端DELL Gx1 PII 350MB 128MB 3C905B ATI rage128
伺服器端運行RedHat 7.2和DHCP服務
網路地址範圍192.168.0.0網段,子網掩碼是255.255.255.0
客戶端開機自檢
在開機自檢的過程中,BIOS將檢測擴展的晶元,也就是網卡上增加的用於乙太網啟動的啟動晶元(bootrom),BIOS可以檢測到網卡上的啟動晶元。 一旦開機自檢完成,執行步驟將到以太啟動代碼。 以太啟動代碼檢測網卡類型,當檢測正確時,初始化網卡。
以太啟動代碼將在本地網段中發申請DHCP的廣播,網卡的MAC地址將包括在該廣播中。
伺服器端的DHCPD守護進程將收到來自客戶端的廣播申請,檢查配置文件中與接受到客戶端MAC地址相匹配的參數。
DHCPD守護進程發送回復的數據包,該數據包中包括:該客戶端的IP地址,本網段的子網掩碼,下載內核的路徑,需要裝載的根文件系統的路徑,傳遞內核命令行執行的參數。
以太啟動代碼將從伺服器接受這些數據,隨後開始按照提供的數據配置網卡的TCP/IP設置。
使用TFTP(Trivial File Transfer Protocol直接文件傳輸協議),以太啟動代碼可以從伺服器上下載內核。
一旦內核下載到客戶端完成,以太啟動代碼將把內核放到內存正確的位置。
完成必要步驟之後,控制權交到內核控制,內核將開始初始化整個系統和全部的可識別外圍設備。
下面才是真正的開始。因為內核是文件系統的鏡像,需要象調入內存的虛擬盤中,並作為根文件系統臨時裝載到系統中。用內核命令行表示root=/dev/ram0引導內核鏡像作為根文件系統裝載。
正常情況下,內核完成啟動過程后,將啟動init進程。需要指明內核如何調入shell腳本,用init=/linuxrc命令行表示。
/linuxrc腳本將掃描PCI匯流排,搜索網卡等。每種類型的PCI驅動都會在/etc/niclist中尋找匹配的參數。一旦發現匹配的,該網卡類型的模塊將返回給內核用來載入。對於ISA介面的卡,驅動模塊必須被內核以命令行方式載入,並且需要特別指定中斷和佔用的地址。
一旦網卡被識別,/linuxrc腳本將載入前面返回的內核模塊。
dhclient將隨後運行來從DHCP伺服器來的確認請求。這裡需要特別區分確認的類型,從以太啟動得到的確認將被內核取消,內核將忽略任何曾經特殊指定過根路徑的NFS(網路文件系統)伺服器。如果你的NFS伺服器和TFTP伺服器不是同一台時,這一點非常重要。也就是說這是系統不再依賴TFTP伺服器而是開始使用NFS伺服器來裝載文件系統了。