在Power System自動部署Linux開源系統(tǒng)
在信息技術變化日新月異的今天, Linux 開源系統(tǒng)以其突出的高性價比,穩(wěn)定性和靈活的跨平臺支持,迅速滲透到各個行業(yè)的應用領域; Power System 憑借其在性能上的優(yōu)勢一直在服務器領域處于前列。 借助日漸成熟的虛擬化技術,Linux 開源系統(tǒng)和 Power System 將會更加有效的結合,在生產(chǎn)應用中發(fā)揮出更大的作用。然而在Power System 上自動部署 Linux 并不像在x86架構下那么為人熟悉,常常會因為各種原因而導致部署失敗。本文將用實例介紹其部署特點及應注意的問題,這會使在Power System 上管理維護Linux工作變得簡單方便。
本文以在IBM Power 7邏輯分區(qū)LPAR( Logic Partition )中部署 Linux (主要發(fā)行版 Redhat, SuSE)為例,總結在 Power System 上自動部署 Linux 系統(tǒng)的實踐及經(jīng)驗。
一、Power Linux部署技術背景
1、背景簡介
Linux 誕生至今,它作為一種開源操作系統(tǒng),已經(jīng)可以在大多數(shù)計算機體系結構上部署,涉及平臺從嵌入式芯片系統(tǒng)到大型超級計算機。
一直以來 Power 服務器都支持 Linux 操作系統(tǒng),但限于其應用范圍,普及度和使用度都不高,而與具體系統(tǒng)部署相關描述就更加寥寥。隨著 IBM 宣布在北京成立 Power System Linux 中心,這標志著 Power 服務器將在支持 Linux 企業(yè)服務方面發(fā)力,越來越多的企業(yè)級應用會運行在 Power Linux 上。相應地各種 Linux 系統(tǒng)的安裝需求會越來越多,如果能使 Linux 自動部署將會給日常維護工作帶來極大的方便。
2、Power System 7邏輯分區(qū)的兩種運行模式
與 x86 平臺不同的是, Power 服務器的硬件可擴展性,硬件虛擬化功能。 本文介紹基于 POWER7 的系統(tǒng)針對邏輯分區(qū)可以提供 2 種模式:P6/P6+模式和P7模式。其區(qū)別如下表所示:
注:同一臺 POWER7 服務器內(nèi)的不同 LPAR 可以運行在不同模式下。
通過以上對比,不難看出系統(tǒng)運行在 Power 7 模式下會使Power system的各方面性能得到更有效地發(fā)揮。
3、Linux對Power System 7支持情況
許多Linux發(fā)行版都可以運行在Power系列服務器上,這里主要列舉Redhat 和 SuSE 對Power 7支持的具體情況:
Linux在Power 7 邏輯分區(qū)上支持處理器及線程情況:
值得注意的幾點:
1. SLES10 SP3 and RHEL 5.5 在POWER7上只支持以Power6兼容模式運行
2. SLES 11 and RHEL6 默認情況下在POWER7上只支持以Power7模式運行
3. 運行SLES 11或RHEL 6的邏輯分區(qū),如果以Power6模式從Power6系統(tǒng)上遷移到Power7上,當重新啟動系統(tǒng)的時候將被自適應為Power7模式運行
4. 當Power7的邏輯分區(qū)被遷移到Power6以后,重啟系統(tǒng)以后將以Power6模式運行
#p#
二、Power Linux網(wǎng)絡部署原理及方式
1、Power Linux網(wǎng)絡部署原理
Power 上 Linux 的網(wǎng)絡安裝原理與 x86 架構基本類似,不同的是:在系統(tǒng)啟動的時,PowerPC 架構系統(tǒng)使用的是 Open Firmware,x86 架構系統(tǒng)使用的是 BIOS。 這種差異就導致Power上無法直接使用 pxelinux 作為網(wǎng)絡引導管理器(boot loader)來安裝Linux系統(tǒng),Yaboot 作為 PowerPC 下的網(wǎng)絡引導管理器(boot loader)將代替pxelinux完成網(wǎng)絡引導安裝操作。
Yaboot 是一個針對 PowerPC 的網(wǎng)絡引導管理器,主要用于基于Open Firmware 啟動引導的機器,包括Apple Macintosh, IBM RS/6000, IBM pSeries and IBM OpenPower。
PowerPC 下的 Linux 網(wǎng)絡啟動過程,如下圖所示:
PowerPC 下的 Linux 網(wǎng)絡啟動過程
網(wǎng)絡啟動過程描述:
- 在網(wǎng)絡環(huán)境準備好后,被安裝節(jié)點加電啟動;
- 被安裝節(jié)點選擇啟動方式:硬盤、光盤、網(wǎng)絡。圖中選擇網(wǎng)絡啟動,發(fā)送 dhcp 請求;
- 安裝服務器獲取 dhcp 請求后,根據(jù) dhcpd.conf 的配置給被安裝節(jié)點分配IP;
- 通過yaboot獲取并啟動內(nèi)核初始化程序;
- 被安裝節(jié)點內(nèi)核啟動,尋找安裝介質并開始安裝工作;
- 被安裝節(jié)點系統(tǒng)安裝成功。
2、Power Linux網(wǎng)絡部署方式
Power 平臺下 Linux 可以選擇兩種網(wǎng)絡安裝方式:一種是基于 AIX NIM 服務器,另外一種是基于Linux DHCP 服務器。
兩種方式的使用特點具體如下:
基于 AIX NIM 服務器:
- 使用直接的 Bootp 請求
- 不要求提供網(wǎng)卡的 MAC 地址
需要被安裝 Linux 的網(wǎng)絡啟動鏡像文件(即,安裝光盤目錄下文件 images/netboot/ppc64.img 下同)
在 Linux 的網(wǎng)絡啟動鏡像文件不大于32MB的情況下,本安裝方式可以工作。
特別注意:當網(wǎng)絡啟動鏡像文件大于32MB時,不得不采用另外的方式進行網(wǎng)絡安裝
(例如:RHEL6 GA 64位系統(tǒng)的網(wǎng)絡啟動鏡像文件--images/netboot/ppc64.img是大于32MB的,將不能直接采用此文件并基于這種方式網(wǎng)絡安裝)
基于 Linux DHCP 服務器:
- 使用廣播的Bootp 請求
- 要求提供網(wǎng)卡的 MAC 地址
- 使用 Yaboot 定義進行網(wǎng)絡啟動安裝
- 沒有網(wǎng)絡啟動鏡像大小限制
根據(jù)以上特點,管理員可以根據(jù)自己硬件的環(huán)境情況,選擇合適的安裝方式。#p#
三、以Redhat和SuSE為例介紹自動部署及實踐
介紹網(wǎng)絡自動化部署 Linux 的文章已經(jīng)很多,這里就不再詳細描述安裝步驟,請參考相關文章。本節(jié)將偏重介紹 Linux 在具體的 Power 邏輯分區(qū)網(wǎng)絡自動安裝時應注意的問題和實踐。
1、準備邏輯分區(qū)和安裝介質
如果在邏輯分區(qū)上安裝 Linux 系統(tǒng),需要事先劃分邏輯分區(qū),并分配足夠大小的硬盤空間。 可以通過購買安裝 CD/DVD,或者從網(wǎng)絡上下載安裝鏡像文件。獲得安裝介質后,將對應安裝文件遷移到共享服務器上。
注意:獲得介質必須是針對 PowerPC 平臺的安裝文件;檢查實際存放的安裝介質路徑與NFS服務共享目錄保持一致。
2、配置安裝服務器
分別以兩種安裝方式介紹 TFTP/DHCP 的配置情況:
a. 基于NIM服務器:
TFTP資源定義:將 Red Hat/SuSE Linux 網(wǎng)絡引導鏡像,從安裝介質中復制到 /tftpboot 下,如下所示:
- root@nim:/tftpboot> ls -l *
- -rw-r--r-- 1 root system 11333732 Nov 15 2012 rhel5u5-netboot.img
- -rw-r--r-- 1 root system 11612524 Nov 15 2012 rhel5u6-netboot.img
- -rw-r--r-- 1 root system 15006880 Aug 27 17:19 rhel5u7-netboot.img
- -rw-r--r-- 1 root system 9512595 Nov 15 2012 sles10-sp3-inst32
- -rw-r--r-- 1 root system 10682935 Nov 15 2012 sles10-sp3-inst64
- -rw-r--r-- 1 root system 10082439 Nov 15 2012 sles10-sp4-inst32
- -rw-r--r-- 1 root system 11307427 Sep 9 18:08 sles10-sp4-inst64
- -rw-r--r-- 1 root system 19809567 Sep 9 18:18 sles11-inst64
- -rw-r--r-- 1 root system 23733099 Sep 9 19:20 sles11-sp1-inst64
BOOTP配置定義:
- #/etc/bootptab:
- test1-rhel5:bf=/tftpboot/test1-rhel5:ip=192.168.0.10:ht=ethernet:sa=192.168.0.100:sm=255.255.255.0:
- test2-sles10:bf=/tftpboot/test2-sles10:ip=192.168.0.11:ht=ethernet:sa=192.168.0.100:sm=255.255.255.0:
- root@nim:/tftpboot> ls -l test*
- lrwxrwxrwx 1 root system Sep 9 18:15 test1-rhel5 -> rhel5u5-netboot.img
- lrwxrwxrwx 1 root system Sep 9 18:30 test2-sles10 -> sles10-sp3-inst64
注:檢查 /etc/tftpaccess.ctl 文件,確認網(wǎng)絡安裝需訪問的目錄定義生效
- # NIM access for network boot
- allow:/tftpboot
在每次更改 Bootp 配置之后,需要運行如下命令使新的配置生效。
- refresh -s inetd
b. 基于 Linux DHCP服務器:
TFTP資源定義:
- root@dhcp:/tftpboot> tree /tftpboot
- |
- |--pSeries/
- | |-- rhel
- | | |-- vmlinuz
- | | `-- ramdisk.image.gz
- | |-- sles
- | | `-- sles11-sp2-inst64
- | `-- yaboot
- `-- yaboot.conf
DHCP配置情況:
- #/etc/dhcp/dhcpd.conf
- option domain-name "test.power.com";
- option domain-name-servers 192.168.0.8;
- option routers 192.168.0.1;
- ddns-update-style none;
- ignore unknown-clients;
- allow bootp;
- subnet 192.168.0.0 netmask 255.255.255.0 {
- default-lease-time 86400;
- max-lease-time 604800;
- host test1-rhel5 {
- next-server 192.168.0.102;
- filename "pSeries/yaboot";
- hardware ethernet AA:BB:CC:DD:11:22;
- fixed-address 192.168.0.10;
- }
- host test2-sles10 {
- next-server 192.168.0.102;
- filename "pSeries/yaboot";
- hardware ethernet AA:BB:CC:DD:11:33;
- fixed-address 192.168.0.11;
- }
- }
Yaboot的配置定義:
- default=test1-rhel5
- timeout=100
- image=pSeries/rhel/vmlinuz #指定內(nèi)核鏡像文件路徑
- label=test1-rhel5
- initrd=pSeries/rhel/ramdisk.image.gz#指定內(nèi)存鏡像文件路徑append="ks=nfs:9.181.0.102:/export/ksFiles/test1-rhel5.ks.cfg ksdevice=eth0\
- initrd=pSeries/rhel/ramdisk.image.gz\
- dns=192.168.0.8 ip=192.186.0.10 gateway=192.186.0.1 netmask=255.255.255.0\
- method=nfs:9.181.0.102:/export/redhat5u5p\
- keymap=us lang=en_GB.UTF-8 vnc"#指定kickstart文件及網(wǎng)絡安裝參數(shù)
- read-only
- image=pSeries/rhel/sles11-sp2-inst64#指定網(wǎng)絡引導內(nèi)核鏡像文件路徑
- label=test2-sles10#定義安裝標簽append="autoyast=nfs://192.186.0.102:/export/autoyast/test2-sles10.yast.xml\
- dns=9.181.2.101\install=nfs://192.186.0.102:/export/SLES11SP2\
- hostip=192.186.0.11 gateway=192.186.0.1 netmask=255.255.255.0"#指定AutoYaST2文件及網(wǎng)絡安裝參數(shù)
- #此處添加”\”僅為顯示需要,實際配置中均為連續(xù)一行。
3、NFS服務定義:
共享對應安裝介質存放目錄,為網(wǎng)絡安裝提供安裝介質連接。
- root@dhcp:/tftpboot> exportfs
- /export <world>
#p#
4、自動安裝應答文件kickstart/AutoYaST:
定義自動安裝應答文件是自動部署中的重要環(huán)節(jié)。kickstart/AutoYaST2分別是Redhat和SuSE下的自動化安裝管理工具,在此工具中不僅可以定義幾乎所有交互安裝時需要的信息(包括指定分區(qū)大小,需要安裝軟件等),還可以定義在安裝之前或之后執(zhí)行自定義的腳本。這讓系統(tǒng)安裝操作范圍得到很大的擴展,使得系統(tǒng)部署工作可以很輕松地滿足各種系統(tǒng)安裝需求。
關于這兩個工具的使用說明,讀者可以訪問本文給出的相關連接進行了解,下面分別給出 Redhat 的kickstart 和 SuSE 的AutoYaST2 兩個實例模板
- #test1-rhel5.ks.cfg
- install
- nfs --server 192.168.0.102 --dir /export/redhat5u5p
- key --skip
- lang en_US.UTF-8
- network --device eth0 --bootproto static --ip 192.168.0.10 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 192.168.0.8 --hostname test1-rhel5
- rootpw 123456
- firewall --disabled
- authconfig --enableshadow --enablemd5
- selinux --permissive
- timezone --utc Asia/Shanghai
- reboot
- bootloader --location=partition --driveorder=sda --append="console=hvc0 rhgb quiet"
- clearpart --all --initlabel --drives=sda
- part prepboot --fstype "PPC PReP Boot" --size=10 --ondisk=sda
- part / --fstype ext3 --size=1024 --ondisk=sda
- part swap --size=2048 --ondisk=sda
- part pv.5 --size=100 --grow --ondisk=sda
- volgroup basevg --pesize=32768 pv.5
- logvol /tmp --fstype ext3 --name=tmp --vgname=basevg --size=1024
- logvol /opt --fstype ext3 --name=opt --vgname=basevg --size=1024
- logvol /usr --fstype ext3 --name=usr --vgname=basevg --size=2976
- logvol /var --fstype ext3 --name=var --vgname=basevg --size=2048
- logvol /home --fstype ext3 --name=home --vgname=basevg --size=1024
- %packages
- @admin-tools
- @base
- @core
- @editors
- @base-x
- @gnome-desktop
- %post
- echo "search test.power.com" > /etc/resolv.conf
- echo "nameserver 192.168.0.8" >> /etc/resolv.conf
- BOOT=`nvsetenv | grep boot-device | sed s/:.*$/,0/ | cut -d '=' -f 2`
- nvsetenv boot-device $BOOT
- #test2-sles10.yast.xml 由于篇幅限制,本例在保證定義完整情況下對具體配置有所刪減,請使用時參考相關文檔
- <?xml version="1.0"?>
- <!DOCTYPE profile SYSTEM "/usr/share/autoinstall/dtd/profile.dtd">
- <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
- <configure>
- <networking>
- <interfaces config:type="list">
- <interface>
- #在此處定義網(wǎng)絡配置信息,具體請格式參考AutoYaST2文檔
- </interface>
- </interfaces>
- </networking>
- <scripts>
- #可以在此處定義安裝前/后執(zhí)行的腳本,具體請格式參考AutoYaST2文檔
- </scripts>
- </configure>
- <install>
- <bootloader>
- <global>
- <activate>true</activate> <boot_chrp_custom>/dev/sda1</boot_chrp_custom>
- </global>
- <loader_type>ppc</loader_type>
- </bootloader>
- <general>
- <clock>
- <hwclock>localtime</hwclock>
- <timezone>Asia/Shanghai</timezone>
- </clock>
- </general>
- <partitioning config:type="list">
- <drive>
- <device>/dev/sda</device>
- <initialize config:type="boolean">true</initialize>
- <use>all</use>
- </drive>
- </partitioning>
- <runlevel>
- <default>3</default>
- </runlevel>
- <users config:type="list">
- <user>
- <encrypted config:type="boolean">false</encrypted>
- <home>/root</home>
- <shell>/bin/bash</shell>
- <uid>0</uid>
- <user_password>123456</user_password>
- <username>root</username>
- </user>
- </users>
- <software>
- <packages config:type="list">
- <package>perl-Digest-MD4</package>
- </packages>
- <patterns config:type="list">
- <pattern>Basis-Devel</pattern>
- <pattern>x11-64bit</pattern>
- </patterns>
- </software>
- </install>
- </profile>
5、HMC中網(wǎng)絡啟動邏輯分區(qū)
本文介紹在HMC中使用 lpar_netboot 命令,通過指定網(wǎng)絡引導服務器來啟動邏輯分區(qū)。
詳細命令如下所示:
啟動test1-rhel5
- lpar_netboot -f -i -T off -t ent -s auto -d auto -S 192.168.0.100 -G 192.168.0.1 -C 192.168.0.0 "LPAR01" "test1-rhel5" "POWER01"
啟動test2-sles10
- lpar_netboot -f -i -T off -t ent -s auto -d auto -S 192.168.0.100 -G 192.168.0.1 -C 192.168.0.0 "LPAR02" "test1-sles10" "POWER01"
通常情況下,在運行啟動命令大約十幾分鐘后,整個安裝部署工作將完成。你將得到一個全新的運行在Power System 7上的按照模板定制好的pLinux環(huán)境。
四、Linux在Power System上的自動部署經(jīng)驗總結
本文從Power Linux的技術背景介紹出發(fā),分析了Linux在Power虛擬化環(huán)境自動部署的原理及方式,并以具體安裝實例來說明自動部署的要點和使用網(wǎng)絡安裝命令的實踐,極大簡化了系統(tǒng)安裝的操作步驟,為Power平臺的Linux部署提供有力的技術支持。
本文著重介紹了Linux在Power system上自動部署的特點和常見問題及相應解決辦法,并結合實例詳細說明 PowerPC 下的系統(tǒng)引導管理器-- Yaboot 及其在網(wǎng)絡安裝中的使用方法。
【作者簡介】曲家富(系統(tǒng)工程師),任職于某大型外資IT企業(yè),從事系統(tǒng)管理工作,專注于系統(tǒng)自動化部署。