This articles explain how to populate the Hitachi /etc/horcm1.conf configuration file for Hitachi devices using the Hitachi Command Control Interface (CCI).
HORCM stands for Hitachi Online Remote Copy Manager.
The CCI software is required to open a communication channel from the server to the locally attached Hitachi array.
Ensure the CCI software has been downloaded and configured before performing the following steps.
# pwd
/HORCM
The "RMinstsh" script can be used to install the Command Control Interface (CCI) software on the host.
Troubleshooting tips
1.] Check if horcm instance is running
# ps -ef | grep horcm
root 16694 1 0 11:20 ? 00:00:00 horcmd_01
root 17233 10174 0 11:25 pts/1 00:00:00 grep --color=auto horcm
2.] If the "horcmd_01" instance is running, shutdown the instance using:
# /usr/bin/horcmshutdown.sh 1
inst 1:
HORCM Shutdown inst 1 !!!
3.] Generate horcm1.conf file containing command devices only
# ls /dev/sd* | /HORCM/usr/bin/inqraid -sort -CM 2> /dev/null | /HORCM/usr/bin/mkconf.sh -i 1 -g vg1
starting HORCM inst 1
HORCM inst 1 starts successfully.
Could not find the target devices.
HORCM Shutdown inst 1 !!!
# cat horcm1.conf
# Created by mkconf.sh on Mon 28 Nov 11:31:29 GMT 2022
HORCM_MON
#ip_address service poll(10ms) timeout(10ms)
127.0.0.1 52323 1000 3000
HORCM_CMD
#dev_name dev_name dev_name
#UnitID 0 (Serial# 413010)
/dev/sdp
# ERROR [CMDDEV] /dev/sdp SER = 413010 LDEV = 1551 [ OPEN-V-CM ]
4.] Copy the horcm1.conf to /etc/horcm1.conf before starting the horcm instance
# cp horcm1.conf /etc/horcm1.conf
5.] Start the horcm 1 instance
# /usr/bin/horcmstart.sh 1
starting HORCM inst 1
HORCM inst 1 starts successfully.
6.] The "/HORCM/usr/bin/raidscan" utility can be used to generate a list of LDEV LUN ID lines used to populate the horcm1.conf file where the mkconf.sh utility fails to work.
# vxdisk path | egrep 'hitachi_vspgx0_05da|hitachi_vspgx0_05db|hitachi_vspgx0_05dc|hitachi_vspgx0_05dd|hitachi_vspgx0_05de|hitachi_vspgx0_05df|hitachi_vspgx0_05d9' | awk '{print "/dev/"$1 }' | /HORCM/usr/bin/inqraid -fd | /HORCM/usr/bin/raidscan -find -I1
DEVICE_FILE UID S/F PORT TARG LUN SERIAL LDEV PRODUCT_ID
/dev/sdj 0 F CL1-E 0 191 413010 1498 OPEN-V
/dev/sdk 0 F CL1-E 0 192 413010 1499 OPEN-V
/dev/sdl 0 F CL1-E 0 194 413010 1500 OPEN-V
/dev/sdm 0 F CL1-E 0 195 413010 1501 OPEN-V
/dev/sdn 0 F CL1-E 0 196 413010 1502 OPEN-V
/dev/sdo 0 F CL1-E 0 197 413010 1503 OPEN-V
/dev/sdi 0 F CL1-E 0 190 413010 1497 OPEN-V
7.] Stop the horcm 1 instance if running.
# horcmshutdown.sh 1
inst 1:
HORCM Shutdown inst 1 !!!
8.] Provide the specific Veritas Volume Manager (VxVM) DMPNODEs to be populated in the /horcm1.conf file
# vxdisk path | egrep 'hitachi_vspgx0_05da|hitachi_vspgx0_05db|hitachi_vspgx0_05dc|hitachi_vspgx0_05dd|hitachi_vspgx0_05de|hitachi_vspgx0_05df|hitachi_vspgx0_05d9' | awk '{print "/dev/"$1 }' | /HORCM/usr/bin/inqraid -fd | /HORCM/usr/bin/mkconf.sh -i 1 -g vg1
starting HORCM inst 1
HORCM inst 1 starts successfully.
HORCM Shutdown inst 1 !!!
A CONFIG file was successfully completed.
starting HORCM inst 1
HORCM inst 1 starts successfully.
DEVICE_FILE Group PairVol PORT TARG LUN M SERIAL LDEV
/dev/sdj vg1 vg1_000 CL1-E 0 191 - 413010 1498
/dev/sdk vg1 vg1_001 CL1-E 0 192 - 413010 1499
/dev/sdl vg1 vg1_002 CL1-E 0 194 - 413010 1500
/dev/sdm vg1 vg1_003 CL1-E 0 195 - 413010 1501
/dev/sdn vg1 vg1_004 CL1-E 0 196 - 413010 1502
/dev/sdo vg1 vg1_005 CL1-E 0 197 - 413010 1503
/dev/sdi vg1 vg1_006 CL1-E 0 190 - 413010 1497
HORCM Shutdown inst 1 !!!
Please check '/horcm1.conf','/HORCM/log1/curlog/horcm_*.log', and modify 'ip_address & service'.
9.] Modify the horcm1.conf
a.] Change the "HORCM_MON" IP address "127.0.0.1" to "NONE"
b.] Change the "HORCM_INST" IP address "127.0.0.1" to the IP address for the host
Sample horcm1.conf file generated
# cat /horcm1.conf
# Created by mkconf.sh on Mon 28 Nov 11:16:17 GMT 2022
HORCM_MON
#ip_address service poll(10ms) timeout(10ms)
127.0.0.1 52323 1000 3000
HORCM_CMD
#dev_name dev_name dev_name
#UnitID 0 (Serial# 413010)
/dev/sdp
HORCM_DEV
#dev_group dev_name port# TargetID LU# MU#
# /dev/sdj SER = 413010 LDEV = 1498 [ FIBRE FCTBL = 3 ]
vg1 vg1_000 CL1-E 0 191
# /dev/sdk SER = 413010 LDEV = 1499 [ FIBRE FCTBL = 3 ]
vg1 vg1_001 CL1-E 0 192
# /dev/sdl SER = 413010 LDEV = 1500 [ FIBRE FCTBL = 3 ]
vg1 vg1_002 CL1-E 0 194
# /dev/sdm SER = 413010 LDEV = 1501 [ FIBRE FCTBL = 3 ]
vg1 vg1_003 CL1-E 0 195
# /dev/sdn SER = 413010 LDEV = 1502 [ FIBRE FCTBL = 3 ]
vg1 vg1_004 CL1-E 0 196
# /dev/sdo SER = 413010 LDEV = 1503 [ FIBRE FCTBL = 3 ]
vg1 vg1_005 CL1-E 0 197
# /dev/sdi SER = 413010 LDEV = 1497 [ FIBRE FCTBL = 3 ]
vg1 vg1_006 CL1-E 0 190
HORCM_INST
#dev_group ip_address service
vg1 127.0.0.1 52323
Modified horcm1.conf file
# cat /horcm1.conf
# Created by mkconf.sh on Mon 28 Nov 11:16:17 GMT 2022
HORCM_MON
#ip_address service poll(10ms) timeout(10ms)
NONE 52323 1000 3000
HORCM_CMD
#dev_name dev_name dev_name
#UnitID 0 (Serial# 413010)
/dev/sdp
HORCM_DEV
#dev_group dev_name port# TargetID LU# MU#
# /dev/sdj SER = 413010 LDEV = 1498 [ FIBRE FCTBL = 3 ]
vg1 vg1_000 CL1-E 0 191
# /dev/sdk SER = 413010 LDEV = 1499 [ FIBRE FCTBL = 3 ]
vg1 vg1_001 CL1-E 0 192
# /dev/sdl SER = 413010 LDEV = 1500 [ FIBRE FCTBL = 3 ]
vg1 vg1_002 CL1-E 0 194
# /dev/sdm SER = 413010 LDEV = 1501 [ FIBRE FCTBL = 3 ]
vg1 vg1_003 CL1-E 0 195
# /dev/sdn SER = 413010 LDEV = 1502 [ FIBRE FCTBL = 3 ]
vg1 vg1_004 CL1-E 0 196
# /dev/sdo SER = 413010 LDEV = 1503 [ FIBRE FCTBL = 3 ]
vg1 vg1_005 CL1-E 0 197
# /dev/sdi SER = 413010 LDEV = 1497 [ FIBRE FCTBL = 3 ]
vg1 vg1_006 CL1-E 0 190
HORCM_INST
#dev_group ip_address service
vg1
10.] Copy the horcm1.conf to /etc/horcm1.conf before starting the horcm instance
# cp horcm1.conf /etc/horcm1.conf
11.] Start the horcm 1 instance
# /usr/bin/horcmstart.sh 1
starting HORCM inst 1
HORCM inst 1 starts successfully.
12.] Export the following HORCM based variables
# export HORCMINST=1
for Hitachi ShadowImage (SI) environments:
# export HORCC_MRCF=1
13.] To show the state of the Hitachi devices, type:
The volume group is "vg1" in this instance.
# pairdisplay -g vg1 -I1 -fxd -l
Group PairVol(L/R) Device_File M ,Seq#,LDEV#.P/S,Status, Seq#,P-LDEV# M
vg1 vg1_000(L) sdj 0 413010 5da.P-VOL PAIR,413010 5e1 -
vg1 vg1_001(L) sdk 0 413010 5db.P-VOL PAIR,413010 5e2 -
vg1 vg1_002(L) sdl 0 413010 5dc.P-VOL PAIR,413010 5e3 -
vg1 vg1_003(L) sdm 0 413010 5dd.P-VOL PAIR,413010 5e4 -
vg1 vg1_004(L) sdn 0 413010 5de.P-VOL PAIR,413010 5e5 -
vg1 vg1_005(L) sdo 0 413010 5df.P-VOL PAIR,413010 5e6 -
vg1 vg1_006(L) sdi 0 413010 5d9.P-VOL PAIR,413010 5e0 -
The additional -ISI options can be specified to denote ShadowImage (SI) devices, followed by the HORCM instance number:
# pairdisplay -g vg1 -ISI1 -fxd -l
Group PairVol(L/R) Device_File M ,Seq#,LDEV#.P/S,Status, Seq#,P-LDEV# M
vg1 vg1_000(L) sdj 0 413010 5da.P-VOL PAIR,413010 5e1 -
vg1 vg1_001(L) sdk 0 413010 5db.P-VOL PAIR,413010 5e2 -
vg1 vg1_002(L) sdl 0 413010 5dc.P-VOL PAIR,413010 5e3 -
vg1 vg1_003(L) sdm 0 413010 5dd.P-VOL PAIR,413010 5e4 -
vg1 vg1_004(L) sdn 0 413010 5de.P-VOL PAIR,413010 5e5 -
vg1 vg1_005(L) sdo 0 413010 5df.P-VOL PAIR,413010 5e6 -
vg1 vg1_006(L) sdi 0 413010 5d9.P-VOL PAIR,413010 5e0 -
14.] Veritas Volume Manager (VxVM) view of pvol devices
# vxdisk -eo alldgs list
DEVICE TYPE DISK GROUP STATUS OS_NATIVE_NAME ATTR
hitachi_vspgx0_05da auto:cdsdisk hitachi_vspgx0_05da Shadow online thinrclm sdj hdprclm fc pvol
hitachi_vspgx0_05db auto:cdsdisk hitachi_vspgx0_05db Shadow online thinrclm sdk hdprclm fc pvol
hitachi_vspgx0_05dc auto:cdsdisk hitachi_vspgx0_05dc Shadow online thinrclm sdl hdprclm fc pvol
hitachi_vspgx0_05dd auto:cdsdisk hitachi_vspgx0_05dd Shadow online thinrclm sdm hdprclm fc pvol
hitachi_vspgx0_05de auto:cdsdisk hitachi_vspgx0_05de Shadow online thinrclm sdn hdprclm fc pvol
hitachi_vspgx0_05df auto:cdsdisk hitachi_vspgx0_05df Shadow online thinrclm sdo hdprclm fc pvol
hitachi_vspgx0_05d9 auto:cdsdisk hitachi_vspgx0_05d9 Shadow online thinrclm sdi hdprclm fc pvol
sdc auto:none - - online invalid sdc -
15.] Repeat the process for the svol (S-VOL) SI devices on the alternate system or alternate horcm*.conf file