We will use Hitachi HORCM on a critical server, to take a snapshot of a critical data disk. Server has data disk and snapshot disk. HORCM will do everything. Hitachi also has HUR to replicate to remote site, but it is out of scope on this article, as we are working locally on same server. INSTALLATION cd / cpio -idmu < RMHORC tar -xvf HORCM.tar cd /HORCM ( HORCM setup files must exactly be under / ) ./horcminstall.sh vi /etc/horcm[0,1].conf config files more /HORCM/log0/curlog/horcm_server1.log log file DISPLAY CONFIG FILES cat /etc/horcm0.conf HORCM_MON #ip_address service poll(10ms) timeout(10ms) 1.1.1.2 37500 1000 3000 HORCM_CMD #dev_name dev_name dev_name //CMD-78895 HORCM_LDEV #dev_group dev_name Serial# LDEV# MU# #krptc d00 78895 00:55 0 #krptc d01 78895 00:42 0 HORCM_INST #dev_group ip_address service #krptc 10.0.0.20 37501 cat /etc/horcm1.conf HORCM_MON #ip_address service poll(10ms) timeout(10ms) 10.0.0.20 37501 1000 3000 HORCM_CMD #dev_name dev_name dev_name //CMD-78895 HORCM_LDEV #dev_group dev_name Serial# LDEV# MU# krptc d00 78895 00:75 0 krptc d01 78895 00:72 0 HORCM_INST #dev_group ip_address service krptc 10.0.0.20 37500 START SOURCE PROCESS [server1]/opt/DynamicLinkManager/bin#horcmstart.sh 0 starting HORCM inst 0 HORCM inst 0 starts successfully. [server1]/opt/DynamicLinkManager/bin#ps -ef | grep -i hor root 23423 1 0 11:08:41 ? 0:00 horcmd_00 root 23475 22355 0 11:09:59 pts/4 0:00 grep -i hor START DESTINATION PROCESS [server1]/opt/DynamicLinkManager/bin#horcmstart.sh 1 starting HORCM inst 1 HORCM inst 1 starts successfully. [server1]/opt/DynamicLinkManager/bin#ps -ef | grep -i hor root 23423 1 0 11:08:41 ? 0:00 horcmd_00 root 23475 22355 0 11:09:59 pts/4 0:00 grep -i hor root 28953 1 0 11:09:34 ? 0:00 horcmd_01 We could also start both processes at once with "horcmstart.sh 0 1" Stop command is horcmshutdown.sh, usage is similar. ---------------- USAGE SAMPLES SOME EXPLANATIONS AT THE BEGINNING L Local (Source) R Remote (Destination) S Simplex ( simplex means "disk is not a pair, it is single and simple". Copying can start only with paircreate ) SUS Suspended ( it means pair is not deleted, it is only suspended. Copying can start with pairresync ) -IM I: Instance, M: shadow copy fcx display in hex format -vl local -> remote copy !!!!!! USE ALWAYS THIS OPTION, IF YOU SAY "VR" YOU WRITE ON TOP OF ORIGINAL DATA !!! -vr remote -> local copy pairdisplay only display config at HORCM[0,1].CONF files. SMPL tells that disks are now only SIMPLEX, they are not a pair now, copying never occured. [server1]/opt/DynamicLinkManager/bin#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.SMPL ----,----- ----- - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.SMPL ----,----- ----- - paircreate stars copying, when copying finished they will become part of a pair. [server1]/opt/DynamicLinkManager/bin#paircreate -IM0 -g ald -vl [server1]/opt/DynamicLinkManager/bin#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 0 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 0 5309 - [server1]/opt/DynamicLinkManager/bin# you can query copying with periodic pairdisplay command above, or periodic pairevtwait command like below. you can understand the progress with % colomn, its value is 100, so copying finished exactly. [server1]/opt/DynamicLinkManager/bin#pairevtwait -IM0 -g ald -s pair -t 100 pairevtwait : Wait status done. [server1]/opt/DynamicLinkManager/bin#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL PAIR, 100 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL PAIR, 100 5309 - [server1]/opt/DynamicLinkManager/bin# pairsplit splits pair. we dont use "-s" with pairsplit so pair will not be deleted, disks wont be SIMPLEX, just pair will be SUSPENDED. [server1]/opt/DynamicLinkManager/bin#pairsplit -IM0 -g ald [server1]/opt/DynamicLinkManager/bin#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL PSUS, 100 54f0 W ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL SSUS, 100 5309 - We are trying to create difference between pairs and take care that we achieved it because % colomn decreased from 100 to 99. [server1]/#cp -rp HORCM.tar /data2/ [server1]/#cp -rp HORCM.tar /data2/HORCM0.tar [server1]/#cp -rp HORCM.tar /data2/HORCM1.tar [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL PSUS, 99 54f0 W ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL SSUS, 99 5309 - resync pair again, they were only suspended. [server1]/#pairresync -IM0 -g ald [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL COPY, 99 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL COPY, 99 5309 - [server1]/#pairevtwait -IM0 -g ald -s pair -t 40 pairevtwait : Wait status done. [server1]/#pairdisplay -IM0 -g ald -fcx Group PairVol(L/R) (Port#,TID, LU-M) ,Seq#,LDEV#.P/S,Status, % ,P-LDEV# M ald d00(L) (CL1-J-8,64, 3-0 )78895 5309.P-VOL PAIR, 100 54f0 - ald d00(R) (CL1-J-8,64, 4-0 )78895 54f0.S-VOL PAIR, 100 5309 - [server1]/# ------------------------------------- If restore needed from snapshot, use below command pairresync -IM0 -g ald -restore It will do below steps automatically without disturbing any config and snapshot config will also continue to work after new infra coming with restore. - umount local and remote disks - copy from remote to local - mount local and remote disks. Process continues working with new config again as local->remote.