最近在回顾以前做过的一些项目,看到前年做的一个数据迁移的项目,觉得比较实用,现在分享给大家: 背景:磁盘阵列替换,需要将数据从老的磁盘阵列中迁移至新的磁盘阵列,磁盘阵列为不同厂家品牌. 主机: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无法进行迁移,只能通过导磁带的方式了。
以上是自己总结的一些经验,供大家参考! |