上一篇讲了dd命令,这一篇使用dd命令做系统备份和还原,在服务运行过程中,硬盘损坏是常有的事,那么,给磁盘做系统备份和还原是非常有必要的,下面整理了制作流程。
一、操作系统备份方法:
- dd方式,备份整个硬盘
- 第三方软件Clonezilla
- 给系统打包
二、使用打包方式备份系统
1. 环境:准备2台虚拟机
Node01 |
Eth0 |
192.168.4.5 |
Node02 |
Eth0 |
192.168.4.100 |
2. 在node02上备份整个系统,使用tar命令
mkdir /backup
cd /backup
tar cvf os.tar --exclude=/proc/* --exclude=/tmp/* --exclude=/sys/* --exclude=/backup/* --exclude=/run/* /*
3. 把备份好的文件存储到网络上
scp /backup/os.tar 192.168.4.5:.
三、还原系统
1. node02节点模拟硬盘故障,系统消失
dd if=/dev/zero of=/dev/vda bs=1M count=1
2. 还原方法:
1)使用U盘系统还原
2)使用光盘rescue模式还原
3)通过PXE服务器还原
3. 使用PXE方式还原
1. 在node01上搭建PXE服务器,不需要ks.cfg文件
1).安装dhcp服务
yum -y install dhcp
cd /etc/dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example dhcpd.conf
vim dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.4.5;
filename "pxelinux.0";
log-facility local7;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.200 192.168.4.210;
}
systemctl disable libvirtd
Systemctl start dhcpd
2).安装启动tftp服务,拷贝系统启动镜像等相关文件
yum -y install tftp-server
3).安装启动ftp服务,并修改default文件
修改/var/lib/tftpboot/pxelinux.cfg/default文件,找到resuce菜单,修改如下:
append initrd=initrd.img inst.stage2=ftp://192.168.4.254/rhel7 rescue
4).node02通过网络启动引导,进入resuce模式
5).在resuce模式下,给磁盘分区,分区方案为:fdisk
/dev/vda1 --- /boot
/dev/vda2 --- swap
/dev/vda3 --- /
6).创建文件系统
mkfs.xfs /dev/vda1
mkfs.xfs /dev/vda3
mkswap /dev/vda2
7).把硬盘的根分区和/boot分区挂载
mkdir /a
mount /dev/vda3 /a
mkdir /a/boot
mount /dev/vda1 /a/boot
8).把系统的备份文件拷贝到硬盘上
cd /a
scp 192.168.4.5:/root/os.tar .
9).解包
tar xf os.tar
10).进入chroot环境
chroot /a
11).修改grub配置文件
vim /boot/grub2/grub.cfg
root=/dev/vda3
12).修改fstab文件
vim /etc/fstab
/dev/vda3 / xfs defaults 0 0
/dev/vda1 /boot xfs defaults 0 0
/dev/vda2 swap swap defaults 0 0
13).安装grub到MBR
grub2-install /dev/vda
14).重启系统
重启系统后解决ssh不能启动的问题
修改ssh相关的文件
chown .ssh_keys ssh_host_ecdsa_key
chown .ssh_keys ssh_host_ed25519_key
chown .ssh_keys ssh_host_rsa_key
启动ssh服务
或者在备份系统之前,用node01的/etc/{passwd,group,shadow,gshadow}文件替换rescue模式下的相应文件。
15).Debug:如果系统的/boot目录没了,如何修复系统?
label linux
menu label ^Boot Red Hat Enterprise Linux 7.4
kernel centos7.4/vmlinuz-3.10.0-693.el7.x86_64
append initrd=centos7.4/initramfs-3.10.0-693.el7.x86_64.img ro root=/dev/vda3