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

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 (( "$#" )); dodisk=$1shiftsize=$1size_int=${size%.*}shift# 比较大小,更新最小磁盘信息if (( size_int < min_size )); thenmin_size=$size_intmin_disk=$diskfi
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.lryc.cn/news/535579.html

相关文章:

  • 基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系
  • 游戏引擎学习第99天
  • 脉冲当量含义
  • docker compose部署flink集群
  • docker compose快速部署kafka-connect集群
  • 【核心特性】Go 模块化开发入门(go mod 深度解析)
  • 国产ARM处理器工控机如何助力企业实现自主可控?
  • dns功能及工作原理是什么?
  • Java中的Map集合与文件操作详解
  • SAP-ABAP:dialog界面中的数据块Event Block详解举例
  • PostgreSQL 开发利器:Navicat 核心功能与资源攻略
  • 飞算 JavaAI:加速 AI + 行业趋势的智能化进程
  • XZ_Mac电脑上本地化部署DeepSeek的详细步骤
  • Flink-DataStream API
  • 2.4 构建模块化应用
  • DeepSeek:从入门到精通
  • JAVA学习第二天
  • DevOps工具链概述
  • windows系统远程桌面连接ubuntu18.04
  • kafka动态监听主题
  • Python虚拟环境管理工具 pyenv
  • 网络安全产品架构图 网络安全相关产品
  • C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)
  • 如何实现Deepseek的本地部署并集成本地知识库?
  • vue学习笔记8
  • 【自学笔记】Vue基础知识点总览-持续更新
  • ETL的使用(sqoop):数据导入,导出
  • 【核心特性】从鸭子类型到Go的io.Writer设计哲学
  • 多模态模型详解
  • Go 语言里中的堆与栈