您的位置:首页 > 其它

FreeBSD 硬盘系统和数据的复制迁移实战(clone disk on FreeBSD)

2015-05-13 21:07 746 查看
[align=center]FreeBSD 硬盘系统和数据的复制迁移实战[/align] [align=center] [/align] [align=center][/align] [align=left]陈海青(joson chen) http://www.chq.name[/align] [align=left]2006.09.09[/align] [align=left] [/align] [align=left]最近,为更换硬盘,参照有关资料,进行了一次FreeBSD下的硬盘数据迁移,具体情况如下:[/align] [align=left]1:起因:原有的硬盘容量小、有坏区、swap设置不合理、/var太小,所以需要进行更换[/align] [align=left] [/align] [align=left]2:计划:1)使用sysinstall--fdisk划分好新硬盘的slice(片段,一块硬盘分成最多四个),本次划分为2个slice,用其中的19GB用于Freebsd); 2) 使用sysinstall--label划分新硬盘的partition(分区,每一个slice上又可以分成最多8个partition):/ (512MB),swap (512MB),/tmp (1GB),/var (2G,数据库等),/usr (10GB),(/home (rest of the hdd));[/align] [align=left] [/align] [align=left]3:操作步骤:[/align] [align=left]1)将新硬盘装上并让系统正确识别。原硬盘为IDE0口上的Master,FreeBSD识别为ad0。为了不用设硬盘跳线,这里将新硬盘到IDE1接口的Master,系统识别为ad2;如果你想和旧硬盘接在同一数据线线上,即IDE0接口,则必须将跳线设为slave,系统识别为ad1。 1、关机,将新硬盘装上,重新开机。 2、开机后查看是否系统是否已经识别到新硬盘了:[/align] [align=left]http://www.chq.name# dmesg | grep ad2[/align] [align=left] [/align] [align=left]2)记下旧硬盘文件系统所对应的mount:查看/etc/fstab,并且运行命令df,记录结果。新硬盘分区次序基本按照旧的一样,避免混淆。[/align] [align=left]
3[/align] )使用sysinstall的FDISK命令把新硬盘分片,设置MBR然后用LABEL命令分区。可以先自动分区,再对照原来的次序修改,假设原来的文件系统/dev/ad0s1g 对应/usr,那你新硬盘/dev/ad2s1g就用来做/usr,划分好后,按M分别清空所有文件系统的mount点,因为我们还没有建立临时的mount的目录,不清空会和系统原来的mount冲突的。 [align=left] [/align] [align=left]4)创建临时的目录用来作临时mount,用于以下步骤挂载文件系统。[/align] [align=left] http://www.chq.name#mkdir /backup
http://www.chq.name#mkdir /backup/root
http://www.chq.name#mkdir /backup/usr
http://www.chq.name#mkdir /backup/var[/align] [align=left] http://www.chq.name#mkdir /backup/tmp[/align] [align=left][/align] [align=left]5)停止原系统的主要服务,如APACHE,MYSQL等,或者重启后进入单用户状态,准备复制。进入单用户模式的方法:1.重启,在启动菜单开始倒计时的时候按下空格(space)键,输入boot -s ,然后在#后输入
fsck -p
mount -u /
mount -a
swapon -a
adjkerntz -i
[/align] [align=left] [/align] [align=left]6)运行以下脚本,执行硬盘数据和系统的复制。要注意根据前面记录的/etc/fstab和df结果查看文件系统的对应关系,修改mount等脚本。[/align] [align=left]#1 - create new filesystems (newfs the drive)
#2 - mount the partitions
#3 - dump the data from my old drive, and restore it to my new one
#4 - unmount the new drives partitions
#5 - enable softupdates on the new drive (optional)
#!/bin/sh
newfs /dev/ad1s1a
newfs /dev/ad1s1e
newfs /dev/ad1s1f
newfs /dev/ad1s1g
mount /dev/ad1s1a /backup/root
mount /dev/ad1s1e /backup/var
mount /dev/ad1s1f /backup/tmp
mount /dev/ad1s1g /backup/usr
( dump -0f - / ) | ( cd /backup/root ; restore -rf - )
( dump -0f - /var ) | ( cd /backup/var ; restore -rf - )
( dump -0f - /usr ) | ( cd /backup/usr ; restore -rf - )
( dump -0f - /tmp ) | ( cd /backup/tmp ; restore -rf - )
# umount /backup/root
# umount /backup/var
# umount /backup/usr
# umount /backup/tmp
# tunefs -n enable /dev/ad2s1a
# tunefs -n enable /dev/ad2s1e
# tunefs -n enable /dev/ad2s1f
# tunefs -n enable /dev/ad2s1g
#end[/align] [align=left] [/align] [align=left]其中:(1):( dump -0f - / ) | ( cd /backup/root ; restore -rf - ),这是把老的根目录下所有内容复制输出到管道 , restore 从管道里读数据 , 写入当前目录所在目录.[/align] [align=left](2):进行dump/restore的操作可能会花点时间,需耐心等待,我迁移了3GB数据,运行脚本用了大约40分钟。[/align] [align=left] [/align] [align=left]7)调整新硬盘中的/etc/fstab,将Device等修正,我原来使用的是第二块slice,现在使用第一个slice,于是修改了Device列:[/align] [align=left](http://www.chq.name)#mount /dev/ad1s1a /backup/root
http://www.chq.name)# vi /backup/root/etc/fstab[/align] [align=left] [/align] [align=left]8)关机,摘掉原来的硬盘,把新硬盘挂到旧硬盘原来的位置,这步不要省略了,如果你不换位置,系统还是认为新硬盘是ad2,由于你的/etc/fstab里面是对应ad0的,所以启动会找不到/usr和/var等文件系统。[/align] [align=left] [/align] [align=left]9)注意事项:重新启动,如果没有什么异常,那恭喜你,数据迁移已经成功,否则,请再看看有什么操作错误或者忘记做哪一步了。建议,让新的系统运行几天,正常后再处置旧硬盘。切记,数据迁移的是一件比较危险的事情,操作过程中不能有差错,否则可能导致你原来的数据丢失,所以必须非常谨慎。[/align] [align=left] [/align] [align=left]10)我的部分操作输出结果http://www.chq.name):[/align] [align=left]# cd /[/align] [align=left]# mkdir backup[/align] [align=left]# cd backup[/align] [align=left]# mkdir root[/align] [align=left]。。。[/align] [align=left]www# newfs /dev/ad2s1a[/align] [align=left]/dev/ad2s1a: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048[/align] [align=left] using 6 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.[/align] [align=left]super-block backups (for fsck -b #) at:[/align] [align=left] 160, 376512, 752864, 1129216, 1505568, 1881920[/align] [align=left]。。。[/align] [align=left]# sh restore.sh[/align] [align=left] DUMP: WARNING: should use -L when dumping live read-write filesystems![/align] [align=left] DUMP: Date of this level 0 dump: Thu Sep 7 22:22:40 2006[/align] [align=left] DUMP: Date of last level 0 dump: the epoch[/align] [align=left] DUMP: Dumping /dev/ad0s2a (/) to standard output[/align] [align=left] DUMP: mapping (Pass I) [regular files][/align] [align=left] DUMP: mapping (Pass II) [directories][/align] [align=left] DUMP: estimated 37230 tape blocks.[/align] [align=left] DUMP: dumping (Pass III) [directories][/align] [align=left] DUMP: dumping (Pass IV) [regular files][/align] [align=left]warning: ./.snap: File exists[/align] [align=left] DUMP: DUMP: 37868 tape blocks[/align] [align=left] DUMP: finished in 7 seconds, throughput 5409 KBytes/sec[/align] [align=left] DUMP: DUMP IS DONE[/align] [align=left] DUMP: WARNING: should use -L when dumping live read-write filesystems![/align] [align=left] DUMP: Date of this level 0 dump: Thu Sep 7 22:22:49 2006[/align] [align=left] DUMP: Date of last level 0 dump: the epoch[/align] [align=left]……[/align] [align=left] DUMP: finished in 1 seconds, throughput 7128 KBytes/sec[/align] [align=left] DUMP: DUMP IS DONE[/align] [align=left]tunefs: soft updates set[/align] [align=left] [/align] [align=left]参考资料:FreeBSD硬盘分区和数据迁移相关资料[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: