• 關於PXE無盤工作站系統的簡介 PXE無盤工作站系統是指由一臺或多台“系統伺服器”和多台“PXE客戶端(無盤工作站)”通過 交換機 相連組成的區域網系統。 (圖1:無盤工作站系統部署拓撲圖) • 系統伺服器:通過DHCP+TFTP+NFS服務向無盤工作站提供系統支持 • PXE客戶端:PXE客戶 ...
• 關於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/workstation mkdir 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 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /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 /nodiskos tar -cvf /opt/workstation.tar workstation
8. 正如第7 步所述,可根據需求,為單個/每個工作站創建獨立的系統。以WS100~110 為例:
1)將備份的系統模板解壓下來,並批量分別拷貝到各自獨立工作站的系統目錄下
cd /opt for 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/bash for 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/hosts done for 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_64 chmod 644 initrd-2.6.32-431.el6.x86_64.img mv 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 auto label auto prompt 0 kernel vmlinuz-2.6.32-431.el6.x86_64 append 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/bash cd /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_name done
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 restart chkconfig dhcpd on chkconfig |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 restart chkconfig xinetd on chkconfig |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/exports for i in $(seq -w 100 110) do sed -i "\$a \/nodiskos\/WS$i 192.168.8.$i(rw,async,no_root_squash)" /etc/exports done cat /etc/exports
4. 重啟NFS服務,且將NFS服務設置成開機自啟
service nfs restart chkconfig nfs on chkconfig |grep nfs
5. 至此,所有配置都已完成了。最後檢查下DHCP、TFTP、NFS這3個服務是否都已啟動,是否都已設置成開機自啟
service dhcpd status service xinetd status service nfs status chkconfig |grep dhcpd chkconfig |grep xinetd chkconfig |grep nfs
6. 最後的最後,將所有PXE客戶端的啟動項設置成首選網卡啟動,然後就啟動PXE客戶端了!!!