標籤:
• 關於PXE無盤工作站系統的簡介
PXE無盤工作站系統是指由一台或多台“系統伺服器”和多台“PXE用戶端(無盤工作站)”通過 交換器 相連組成的區域網路系統。
(圖1:無盤工作站系統部署拓撲圖)
• 系統伺服器:通過DHCP+TFTP+NFS服務向無盤工作站提供系統支援
· DHCP服務:向PXE用戶端分發IP地址、子網路遮罩、網關等,並指定啟動引導檔案所在伺服器
(TFTP伺服器)的地址和PXE開機檔案(pxelinux.0)
· TFTP服務:向PXE用戶端傳輸PXE開機檔案、PXE引導設定檔、linux核心vmlinuz,以及系
統開機檔案initrd.img
· NFS服務:向PXE用戶端發布工作站的系統(整個根目錄“/”的複製);為了避免磁碟IO資源的
衝突,建議將複製的系統部署在儲存伺服器上
• PXE用戶端:PXE用戶端無需硬碟,但需要一塊支援PXE啟動的網卡,不過其他硬體比如主板、記憶體條、電源等,還是必須要的;將“網卡啟動”設定為首選
(圖2:PXE啟動流程圖)
• 部署之前,先要規劃好系統伺服器和無盤工作站的工作環境
• 系統內容
作業系統: |
CentOS release 6.5 x86_64 |
防火牆: |
關閉iptables服務並禁止其開機自啟;關閉selinux |
其他: |
配置好YUM倉庫:禁用無用的開機自啟服務(sshd服務和rpcbind服務不能禁用) |
• 軟體環境
dhcp-4.1.1-49.P1.el6.centos.x86_64 |
// 提供DHCP 服務;指定TFTP 地址及PXE 開機檔案 |
tftp-server-0.49-7.el6.x86_64 |
// 向無盤工作站傳輸系統開機檔案等 |
nfs-utils-1.2.3-64.el6.x86_64 |
// 共用發布工作站系統 |
syslinux-4.04-3.el6.x86_64 |
// 提供引導程式"pxelinux.0" |
rpcbind-0.2.0-11.el6.x86_64 |
// 為NFS 服務的依賴程式 |
dracut-004-388.el6.noarch |
// 用來製作啟動initrd 鏡像 |
dracut-network-004-388.el6.noarch |
// 依賴包,否則將導致PXE無法啟動 |
• 網路環境
主機類別: |
主機名稱: |
IP地址: |
子網路遮罩: |
網關/路由: |
系統伺服器A |
HostServerA |
192.168.8.8 |
255.255.255.0 |
192.168.8.254 |
系統伺服器B |
HostServerB |
192.168.8.9 |
255.255.255.0 |
192.168.8.254 |
無盤工作站 |
WorkStation/WS100~200 |
192.168.8.100~200 |
255.255.255.0 |
192.168.8.254/不設定(禁止工作站連網) |
分別在“系統伺服器A”和“系統伺服器B”上進行下列所有操作:
• 開始進行安裝部署了,首先,要複製好工作站的系統模板
1. 建立工作站系統模板的存放目錄(/nodiskos/workstation)和啟動引導檔案存放目錄(/nodiskos/tftpboot)
mkdir /nodiskos // 系統模板+開機檔案存放目錄mkdir /nodiskos/tftpboot // 工作站系統開機檔案存放目錄mkdir /nodiskos/workstation // 工作站系統模板存放目錄
2. 使用rsync 工具將整個"/"目錄拷貝到/nodiskos/workstation 目錄下,去除不需要的檔案目錄
rsync -av --exclude=‘/proc‘ --exclude=‘/sys‘ --exclude=‘/tmp‘ --exclude=‘/var/tmp‘ --exclude=‘/etc/mtab‘ --exclude=‘/nodiskos‘ /* /nodiskos/workstation
3. 重新建立被刪掉的目錄,還原系統模板的目錄結構
cd /nodiskos/workstationmkdir proc sys tmp var/tmp
4.調整系統模板的裝置掛載設定檔/nodiskos/workstation/etc/fstab:刪除所有的本機存放區裝置掛載資訊(如:/和/boot);添加系統模板的掛載資訊。以“系統伺服器A”為例(注意:系統伺服器B的ip設定為192.168.8.9):
# /etc/fstab# Created by anaconda on Fri Dec 25 10:58:41 2015## Accessible filesystems, by reference, are maintained under ‘/dev/disk‘# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#192.168.8.8:/nodiskos/workstation / nfs defaults 0 0tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0
5. 修改系統模板的主機名稱,如WorkStation
編輯設定檔/nodiskos/workstation/etc/sysconfig/network,將HOSTNAME=參數值修改為WorkStation
6. 最後,刪除所有ifcfg-eth*網卡設定檔,只需保留ifcfg-lo
rm -f /nodiskos/workstation/etc/sysconfig/network-scripts/ifcfg-eth*
7. 最後的最後,將整個工作站系統模板打包備份到系統伺服器的/opt 目錄下,以作備用(例如下面的第8 步,為單個/每個工作站建立獨立的系統)
cd /nodiskostar -cvf /opt/workstation.tar workstation
8. 正如第7 步所述,可根據需求,為單個/每個工作站建立獨立的系統。以WS100~110 為例:
1)將備份的系統模板解壓下來,並批量分別拷貝到各自獨立工作站的系統目錄下
cd /optfor i in $(seq -w 100 110)> do> tar -xvf workstation.tar> mv workstation /nodiskos/WS$i> done
2)最後,還需要為每台獨立的工作站調整fstab 的掛載資訊、network 的主機名稱、hosts 的本地區名解析。可執行如下shell 指令碼進行批量替換,需要賦予執行許可權:
# 以WS100~110 為例# 第一個for 迴圈是替換fstab 的掛載資訊和主機名稱,其中:# 第1 個sed 是替換/nodiskos/WS###/etc/fstab 的掛載資訊# 第2 個sed 是替換主機名稱# 第3 個sed 是在hosts 檔案中增加原生網域名稱解析# 第二個for 迴圈是列印出替換後的結果,以便於檢查是否替換正確# 指令碼內容如下:#!/bin/bashfor i in $(seq -w 100 110)do sed -i "/nodiskos/s/workstation/WS$i/g" /nodiskos/WS$i/etc/fstab sed -i "s/WorkStation/WS$i/g" /nodiskos/WS$i/etc/sysconfig/network sed -i "1a 192.168.8.$i WS$i" /nodiskos/WS$i/etc/hostsdonefor i in $(seq -w 100 110)do echo -e "fstab : \c" && sed -n "/nodiskos/p" /nodiskos/WS$i/etc/fstab echo -e "network : \c" && sed -n "/HOST/p" /nodiskos/WS$i/etc/sysconfig/network echo -e "hosts : \c" && sed -n "/192.168/p" /nodiskos/WS$i/etc/hosts echo -e "\n"done
• 接下來,準備好工作站啟動引導需要的檔案
1. 安裝syslinux 和dracut 軟體包
yum install syslinux dracut dracut-network
2. 拷貝PXE開機檔案(由syslinux 程式提供)
cp /usr/share/syslinux/pxelinux.0 /nodiskos/tftpboot
3. 拷貝用linux核心檔案vmlinuz
cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /nodiskos/tftpboot
4. 建立用於系統啟動 鏡像檔案initrd.img(先執行命令 uname -r 查看核心版本,如:2.6.32-431.el6.x86_64)
dracut initrd-2.6.32-431.el6.x86_64.img 2.6.32-431.el6.x86_64chmod 644 initrd-2.6.32-431.el6.x86_64.imgmv initrd-2.6.32-431.el6.x86_64.img /nodiskos/tftpboot
5. 在/nodiskos/tftpboot/pxelinux.cfg/目錄下建立預設的PXE引導設定檔"default"(也可為單個/每個工作站建立獨立的引導設定檔,如WS100)
# prompt 0 表示工作站立即啟動,1 表示工作站等待選擇# kernel 指定核心檔案# append 後面的加底線的是一行內容,不能換行!!!# append 附加參數值解釋說明:# initrd= 指定用於引導的initrd 鏡像檔案# root= 指定工作站系統的nfs 路徑(注意:“系統伺服器B”設定成192.168.8.9)# selinux= 設定selinux 開關,0 表示關閉,1 表示開啟,預設為1# rw 設定工作站系統為可讀寫# nomodeset 這個參數是配合後面的vga=參數一起使用,設定解析度# vga= 這個參數值是設定解析度,0x 表示十六進位,0314 表示800*600 16 位色;若無特殊需求,建議刪除這2個參數# 檔案內容如下:default autolabel autoprompt 0kernel vmlinuz-2.6.32-431.el6.x86_64append initrd=initrd-2.6.32-431.el6.x86_64.img root=nfs:192.168.8.8:/nodiskos/workstation selinux=0 ip=dhcp rw nomodeset vga=0x0314
6. 若要為單個/每個工作站建立獨立的引導設定檔,以WS100~110 為例:
1)引導設定檔的檔案名稱為該工作站IP 位址的十六進位轉換值。如WS100 的IP 位址為192.168.8.100,那麼它的設定檔的檔案名稱就是"C0A80864";對照關係如下:192→C0,168→A8,8→08,100→64。
2)檔案內容可參照default,只需將append 下的root=參數值指定為對應的WS100 的nfs 路徑,例如:root=nfs:192.168.8.8:/nodiskos/WS100,前提是/nodiskos/WS100 需要存在。
3)為了方便,可用如下shell 指令碼,參照預設設定檔default,進行大量建立和修改:
# 以WS100~110 為例# for 迴圈的主體說明:# 第1 行:printf 是將WS###的IP 位址轉換成十六進位,並賦值給參數ws_name# 第2 行:以default 檔案為模板,以IP 位址的十六進位值為檔案名稱,進行批量複製# 第3 行:批量修改root=參數值指定的WS###的nfs 路徑# 第4 行:列印出替換後的結果,以便於檢查是否替換正確# 指令碼內容如下:#!/bin/bashcd /nodiskos/tftpboot/pxelinux.cfg/for i in $(seq -w 100 110)do ws_name=$(printf "%02X" 192 168 8 $i) cp default $ws_name sed -i "s/workstation/WS$i/g" $ws_name sed -n "/append/p" $ws_namedone
7. 最後,/disklessboot/tftpboot 目錄下應該有下列幾個檔案/目錄:
initrd-2.6.32-431.el6.x86_64.img |
// 用於引導的initrd 鏡像檔案 |
(由第4 步建立) |
pxelinux.0 |
// PXE 引導檔案 |
(由第2 步建立) |
pxelinux.cfg/default |
// 預設的引導設定檔 |
(由第5 步建立) |
pxelinux.cfg/C0A808## |
// 定製的引導設定檔 |
(由第6 步建立) |
vmlinuz-2.6.32-431.el6.x86_64 |
// 用於引導的核心檔案 |
(由第3 步建立) |
• 配置DHCP服務
1. 安裝DHCP 服務軟體包
yum install dhcp
2. 編輯設定檔/etc/dhcp/dhcpd.conf
# dhcpd.conf 部分參數說明:# default-lease-time // 指定確認租賃時間長度,單位為秒,-1 表示無限制# max-lease-time // 指定最大租賃時間長度# authritative // 拒絕不正確的IP 位址的要求# subnet netmask {} // 設定dhcp 地區# range // 提供動態分配IP 的範圍;若所有工作站都是綁定的固定IP,可刪除此配置# option routers // 設定網關/路由器地址,多個地址用逗號隔開;若不想讓用戶端上網,可刪除此配置# domain-name-servers // 設定DNS,若不想讓用戶端上網,可刪除此配置;多個地址用逗號隔開# next-server // 告知工作站TFTP 伺服器的地址,TFTP 服務提供啟動引導(注意:“系統伺服器B”設定成192.168.8.9)# filename // 告知工作站PXE 引導程式名# host XXX {} // 此處是根據工作站的MAC 位址綁定固定的IP 位址,前提是知道MAC 位址# hardware ethernet // 工作站的MAC 位址,一定要小寫# fixed-address // 綁定固定的IP 位址,和range 的不會有衝突,優先以它為主# 配置內容如下:ddns-update-style none;ignore client-updates;default-lease-time -1;max-lease-time -1;authritative;subnet 192.168.8.0 netmask 255.255.255.0 {range 192.168.8.100 192.168.8.200;option routers 192.168.8.254;option domain-name-servers 114.114.114.114,202.96.209.5;next-server 192.168.8.8;filename "pxelinux.0";host WS100 { hardware ethernet 12:34:56:78:ab:cd; fixed-address 192.168.8.100; }host WS101 { hardware ethernet 12:34:56:90:ab:00; fixed-address 192.168.8.101; }}
3. 重啟DHCP服務,且將DHCP服務設定成開機自啟
service dhcpd restartchkconfig dhcpd onchkconfig |grep dhcpd
• 配置TFTP服務
1. 安裝TFTP 服務軟體包
yum install tftp-server
2. 編輯配置/etc/xinetd.d/tftp,只需更改如下2 處:
# and to start the installation process for some operating systems.service tftp{ ...... ........ server_args = -s /nodiskos/tftpboot // 改成開機檔案的存放目錄 Disable = no // 將yes 改成no,以啟用此服務 ...... ........}
3. TFTP 服務是通過xinetd 工具管理的,因此需要通過xinetd 啟動、停止、重啟等
service xinetd restartchkconfig xinetd onchkconfig |grep xinetd
• 配置NFS服務
1. 安裝NFS 服務軟體包
yum install nfs-utils rpcbind
2. 編輯設定檔/etc/exports,添加如下內容:
# 這一行是配置預設的工作站系統目錄
/nodiskos/workstation 192.168.8.0/24(rw,async,no_root_squash)
# 以下部分是為工作站發布獨立的系統目錄/nodiskos/WS100 192.168.8.100(rw,async,no_root_squash)/nodiskos/WS101 192.168.8.101(rw,async,no_root_squash)/nodiskos/WS102 192.168.8.102(rw,async,no_root_squash)/nodiskos/WS103 192.168.8.103(rw,async,no_root_squash)/nodiskos/WS104 192.168.8.104(rw,async,no_root_squash)...... ......
3. 若獨立的工作站數量大,可用如下shell 指令碼進行大量新增
#!/bin/bash
echo ‘/nodiskos/workstation 192.168.8.0/24(rw,async,no_root_squash)‘>/etc/exportsfor i in $(seq -w 100 110)do sed -i "\$a \/nodiskos\/WS$i 192.168.8.$i(rw,async,no_root_squash)" /etc/exportsdonecat /etc/exports
4. 重啟NFS服務,且將NFS服務設定成開機自啟
service nfs restartchkconfig nfs onchkconfig |grep nfs
5. 至此,所有配置都已完成了。最後檢查下DHCP、TFTP、NFS這3個服務是否都已啟動,是否都已設定成開機自啟
service dhcpd statusservice xinetd statusservice nfs statuschkconfig |grep dhcpdchkconfig |grep xinetdchkconfig |grep nfs
6. 最後的最後,將所有PXE用戶端的啟動項設定成首選網卡啟動,然後就啟動PXE用戶端了!!!
RHEL/CentOS PXE無盤工作站