Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85346
  • 博文数量: 11
  • 博客积分: 580
  • 博客等级: 中士
  • 技术积分: 182
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-24 16:00
文章分类

全部博文(11)

文章存档

2012年(10)

2008年(1)

分类: 服务器与存储

2012-08-18 01:17:00


来源:
 李贤磊的日志

最近在回顾以前做过的一些项目,看到前年做的一个数据迁移的项目,觉得比较实用,现在分享给大家:
背景:磁盘阵列替换,需要将数据从老的磁盘阵列中迁移至新的磁盘阵列,磁盘阵列为不同厂家品牌.
主机:HP-UX 11.11
方案要求:将存储A上的数据迁移到存储B上,原卷属性不得更改,并且需要有回退计划.
迁移步骤(下面是按照只有一台主机来进行操作,如果有大量主机的话,则需要写脚本来执行)
我们使用的是HP-UX的mirror软件进行数据迁移:
1. 划分新存储上面的lun,注意lun的大小最好和原来的存储上的lun一样大,因为要做mirror,否则会空间浪费.
2. 将划分好的lun分配到原有的VG组中,注意VG中的MAX PV的大小,当前的pv数必须<=MAX PV的一半,否则新增磁盘将无法加入,如果这样的话,则需要重新建立VG,修改参数。我们在实际操作中,遇到了少量的VG组没有满足条件,因此只能重建。
3、进行卷级的镜像操作:
     # lvextend -m 1 /dev/vg01/lv01 /dev/dsk/cxtxdx (/dev/dsk/cxtxdx 为新存储的lun)
4、等mirror完成后,进行分离。注意,考虑到回退,原卷不能马上删除。
     # lvsplit -s new /dev/vg01/lv01 ( 这步完成后,会形成一个新的卷,叫lv01new,此卷在新的存储上)
5. 此时,lv01在老存储上,lv01new在新的存储上,由于不能更改原卷的名称,因此需要将lv01new更改成lv01,而原lv01则更改成其他名称.
     # umountall -F vxfs
     # vgexport -s -p -v -m vg01.map vg01
     # 修改vg01.map文件,将文件中lv01new改成lv01,而将lv01改成lv01old
     # vgchange -a n vg01
     # vgexport vg01
     # mkdir /dev/vg01
     # mknod /dev/vg01/group c 64 0x010000
     # vgimport -s -m vg01.map vg01
     # vgchange -a y vg01
     # fsck 
     # mountall -F vxfs
6. 总结:hp-ux 的mirror工具是一个很好的数据迁移工具,但同时又有诸多限制,特别是VG的参数一旦VG建立好了,要想改,只有重建VG,以前用过vgmodify(HP 内部工具),但发现出错率很高,不保险。另外,一些特殊的lv无法用mirror方式进行迁移,如lv 建立了stripe的方式等。因此,建议大家在使用mirror做迁移的时候,需要事先详细的检查自己目前环境下主机的一些LVM的设置。
VG 参数的一些限制:
MAX PV:该VG组中允许加入最大的PV数,这个在做mirror的时候很关键,如果太小,那无法加入新存储的磁盘。
MAX PE Per Pv :一般默认情况下建立的VG,这个值是按照PV SIZE/PE SIZE得出的,因此如果你加入的磁盘比原存储的磁盘大,那加入VG的时候,也会按照原磁盘的大小来使用,这样会浪费磁盘空间。解决方法,要么重建VG ,要么新磁盘大小=原磁盘大小。
LV STRIPE:那些建立了LV Stripe方式的卷,mirror无法进行迁移,只能通过导磁带的方式了。

以上是自己总结的一些经验,供大家参考!

阅读(4692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~