網(wǎng)站角色管理系統(tǒng)旅游seo整站優(yōu)化
Kickstart自動(dòng)化安裝過程中自動(dòng)選擇較小的磁盤安裝操作系統(tǒng)
需求
在實(shí)際生成操作過程中,一般會(huì)遇到物理服務(wù)器存在多塊盤的情況。
安裝過程中,磁盤的標(biāo)簽是隨機(jī)分配的,并不是空間較小的盤,就會(huì)使用較小的磁盤標(biāo)簽
而需求往往需要將操作系統(tǒng)安裝到較小的盤中作為系統(tǒng)盤
問題分析
- 需要判斷出當(dāng)前物理機(jī)存在磁盤的數(shù)量
- 需要選舉出較小的磁盤
- 指定較小磁盤的磁盤標(biāo)簽進(jìn)行自動(dòng)化安裝
處理辦法
- Linux提供了
list-harddrives
變量,用于保存當(dāng)前機(jī)器的磁盤情況- 該變量的格式為:
echo $(list-harddrives)
磁盤標(biāo)簽1 磁盤1大小 磁盤標(biāo)簽2 磁盤2大小 ...
- 可以使kickstart提供的
%per
腳本輸出最小的磁盤的標(biāo)簽,用于獲取指定的磁盤%per
腳本:- kickstart中用于在安裝操作系統(tǒng)前執(zhí)行的腳本
- 此處腳本執(zhí)行過程中,是在
chroot
環(huán)境下,部分命令和參數(shù)無法使用,需要注意
- 同時(shí)將創(chuàng)建磁盤和vg的命令輸出到臨時(shí)文件中
- 使用kickstart的include功能執(zhí)行命令
- 案例如下:
# 假設(shè) list-harddrives 命令的輸出是這樣的:sda 20480 sdb 10240
output=$(list-harddrives)# 初始化最小磁盤大小和名稱
min_size=999999999999
min_disk=""# 遍歷輸出中的每個(gè)磁盤信息
# 使用 set -- $output 將輸出分割為位置參數(shù)
set -- $output
while (( "$#" )); dodisk=$1shiftsize=$1size_int=${size%.*}shift# 比較大小,更新最小磁盤信息if (( size_int < min_size )); thenmin_size=$size_intmin_disk=$diskfi
done# 選舉出最小的磁盤標(biāo)簽
# 將最小磁盤標(biāo)簽引用到以下的命令中
# 將命令輸出到/tmp/part中echo "ignoredisk --only-use=${min_disk}" >> /tmp/part
# Partition clearing information
echo "clearpart --all --initlabel" >> /tmp/part
# Disk partitioning information
echo "part /boot --fstype="xfs" --ondisk=${min_disk} --size=1024" >> /tmp/part
echo "part /boot/efi --fstype="efi" --ondisk=${min_disk} --size=600 --fsoptions="umask=0077,shortname=winnt"" >> /tmp/part
echo "part pv.119 --fstype="lvmpv" --ondisk=${min_disk} --size=1 --grow" >> /tmp/part
echo "volgroup vg00 --pesize=4096 pv.119" >> /tmp/part
echo "logvol swap --fstype="swap" --size=32768 --name=lvswap --vgname=vg00" >> /tmp/part
echo "logvol / --fstype="xfs" --size=71676 --name=lvroot --vgname=vg00" >> /tmp/part
echo "logvol /home --fstype="xfs" --size=61440 --name=lvhome --vgname=vg00" >> /tmp/part
echo "logvol /usr --fstype="xfs" --size=71676 --name=lvusr --vgname=vg00" >> /tmp/part
echo "logvol /var --fstype="xfs" --size=153596 --name=lvvar --vgname=vg00" >> /tmp/part
%end# 將臨時(shí)文件中的命令包含到kickstart配置中
# include diskinfo
zerombr
%include /tmp/part