制作和快速批量部署系统镜像-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
分区要求:任意
centos和ubuntu
主机名:Worker
关闭selinux和firewall
一台目标机,为方便讲述,本文采用虚拟机安装CentOS 7 x86_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制作镜像
matlab mesh函数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=mbr.img bs=512 count=1
目标机环境配置及修改:
mkdir /mnt/sda{1,3}      #创建两个目录方便挂载目标机的分区
mount /dev/sda1 /mnt/sda1  #挂载目标机的/bookspringboot分区至/mnt/sda1
mount /dev/sda3 /mnt/sda3  #挂载目标机的/分区至/mnt/sda3
修改目标机grub参数:
vi /mnt/sda1/grub2/grub.cfg
到大约第100行,“linux16 /vmlinuz-3.10.0-1160.el7.x86_64”开头的位置,(注意这里目标机的系统版本不同,内核版本也会不同)删除rhgbquiet两个参数,在改行结尾处添加net.ifnames=0 biosdevname=0
rhgb(Red Hat Graphical Boot)参与用于启用图形引导界面。
quiet参数用于启用启动信息、调试信息的抑制。
net.ifnames=0 biosdevname=0参数用于关闭自动网络设备命名规则。
这三个参数可以根据实际情况来确定开启还是关闭,本文将它们全部关闭,自动网络设备命名规则建议网卡在大于2张或更多时再考虑启用。
关闭目标机selinux和firewalld防火墙:
php个人博客界面
sed -i "s%SELINUX=enforcing%SELINUX=disabled%g" /mnt/sda3/etc/selinux/config    #关闭selinux,注意路径要根据实际情况!
rm /mnt/sda3/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service -rf
rm /mnt/sda3/etc/systemd/system/multi-user.target.wants/firewalld.service -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 (pt('123123', '\$6\$saltsalt\$'))"      #生成加密后的密码“123123
注意,如果提示没有到Python命令行,请运行 dnf install python3 安装。
vi /mnt/sda3/etc/shadow                #用新生成的密码替换原来的,如果不改密码可以忽略
chmod 000 /mnt/sda3/etc/shadow      #最后再将shadow权限改回原样
设置OpenSSH服务端:
c语言条件运算符运算规则vi /mnt/sda3/etc/ssh/sshd_config      #将文件内“#UseDNS yes”注释去掉,并改为“UseDNS no”,避免登录时解析DNS导致卡住

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。