Schvian 2017-06-21
摘要:一、预备知识了解什么是dd以及什么是dump?dd命令用于复制一个设备/分区,原样输出到另外一个文件/设备/分区。dump命令用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
一、预备知识
了解什么是dd以及什么是dump?
dd命令用于复制一个设备/分区,原样输出到另外一个文件/设备/分区。
dump命令用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
备份好了用什么恢复?
restore命令是dump命令的逆过程,用于还原dump命令生成的备份文件。
二、环境模拟
首先要求有一个可以正常启动的分区,然后要有剩余空间!(这里有两种情况:一个是某分区,一个是新磁盘。两者类似,为了方便本文使用的是新磁盘的方式。)
使用虚拟机模拟了服务器的真实情况:/dev/sda1是正常系统启动分区、/dev/sdb1是新的磁盘分区。(必须注意/dev/sdb1的容量大于/dev/sda1)
虚拟机设置及分区情况:
三、实战部分
1、首先备份MBR主引导记录
ddif=/dev/sda1of=/mnt/lvm/mbr.binbs=512count=1
2、创建LVM卷
首先卸载/dev/sdb1,然后在其上用pvcreate创建物理卷和vgcreate创建卷组vgtest:
umount/dev/sdb1
pvcreate/dev/sdb1
vgcreatevgtest/dev/sdb1
卷组创建好之后,可以用vgs命令查看卷组。
用lvs命令查看逻辑卷,这个时候我们还没有任何逻辑卷。开始创建逻辑卷和文件系统:
lvcreate-L25G-nlvtestvgtest
mkfs.ext4/dev/mapper/vgtest-lvtest
3、备份/目录和/boot目录
首先备份/目录。在dump命令前后输入的date命令是为了查看备份使用的时长。
date&&dump-0f/mnt/lvm/rootfs-20160824.bak/&&date
保险起见我们也备份一下/boot目录:
date&&dump-0f/mnt/lvm/boot-20160824.bak/boot&&date
4、尝试恢复
restore-rfrootfs-20160828.bakboot-20160824.bak
5、修改启动文件
注意:这里根分区(启动分区)需要更改成实际要启动的磁盘。否则不更改的话系统会出现应该使用/dev/sdb1LVM,却使用了原来的/dev/sda1的情况!
首先通过blkid查看分区的UUID:
blkid
然后修改/mnt/lvm/etc/fstab文件(切换了跟分区之后将变成/etc/fstab)中的根分区指向:
vim/mnt/lvm/etc/fstab
chroot到新的分区里面,然后检查相应的分区设置。
chroot/mnt/lvm
注意:要chroot进入目录查看是否正确!并且确定防火墙SELinux等的设置,最最最重要的是OpenSSH要打开的!
6、恢复MBR主引导记录
ddif=./mbr.binof=/dev/mapper/vgtest-lvtest
7、修正GRUB引导
这样可以让新磁盘可以脱离源磁盘的引导。
chroot进入新磁盘。并重建/boot目录:
chroot/mnt/lvm
ls/boot/
rm-rf/boot/*
yuminstallgrub-y
然后输入:
root(hd1,0)
setup(hd1)
quit
这样就将GRUB引导指向了新的磁盘。
重启可以看看是否有问题。
原文发布时间为:2016-08-26
本文来自云栖社区合作伙伴“Linux中国”
用云栖社区APP,舒服~