在HP-UX上的一個應用數據遷移實例

 

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服務數據(文件)遷移過程,其中包括前期問題的分析,關鍵點的預判,綜合考慮各種可能出現的問題,並提出相應的解決方法或變通做法。指定實施方案,並列明瞭具體的實現過程。文中所述問題的關鍵是系統停機時間不能太長,尤其是在工作時間絕對不能停機,針對這個要求我們採用增量拷貝的方法巧妙的縮短了系統停機時間。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章