正如你所看到的一樣,你的機器在絕大多數時間是空閒的,如果你在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* r
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.1,選擇該項啟動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
編譯完成的內核將作為客戶端的內核系統,因此需要將模塊復制到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
您正在看的MySQL教程是:分布式集群Linux平台下。.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.cf
/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 [Default] 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內核啟動文件正常編譯
您正在看的MySQL教程是:分布式集群Linux平台下。。確認安裝並啟動了tFTP守護進程,確認/etc/exports文件共享了正確的客戶端根文件系統路徑。
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,可以跨平台,使用駐留系統服務來監控集群間的通訊,事實上是任務分發和監控器,依賴於計算數據離散性,對於數據不可分的程序,無能為力。
需要強大計算的應用
財務與社會行為分析,使用數學模型模擬的計算。
音樂,圖象等多媒體數據處理,例如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的連接。
您正在看的MySQL教程是:分布式集群Linux平台下。 較早的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.1 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服務器來裝載文件系統了。