环境信息
处理器架构:X86
操作系统:CentOS Linux release 7.9.2009 (Core)
操作步骤
1.将系统安全配置SELINUX
禁用,否则导出的镜像无法登录。
vim /etc/selinux/config
注:将selinux从enforcing改为disabled。按i进入插入模式进行编辑;按esc+:+wq进行保存。
2.下载打包镜像软件mondo rescue
。
cd /etc/yum.repos.d
wget ftp://ftp.mondorescue.org/centos/7/x86_64/mondorescue.repo
3.打开文件mondorescue.repo
,修改gpgcheck
属性为0。
vim mondorescue.repo
4.安装打包镜像软件mondo rescue
。
#在线安装
yum -y install mondo –enablerepo=mondorescue.repo
#离线安装。官网下载rpm包,上传至服务器解压到文件夹,执行以下指令即可。
rpm -ivh *.rpm --nodeps --force
5.修改mondo
配置。
vim /etc/mindi/mindi.conf
注:必须修改,否则导出镜像过程中可能会闪退。如果没有则添加以下内容。
EXTRA_SPACE=1024000
6.查看硬盘挂载信息,将硬盘挂载从 UUID
挂载方式改为盘符挂载的方式。
vim /etc/fstab
7. 查看 UUID
对应盘符。
blkid
8.修改硬盘挂载信息,临时修改为硬盘挂载。
#UUID挂载
/dev/mapper/centos-root / xfs defaults 0 0
UUID=49a45ce7-3c7a-459e-9af0-872aaaac9ab4 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#修改为磁盘挂载
/dev/mapper/centos-root / xfs defaults 0 0
/dev/vda1 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
9.进入mondo
图形界面。
mondoarchive
10.选择备份位置,即选择Hard disk
。手动填写ISO
镜像存储路径。
11.压缩类型建议选择gzip
,压缩率大。
12.压缩率选择Average(4)
。
13.选择ISO镜像大小,默认4480MB
,修改为更大的值,保证它生成1个镜像文件。
14.输入镜像名称。
15.选择要备份的目录,/
表示全系统。
16.输入不需要备份的目录,没有则不填。
17.填写临时目录路径,默认即可。
18.是否备份扩展的属性,默认即可。
19.是否备份机器内核?确认即可。
20.是否验证备份文件?确认即可。
21.是否Proceed
开始备份?确认即可。
22.提示OK
即备份完成。
23.将磁盘挂载方式还原。
24.将系统安全配置SELINUX
重新启用。
vim /etc/selinux/config
注:将selinux从disabled改为enforcing 。按i进入插入模式进行编辑;按esc+:+wq进行保存。
25.将镜像从服务器下载到本地即可在虚拟机或新机器上像安装系统一样正常选择镜像即可。
26.选择镜像启动后,系统会自动提示以下信息。boot
后输入nuke
即可全自动安装。
Welcome to Mindi,a cousin of MondoRescue
F1-Main:Boot Parameters F2-1/2 | F3-2/2 | F4-PXE
boot:
27.提示以下信息后即为安装完成。sh-4.2#
后输入exit
重启即可完成恢复。
Type 'exit' to reboot the Machine
sh-4.2#
常见问题
系统盘是LVM如何恢复?
1.如果在执行nuke
后提示Mountlist analyzed. Result:"/dev/vda does not exist." Switch to Interactive Mode?
。该原因是因为系统盘是LVM卷
,导致无法自动化安装。需执行以下步骤进行安装。
2.根据提示进入可视化编辑界面,将该界面截图保存。
3.退出可视化编辑界面后,进入bash
手动创建LVM卷
分区。根据可视化编辑界面的截图内分区要求,需分2个主分区。
注:“/”、“/home”、“/swap”都不是主分区,主分区是“/boot/”、“LVM”。因为主分区的挂载直接执行的硬盘,即“/dev/vda2”与“/dev/vda1”。
/dev/vda1 /boot 1024MB
/dev/vda2 lvm 剩余空间
4.查看当前硬盘所有块设备的命名是否和镜像中的分区命名一致。如不一致,以当前硬盘所有块设备名为准进行创建LVM卷
,同时编辑可视化编辑界面内的所有块名。
lsblk
#执行后返回结果
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 150G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 68.4G 0 part
sr0 11:0 1 17.4G 0 rom
5.创建sda1
分区以存储引导boot
。
fdisk /dev/sda
#显示sda分区
p
#删除sda1分区
d
#重新创建分区
n
#输入n后会询问创建主分区还是扩展分区,创建为主分区
p
#输入分区编号为1
1
#起始扇区,用默认2048或系统推荐
回车
#再次输入设置空间为2g
+2G
#设置为boot分区
t
1
83
#标记为可引导分区
a
1
#写入刚刚创建的分区表
w
6.重新分区,让sda2
拥有扣除sda1
后的全部空间。
fdisk /dev/sda
#显示sda分区
p
#删除sda2分区
d
#重新创建分区
n
#输入n后会询问创建主分区还是扩展分区,创建为主分区
p
#输入分区编号为2
2
回车接受默认的第一个扇区
回车接受该分区以使用剩余全部空间
#写入刚刚创建的分区表
w
7.执行lvm命令
创建LVM卷
。
lvm vgchange -an
lvm pvcreate -ff /dev/sda2
#创建/dev/centos卷组
lvm vgcreate centos /dev/sda2
lvm vgchange -a y centos
#/root目录即根目录使用50G空间就行,数据基本都放在/home空间
lvm lvcreate -L 50G -n root centos
lvm lvcreate -L 10G -n swap centos
#/home目录使用剩余空间
lvm lvcreate -l 100%FREE -n home centos
#激活lvm
vgchange -ay
8.对创建好的LVM分区进行格式化。
#分区
mkfs.ext4 /dev/sda1
mkfs.xfs /dev/centos/root
mkswap /dev/centos/swap
mkfs.xfs /dev/centos/home
#创建挂载点,以备/home挂载
mkdir /home
#临时启用swap分区
swapon /dev/mapper/centos-swap
9.重新进入可视化编辑界面。
mondorestore
10.手动挂载
#选择以下
Interactively
#选择ISO镜像的存储介质
#编辑挂载列表,将vda改为你的硬盘所有块设备命名,这里是sda.将分区类型和空间对照上面fdisk分区的类型和空间填写.
11.保存挂载列表后会询问是否执行分区动作,选择否。是否格式化硬盘,选择否。
12.提示是否初始化引导,选择是。提示是否重新生成initred
或initramfs
文件,选择是。
13.提示mkinitrd
命令重新生成当前服务器适配的initrd
或initramfs
文件,选择OK
进入bash
命令。
14.由于系统卷是LVM
,mondo rescure
默认不会打包lvm
相关的驱动和命令,需修改/etc/dracut.conf
文件来完成安装。
vim /etc/dracut.conf
15.在dracut.conf
文件中找到以下内容,并修改如下。
# dracut modules to add to the default
add_dracutmodules+="lvm"
#additional kernel modules to the default
#add_drivers+=""
#list of kernel filesystem modules to be included in the generic initramfs
#filesystems+="”
#build initrd only to boot current hardware
#hostonly="yes
#
#install local /etc/mdadm.conf
mdadmconf="yes"
#install local /etc/lvm/lvm.conf
lvmconf="yes"
16.重新生成initrd
或initramfs
文件。
dracut -f
cd /boot
#下面的$(uame -r)也可以修改为具体的Linux内核版本号,这里通过$(uame -r)动态获取了当前系统内核版本号
mkinitrd -f -v initramfs-$(uname -r).img $(uname -r)
17.执行完成后按Shift+PgUp
向上翻页可以看到initrd
已经成功打包了了Lvm
。
18.输入exit
退出,提示是否更改了挂载列表或克隆了系统,选择是。
19.提示请输入启动设备。将/dev/vda
改为/dev/sda
。因为新服务器上的硬盘设备名是sda
。
20.提示挂载已更改,需要编辑fstab, mtab, device.map,menu.lst/grub.cfg
以修复GRUB
,选择OK
,进入编辑模式。
注:/dev/mapper/卷组名-逻辑卷名,是LVM核心层直接暴露的实际设备节点,/dev/卷组名/逻辑卷名,是系统自动创建的符号链接。故挂载用/dev/mapper/卷组名-逻辑卷名。
#编辑fstab.即/etc/fstab.修改为新服务器格式化的分区信息
/dev/sda1 /mnt/boot ext4 defaults 0 0
/dev/mapper/centos-root /mnt xfs defaults 0 0
/dev/mapper/centos-home /mnt/home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#编辑mtab文件,即/etc/mtab.参照fstab一样修改为新服务器格式化的分区信息
1.保存会提示由于文件只读导致无法保存.
2.先:q退出该文件,该文件文件主要用于记录当前系统中已挂载的文件系统信息,不用管它
#编辑grub.cfg文件,即/etc/grub.d或/etc/default/grub.参照fstab一样修改为新服务器格式化的分区信息
#编辑device.map文件,即/boot/grub2/device.map.参照fstab一样修改为新服务器格式化的分区信息
22.后面的一直下一步即可,出现/ext2/ext3/ext4
后直接选择OK
后进入终端。
23.输入指令进入系统真实环境,手动挂载分区并生成系统引导。
#激活lvm
vgchange -ay
#设置挂载
mount /dev/sda1 /mnt/boot
mount /dev/mapper/centos-root /mnt
mkdir /mnt/home
mount /dev/mapper/centos-home /mnt/home
swapon /dev/mapper/centos-swap
#绑定设备文件
mount --bind /dev /mnt/dev
#编辑/etc/fstab文件,设置开机自启动挂载
/dev/sda1 /mnt/boot ext4 defaults 0 0
/dev/mapper/centos-root /mnt xfs defaults 0 0
/dev/mapper/centos-home /mnt/home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#切换至真实系统环境检查
chroot /mnt
#挂载proc文件系统
mount -t proc proc /proc
#挂载sysfs文件系统
mount -t sysfs sysfs /sys
#挂载引导
mount /dev/sda1 /boot
#绑定设备节点
mount -o bind /dev /dev
#编辑真实系统内的/etc/fstab文件,设置开机自启动挂载.如果存在/mnt/boot等挂载,则删除
/dev/sda1 /boot ext4 defaults 0 0
/dev/mapper/centos-root / xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#查看/boot目录下是否为空,如为空未生成则生成引导
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
#卸载绑定的文件系统
umount /mnt/proc /mnt/sys /mnt/dev
exit
24.如果第23步操作后依然无法进入系统,则重新进入备份的镜像,选择进入专家模式通过终端修复引导或者插入系统镜像进入救援模式通过终端修复引导,执行以下步骤。
#激活lvm
vgchange -ay
#设置挂载
mount /dev/sda1 /mnt/boot
mount /dev/mapper/centos-root /mnt
mkdir /mnt/home
mount /dev/mapper/centos-home /mnt/home
swapon /dev/mapper/centos-swap
#绑定设备文件
mount --bind /dev /mnt/dev
#切换至真实系统环境检查
chroot /mnt
#挂载proc文件系统
mount -t proc proc /proc
#挂载sysfs文件系统
mount -t sysfs sysfs /sys
#挂载引导
mount /dev/sda1 /boot
#绑定设备节点
mount -o bind /dev /dev
#修复引导
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
#卸载绑定的文件系统
umount /mnt/proc /mnt/sys /mnt/dev
exit
评论区