使用 dd 命令实现 SAN 存储的快照数据迁移(6)
- UID
- 1066743
|
使用 dd 命令实现 SAN 存储的快照数据迁移(6)
dd 命令实现 SANBoot OS 的快照数据迁移修改备份盘中操作系统的启动配置文件
备份盘上面的操作系统的启动配置文件是指向 DS4800 设备盘的,既然我们要把操作系统迁移到 DS4700,需要更改启动配置文件指向来自 DS4700 的备份盘 /dev/sdb。和启动相关的有三个配置文件:
- /etc/fstab;
- /boot/grub/grub.conf;
- 内存镜像解压后的 init 文件。
首先创建新的挂载点,将 /dev/sdb 的 boot 分区和 root 分区挂载。
1
2
3
| bash# mkdir /ds47k_boot /ds47k_root
bash# mount /dev/sdb2 /ds47k_root
bash# mount /dev/sdb1 /ds47k_boot
|
编辑 grub.conf
让 root 指向 /dev/sdb 的根分区 /dev/sdb2。
清单 5. 编辑 grub.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| bash# cd /ds47k_boot/grub
bash# vi grub.conf
bash# more /ds47k_boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-194.el5) with MPP support
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/sdb2 rhgb quiet
initrd /mpp-2.6.18-194.el5.img
|
编辑 fstab
指定 boot 分区和 root 分区分别为 /dev/sdb1, /dev/sdb2,swap 分区为 /dev/sdb3。
清单 6. 编辑 fstab1
2
3
4
5
6
7
8
9
10
| bash# cd /ds47k_root/etc/
bash# vi fstab
bash# more fstab
/dev/sdb2 / ext3 defaults 1 1
/dev/sdb1 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sdb3 swap swap defaults 0 0
|
修改备份盘的内存镜像的 init 文件
先用 cp 命令备份 /ds47k_boot 目录下的内存镜像,然后解压备份盘内存镜像,这里我们创建一个目录 /sanboot,拷贝一个当前的内存镜像放在 /sanboot 目录下,同时在 /sanboot 目录下再创建一个子目录 /sanboot/tmp/ 用于存放解压后的内存镜像文件 :
1
2
3
4
5
6
7
8
9
10
11
12
| bash# cd /ds47k_boot/
bash# cp mpp-2.6.18-194.el5.img mpp-2.6.18-194.el5.img.bak
bash# mkdir /sanboot
bash# cd /sanboot
bash# cp /ds47k_boot/mpp-2.6.18-194.el5.img ./initrd.gz
bash# gunzip initrd.gz
bash# ls
initrd
bash# mkdir tmp
bash# cd tmp
bash# cpio -id < ../initrd
16148 blocks
|
解压好之后,先备份一下当前的 init 文件为 init.bak,然后修改 init 文件,将 resume 指向 /dev/sdb3,root device 指向 /dev/sdb2,保存退出 init 文件。
1
2
3
4
5
6
7
8
9
| bash # cd /sanboot/tmp/
bash# ls
bin dev etc init lib proc sbin sys sysroot var
bash# cp init init.bak
bash# vi init
……
resume /dev/sdb3
echo Creating root device.
mkrootdev -t ext3 -o defaults,ro sdb2
|
用新的内存镜像文件覆盖之前的备份盘内存镜像,新的内存镜像先命名为 newinitrd,压缩之后,用 cp 命令覆盖当前的内存镜像:
到这里我们的启动配置文件都修改好了,接下来可以重启机器进入 HBA Utility,设置启动设备为 DS4700 的盘。
HBA Utility 配置
参照上一章 ,更改 HBA port 的 Boot Device 为 DS4700 的 LUN。
当系统起来的时候,查看一下当前操作系统,/dev/sdb 的所有分区都被挂载起来,说明操作系统已经成功的从 DS4800 迁移到 DS4700 备份盘,并且验证了 dd 命令备份成功。
清单 7. 查看文件系统1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| bash# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 49G 2.5G 44G 6% /
/dev/sdb1 99M 28M 66M 30% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm
bash# mppUtil -S
H6C0T0 Active Active ARCDS48K96122
H0C0T0L000 Up H1C0T1L000 Up
H6C0T1 Active Active ARCFT900A7382
H0C0T3L000 Up H1C0T2L000 Up
Missing Arrays
There are no missing arrays
bash# fdisk -l
Disk /dev/sda: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 6540 52428127+ 83 Linux
/dev/sda3 6541 7584 8385930 82 Linux swap / Solaris
Disk /dev/sdb: 91.2 GB, 91268055040 bytes
255 heads, 63 sectors/track, 11096 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 6540 52428127+ 83 Linux
/dev/sdb3 6541 7584 8385930 82 Linux swap / Solaris
|
到这里,我们以使用不同多路方式的 SANboot OS 的快照备份和数据迁移为例,演示了 dd 命令如何实现数据的快照备份和数据迁移。除此之外,我们从 dd 的实例看到,dd 有非常广泛的应用。 |
|
|
|
|
|