2024年1月25日发(作者:)
制作和快速批量部署系统镜像-CentOS篇
本文将介绍如何利用partclone、dd等工具制作CentOS 7系统镜像,并快速恢复系统镜像,快速批量部署,以提高大规模部署效率,简化系统环境部署。
第一部分:制作CentOS 7系统镜像
1.1 硬件环境准备
一台x86 Linux工作机,为方便讲述本文采用Rocky Linux 8虚拟机做为工作机: (可以是LiveCD、U盘系统等Linux系统)
硬件配置:任意,能流畅运行Rocky Linux 8即可
引导模式:legacy
系统版本:Rocky Linux 8.8 x86_64 Minimal
分区要求:任意
主机名:Worker
关闭selinux和firewall
一台目标机,为方便讲述,本文采用虚拟机安装CentOS 7x86_64 Minimal做为目标机:
CPU:4核
内存:8G
硬盘:60G
引导模式:legacy
系统版本:CentOS 7 x86_64 Minimal
分区要求:/boot=1G swap=8G /=剩余全部 采用标准分区
主机名:Image
1.2 目标机环境准备
目标机系统环境根据需求做好相关配置,做为母镜像,以便将来快速恢复或批量部署。两种方式配置目标机的系统环境:直接启动目标机登录系统进行相关配置及修改;做为工作机的从盘启动,然后mount分区进行相关配置及修改。两种方式均可,如果母镜像仅仅是一些基础配置及修改,推荐第二种方式,如果是相对复杂的母镜像配置及修改,推荐第一种,例如:需配置NVIDIA驱动、CUDA、NCCL等涉及到内核模块的环境处理,需选择第一种方式处理。本文采用第二种方式讲述基础环境配置及修改。
磁盘挂载:
目标机安装好CentOS 7系统后直接关机(关机后建议打个快照),不要启动,操作工作机添加硬盘,将目标机的硬盘添加进来并开机,注意硬盘启动顺序别搞错了,本文采用VMware Workstation 16 Pro,当然其他一些虚拟化软件也可以,如KVM、VirtualBox、ESXi都可。
安装partclone:
dnf install epel-release -y #安装epel软件仓库
dnf install partclone -y #安装partclone,注意版本,将来恢复镜像时尽可能保持版本一致。
1.3 制作镜像
MBR介绍:
本文主要是针对legacy引导模式进行,硬盘分区是MBR格式,首先了解一下什么是MBR,如何进行备份。MBR(Master Boot Record)是一种用于存储分区表和引导加载程序的特殊区域,通常位于磁盘的起始扇区(LBA 0)。
Boot Code (446 Bytes):
前446字节通常用于存储引导加载程序的机器码。这是一个小程序,负责引导操作系统。引导加载程序通常被加载到内存中,并负责从硬盘中加载操作系统的引导扇区。
Partition Table (64 Bytes):
接下来的64字节包含分区表信息。MBR最多支持4个主分区,每个主分区占用16字节的表项。每个表项包括以下信息:
起始CHS地址(Cylinder, Head, Sector):指定分区的起始位置。
分区类型:标识分区的类型,如FAT32、NTFS、Linux等。
结束CHS地址:指定分区的结束位置。
起始LBA地址:指定分区在磁盘上的起始逻辑块地址(Logical Block Address)。
MBR Signature (2 Bytes):
最后的2字节包含MBR的签名,通常为0x55AA。这个签名标志着MBR的有效性,如果缺少这个签名,BIOS将不会识别磁盘上的MBR,并且无法引导操作系统。
备份MBR:
以本文环境为例,工作机硬盘为/dev/nvme0n1,目标机硬盘为/dev/sda,那么执行以下命令行备份MBR
dd if=/dev/sda of= bs=512 count=1
目标机环境配置及修改:
mkdir /mnt/sda{1,3} #创建两个目录方便挂载目标机的分区
mount /dev/sda1 /mnt/sda1 #挂载目标机的/boot分区至/mnt/sda1
mount /dev/sda3 /mnt/sda3 #挂载目标机的/分区至/mnt/sda3
修改目标机grub参数:
vi /mnt/sda1/grub2/
找到大约第100行,“linux16 /7.x86_64”开头的位置,(注意这里目标机的系统版本不同,内核版本也会不同)删除rhgb和quiet两个参数,在改行结尾处添加s=0 biosdevname=0。
rhgb(Red Hat Graphical Boot)参与用于启用图形引导界面。
quiet参数用于启用启动信息、调试信息的抑制。
s=0 biosdevname=0参数用于关闭自动网络设备命名规则。
这三个参数可以根据实际情况来确定开启还是关闭,本文将它们全部关闭,自动网络设备命名规则建议网卡在大于2张或更多时再考虑启用。
关闭目标机selinux和firewalld防火墙:
sed -i "s%SELINUX=enforcing%SELINUX=disabled%g" /mnt/sda3/etc/selinux/config #关闭selinux,注意路径要根据实际情况!
rm /mnt/sda3/etc/systemd/system/e -rf
rm /mnt/sda3/etc/systemd/system//e -rf #关闭firewalld防火墙
修改目标机网卡配置文件:
cd /mnt/sda3/etc/sysconfig/network-scripts/ #cd到目标机网卡配置文件目录
mv ifcfg-ens33 ifcfg-eth0 #修改网卡配置文件名称,注意如果你没有关闭自动网络设备命名规则,可以忽略
vi ifcfg-eth0 #修改网卡配置文件内容
删除或注释UUID行,修改NAME和DEVICE参数为eth0,注意如果你没有关闭自动网络设备命名规则,可以忽略。其余的IPADDR、PREFIX、GATEWAY、DNS等参数根据实际情况修改或开启DHCP。如果批量部署,需要注意的是所有部署完成的镜像都将是相同的IP地址,可以写个开机脚本向网关查询IP地址的分配自动完成,也可以利用DHCP获取,具体方法因实际场景而异。
修改hostname:
vi /mnt/sda3/etc/hostname #根据实际需求修改,本文计算机名为: Image
可以写个一次性开机脚本,在首次启动时将hostname随机设置,避免所有hostname都相同。
设置root密码:
chmod 777 /mnt/sda3/etc/shadow #设置shadow文件777权限
python3 -c "import crypt, getpass, pwd;print (('123123', '$6$saltsalt$'))" #生成加密后的密码“123123”
注意,如果提示没有找到Python命令行,请运行 dnf install python3 安装。
vi /mnt/sda3/etc/shadow #用新生成的密码替换原来的,如果不改密码可以忽略
chmod 000 /mnt/sda3/etc/shadow #最后再将shadow权限改回原样
设置OpenSSH服务端:
vi /mnt/sda3/etc/ssh/sshd_config #将文件内“#UseDNS yes”注释去掉,并改为“UseDNS no”,避免登录时解析DNS导致卡住
修改adjtime:
vi /mnt/sda3/etc/adjtime #将UTC改为LOCAL,可选操作,如果系统镜像会在虚拟化环境使用,推荐修改为LOCAL
其他可选修改:
dracut --add-drivers 'b44 bnx2 bnx2x bnxt cnic tg3 alx atl1c atl1e atlx e1000 e1000e fm10k i40e i40evf igb igbvf ixgbe ixgbevf
8139cp 8139too r8169 mvmdio skge sky2 nvme megaraid megaraid_sas mpt2sas raid_class vmxnet3 sd_mod sg scsi_transport_iscsi ahci
libata be2iscsi bnx2i cxgbi iscsi_boot_sysfs iscsi_tcp ' /boot/7.x86_ --force –debug
#给目标机添加各类常见驱动,这样镜像就可以兼容更多的硬件,可以根据自己所需驱动模块进行添加,需注意目标机从盘模式启动无法运行该命令行,需要启动目标机进行添加,如果不行就此启动目标机,可以添加好驱动将initramfs文件copy下来保存,再去从盘模式覆盖/boot分区目录下的原始initramfs。
打包镜像:
-c -s /dev/sda1 -o #将sda1的xfs格式文件系统打包为文件,也就是/boot分区
-c -s /dev/sda3 -o #将sda3的xfs格式文件系统打包为文件,也就是/分区
至此,制作CentOS 7系统镜像的过程全部结束,得到了三个文件,、、
第二部分:快速恢复部署CentOS 7 系统镜像
2.1 恢复部署系统镜像
本文直接添加一块240G虚拟硬盘(/dev/nvme0n2)做为即将快速恢复部署的硬盘做为演示
dd if= of=/dev/nvme0n2 #写入mbr,注意此处目标硬盘必须大于母镜像打包时的硬盘大小,否则会写入失败
partprobe /dev/nvme0n2 #将/dev/nvme0n1分区表重新读取,否则后续partclone写入会无法识别分区
e -s -o /dev/nvme0n2p1 #写入/boot分区
e -s -o /dev/nvme0n2p3 #写入/分区
第三部分:结语
至此,CentOS 7安装结束,如果有其他修改,可以mount分区进行修改。可以看到,部署安装一个CentOS 7系统,partclone写入过程不到20秒完成,加上工作机启动分分钟完成。这种方式灵活多变,工作机可以是U盘Linux,如Tinycore,可以是LiveCD,也可以是PXE或iSCSI,后续有空再讲一讲如何制作UEFI系统镜像和其他系统发行版本镜像,如Windows、Ubuntu等等,如何利用PXE大批量快速自动化部署系统镜像。
本文发布于:2024-01-25 22:07:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1706191654359.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |