在HP-UX上的一个应用数据迁移实例

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

HP-UX上的一个应用数据迁移实例

 

 1. 问题简单描述

    首先简单介绍一下我的服务器环境,这里主要指web服务、app服务。我们这里使用两台HP6600作为前端的web服务和app服务,其中前端的web静态页面展示由apache完成,具体应用(app)使用的是weblogic中间件,所有请求经由apache服务转发过来。weblogic做了集群配置,apache也是并行运行的。

    由于是两台服务器并行,而且又涉及文件的共享操作,所以需要实现共享存储,前期由于共享存储设备没有到位,所以用NFS作为替代实现手段。简单的来说就是文件放在其中的一台主机的本地硬盘的某一分区上,然后将该分区共享NFS,另一台主机mountNFS文件系统,并且mount的目录位置相同。这样做虽然可以解决文件共享的问题,但却失掉了双机并行的高可用性,因为如果提供共享NFS存储的那台主机挂掉,则整个系统就瘫痪了。所以才有后续的数据迁移工作,新的存储设备是NAS

    新的NAS设备到位了,空间已经分配好了,并且已将NAS挂接到两台主机上了(也是通过NFS)。那么下一步就是数据迁移了,将应用数据从本地硬盘迁移(复制)到NAS设备上。我们的应用系统有点类似于内容管理系统,应用使用过程中会有新的文件(静态页面)产生,文件较多,而且较小。应用系统在工作时间不能停(这里是指app系统,也就weblogic),前台页面展示(apache服务)要求全天基本不能停。

    问题就简单介绍到这,下面我将根据主机环境以及应用运行的需要,分析和给出我的解决以及实施过程。

 

 2. 问题的分析

 2.1. 主机上应用的配置情况。

    主机上应用软件以及静态页面的位置规划得还算不错,都存放于同一分区下。

    为了说明问题的方便,这里做一些符号、变量的定义。    

简称

说明

HOST_1

1 号主机

HOST_2

2 号主机

IP_1

1 号主机的IP地址

IP_2

2 号主机的IP地址

IP_NAS

NAS 设备的IP地址

 

  • 应用所在位置

    应用软件以及生成的静态页面文件都在HOST_1的本地硬盘上。   

/appdata/download1 :位于IP_1

  • NAS设备mount的位置   

/nas40   IP_1IP_2同一目录下。

  • 分区和NASmount状态(当前)

    IP_1主机上

/ on /dev/vg00/lvol3 ioerror=nodisable,log,dev=40000003 on Sat Jul  5 13:55:58 2008

/stand on /dev/vg00/lvol1 ioerror=mwdisable,log,nodatainlog,tranflush,dev=40000001 on Sat Jul  5 13:55:59 2008

/var on /dev/vg00/lvol8 ioerror=mwdisable,delaylog,nodatainlog,dev=40000008 on Sat Jul  5 13:56:14 2008

/usr on /dev/vg00/lvol7 ioerror=mwdisable,delaylog,nodatainlog,dev=40000007 on Sat Jul  5 13:56:14 2008

/tmp on /dev/vg00/lvol4 ioerror=mwdisable,delaylog,nodatainlog,dev=40000004 on Sat Jul  5 13:56:14 2008

/opt on /dev/vg00/lvol6 ioerror=mwdisable,delaylog,nodatainlog,dev=40000006 on Sat Jul  5 13:56:14 2008

/home on /dev/vg00/lvol5 ioerror=mwdisable,delaylog,nodatainlog,dev=40000005 on Sat Jul  5 13:56:15 2008

/appdata/download1 on /dev/vg01/lvol1 ioerror=mwdisable,delaylog,nodatainlog,dev=40010001 on Sat Jul  5 13:56:15 2008

/bea on /dev/vg00/LVbea ioerror=mwdisable,nolargefiles,delaylog,nodatainlog,dev=40000009 on Sat Jul  5 13:56:17 2008

/net on -hosts ignore,indirect,nosuid,soft,nobrowse,dev=1 on Sat Jul  5 13:56:55 2008

/nas40 on $IP_NAS:ccgpfs2 rsize=32768,wsize=32768,NFSv3,dev=5 on Fri Nov 28 10:27:28 2008

    IP_2主机上

/ on /dev/vg00/lvol3 ioerror=nodisable,log,dev=40000003 on Sat Jul  5 13:55:48 2008

/stand on /dev/vg00/lvol1 ioerror=mwdisable,log,nodatainlog,tranflush,dev=40000001 on Sat Jul  5 13:55:49 2008

/var on /dev/vg00/lvol8 ioerror=mwdisable,delaylog,nodatainlog,dev=40000008 on Sat Jul  5 13:56:05 2008

/usr on /dev/vg00/lvol7 ioerror=mwdisable,delaylog,nodatainlog,dev=40000007 on Sat Jul  5 13:56:05 2008

/tmp on /dev/vg00/lvol4 ioerror=mwdisable,delaylog,nodatainlog,dev=40000004 on Sat Jul  5 13:56:05 2008

/opt on /dev/vg00/lvol6 ioerror=mwdisable,delaylog,nodatainlog,dev=40000006 on Sat Jul  5 13:56:05 2008

/home on /dev/vg00/lvol5 ioerror=mwdisable,delaylog,nodatainlog,dev=40000005 on Sat Jul  5 13:56:05 2008

/bea on /dev/vg00/LVbea ioerror=mwdisable,nolargefiles,delaylog,nodatainlog,dev=40000009 on Sat Jul  5 13:56:05 2008

/net on -hosts ignore,indirect,nosuid,soft,nobrowse,dev=1 on Sat Jul  5 13:56:44 2008

/appdata/download1 on $IP_1:/appdata/download1 rsize=32768,wsize=32768,NFSv3,dev=3 on Sat Jul  5 14:19:22 2008

/nas40 on $IP_NAS:ccgpfs2 rsize=32768,wsize=32768,NFSv3,dev=5 on Fri Nov 28 10:26:32 2008

   

 2.2. 初步分析

    从以上情况不难看出,数据的迁移工作主要是将/appdata/download1下的所有文件拷贝到/nas40目录下。由于应用的位置改变了,则需要修改apacheweblogic的相应配置,有可能也需要修改应用本身的配置文件,这样做显然有些麻烦,而且容易出错。为了避免这种麻烦,我们可以将NAS挂接到/appdata下,保持应用的原有路径不变,从而无需修改任何配置文件(包括apacheweblogic、以及应用本身的配置文件)。下面介绍一下具体实现方法和过程。

   

 3. 迁移实施过程

    为了使拷贝与原文件一致,则原文件目录中不能再有文件被修改或增加新的文件,这样就需要停掉app应用(及weblogic服务)。由于app服务基本不能停,而且在工作时间是绝对不能中断的,而且应用文件夹(/appdata/download1)很大,其中小文件很多,拷贝文件所花费时间一定非常之长,显然停掉服务做拷贝是不现实的。那么,就只能想其他的解决办法了。

    我的解决办法是做增量拷贝,具体方法如下,在某一个时间点将/appdata/download1下的文件拷贝到/nas40下,此时不停任何服务,应用照常运行。这个拷贝显然会耗费相当长的时间,可能是半天甚至一天。不过这没有关系,拷贝期间不影响应用的正常使用。当拷贝完成时,/nas40下的文件显然要比/appdata/download1下的文件旧,但差别不会太大,差别也就是在我们执行拷贝过程中/appdata/download1下所做过修改的文件,我们再选择一个应用不是很忙的时间,短暂的停一下应用服务(weblogic服务)使得/appdata/download1下的文件不再改变,此刻执行一个增量拷贝将改变过的文件拷贝到/nas40下,至此文件拷贝完成。下一步就是将NAS挂接到/appdata下,然后启动应用服务(weblogic服务),观察一下日志看是否有异常,如未见异常则大功告成了。以下具体给出实现过程

 3.1. /nas40下创建目录

# cd /nas40
# mkdir download1
# chown -R bea:hpbea ./download1

 

 3.2. 拷贝文件

    拷贝文件分为两步,第一步是在不停任何应用服务的情况下进行的。第二步是增量拷贝。我选择周五的下午执行第一步,这样可以在周六的非工作时间短暂的停一下应用服务执行增量拷贝。这样安排可以保证有充裕的时间去解决突发问题。

  • 周五,第一次拷贝

    IP_1

# cd /ccgp/download1

# nohup find . | cpio -dpumv /nas40/download1 > ./cplog50_20081205.log 2>&1 &

  • 周六,增量拷贝

    周五的文件拷贝时间的确很长,差多用了12个小时。

    首先停掉weblogic服务。

    IP_1,增量拷贝,拷贝那些1天之内被修改过的文件。

# nohup find . -mtime -1 | cpio -dpumv /nas40/download1 > ./cplog50_20081206.log 2>&1 &

    这一步的时间不长,才十多分钟。

    检查拷贝是否正确。

# du -sk /appdata/download1

# du -sk /nas40/download1

  • 更改卷和NASmount

    先将/appdata/download1 mount到其它位置。

    IP_2umount NFS

# umount /appdata/download1

    IP_1,将/appdata/download1挂到/old_d1下。

# cd /

# mkdir old_d1

# umount /appdata/download1

# mount /dev/vg01/lvol1 /old_d1

    IP_1,将NAS/nas40)挂到/ccgp下。

# umount /nas40

# mount $IP_NAS:ccgpfs2 /ccgp

    IP_2,将NAS/nas40)挂到/ccgp下。

# umount /nas40

# mount $IP_NAS:ccgpfs2 /ccgp

 

 3.3. 重启启动服务

    重新启动weblogicapache,观察日志检查是否有异常出现,没有,可以收工了。

    

 4. 结语

    本文介绍了实际工作中遇到的一个数据迁移问题的分析、解决、实施的过程。数据迁移工作需要考虑的因素很多,有时环境也很复杂,所以要认真分析和考虑、制定出合适实施方案。本文描述了实际工作中所做的一次数据迁移过程,一次简单的web服务数据(文件)迁移过程,其中包括前期问题的分析,关键点的预判,综合考虑各种可能出现的问题,并提出相应的解决方法或变通做法。指定实施方案,并列明了具体的实现过程。文中所述问题的关键是系统停机时间不能太长,尤其是在工作时间绝对不能停机,针对这个要求我们采用增量拷贝的方法巧妙的缩短了系统停机时间。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值