当前位置: 首页 > article >正文

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

需求

在实际生成操作过程中,一般会遇到物理服务器存在多块盘的情况。
安装过程中,磁盘的标签是随机分配的,并不是空间较小的盘,就会使用较小的磁盘标签
而需求往往需要将操作系统安装到较小的盘中作为系统盘

问题分析

  • 需要判断出当前物理机存在磁盘的数量
  • 需要选举出较小的磁盘
  • 指定较小磁盘的磁盘标签进行自动化安装

处理办法

  • Linux提供了list-harddrives变量,用于保存当前机器的磁盘情况
    • 该变量的格式为:
echo $(list-harddrives)
磁盘标签1 磁盘1大小 磁盘标签2 磁盘2大小 ...
  • 可以使kickstart提供的%per脚本输出最小的磁盘的标签,用于获取指定的磁盘
    • %per脚本:
      • kickstart中用于在安装操作系统前执行的脚本
      • 此处脚本执行过程中,是在chroot环境下,部分命令和参数无法使用,需要注意
  • 同时将创建磁盘和vg的命令输出到临时文件中
  • 使用kickstart的include功能执行命令
  • 案例如下:
# 假设 list-harddrives 命令的输出是这样的:sda 20480 sdb 10240
output=$(list-harddrives)

# 初始化最小磁盘大小和名称
min_size=999999999999
min_disk=""

# 遍历输出中的每个磁盘信息
# 使用 set -- $output 将输出分割为位置参数
set -- $output
while (( "$#" )); do
    disk=$1
    shift
    size=$1
    size_int=${size%.*}
    shift
    
    # 比较大小,更新最小磁盘信息
    if (( size_int < min_size )); then
        min_size=$size_int
        min_disk=$disk
    fi
done

# 选举出最小的磁盘标签
# 将最小磁盘标签引用到以下的命令中
# 将命令输出到/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

# 将临时文件中的命令包含到kickstart配置中
# include diskinfo
zerombr
%include /tmp/part

http://www.kler.cn/a/541168.html

相关文章:

  • 996引擎-问题处理:三职业改单职业
  • ECG分析0210
  • 脚手架开发【实战教程】prompts + fs-extra
  • 优化GPT API接口链接的方法
  • 链表(LinkedList) 1
  • Docker从入门到精通- 容器化技术全解析
  • Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?
  • STM32调试工具OLED
  • 从家庭IP到全球网络资源的无缝连接:Cliproxy的专业解决方案
  • 【苍穹外卖】修改前端代码解决修改Nginx端口后websocket连接失败的问题
  • [网络]url解码,从网址转化为ip
  • 线程池里面的execute 和 submit 方法有什么区别?
  • Docker 部署 MongoDB | 国内阿里镜像
  • 汽车与AI深度融合:CES Asia 2025前瞻
  • 问卷数据分析|SPSS实操之信度效度检验
  • 老游戏回顾:TR9
  • Spring Boot 项目中使用腾讯云对象存储(COS)
  • 20爬虫:使用playwright与图鉴破解豆瓣滑动验证码
  • 软考高级《系统架构设计师》知识点(一)
  • Vue 响应式渲染 - Vue3 Class和style
  • Flink 内存模型各部分大小计算公式
  • 金砖国家技能大赛云计算赛项(容器云部分题解)
  • uniapp使用路由名称跳转
  • 分享升级spotbugs-maven-plugin 4.8.6.0遇到的坑(内附稳定运行的jdk和maven版本)
  • excel高级求和SUMIFS函数,类似数据库group by操作
  • Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明