Skip to main content
Hitachi Vantara Knowledge

HDvM and CCI

 

It is possible to make HDvM 5.x use pre-existing HORCM CONF files which have been setup to control replication. This document discusses how to do this and gives examples of what works and what does not. It may be supported under HDvM 4.x, but I have not tested this.

Required

HDvM 5.x Agent on one or more Hosts

CCI 01-17-03/05 or later installed on Host(s) with HDvM agent

Optional but recommended

Define a Host as a Replication Management Console. Then you can control all replication from one Host. Only this Host needs the HDvM Agent and CCI installed. Obviously, this Host must have access to a non-secured Command Device – so you will want to restrict access to this Host from ordinary users as it can create pairs for all Hosts.

The rest of this document assumes that a Replication Management Console is in use.

Step 1 – Update all HORCM CONF files to HDvM “standards”

HDvM will accept most forms of the HORCM CONF file. However, some sections must be defined in a certain way – or HDvM will not use the files. For example, HDvM 5.0 is not aware of the new features in CCI 01-17-03/05 and above. Specifically, HDvM 5.0 does not understand:

  • \\.\CMD-SerialNumber as a valid definition of a CMDDEV
  • The new, optional, HORCM_LDEV section which can be used for 9900V, USP, NSC55 and above.

In addition, the following is the default in server.properties on the HDvM server:

server.horcmconfigfile.hostname=ipaddress

By default, server.properties is in this directory:

C:\Program Files\HiCommand\DeviceManager\HiCommandServer\config

Therefore, you must not use “localhost” in HORCM CONF files if you want HDvM to use these files.

The sample configuration file on the next page, HORCM2.CONF, is a sample of a HORCM CONF file that HDvM will always ignore – irrespective of whether you tell HDvM to use it or not.

HORCM_MON

#ip_address   service  poll(10ms)   timeout(10ms) 

localhost     11002    1000         3000

#

# First error - localhost not allowed (by default)

HORCM_CMD

#dev_name                        dev_name

\\.\CMD-10111          

#

# Second error - New syntax for CMDDEV not supported in HDvM 5.0

 

HORCM_LDEV

#dev_group   dev_name            Serial#   CU:LDEV(LDEV#)   MU#

#

TC_USP600   DH_TC_USP600_lun1   10111     0A:49

TC_USP600   DH_TC_USP600_lun2   10111     04:43

#

# Third error - HORCM_LDEV section not supported

 

HORCM_INST

#dev_group   ip_address          service  

#

TC_USP600   localhost           11003

 

Step 2 – Update Host agent properties file

On the Host to be the Replication Management Console Host, stop the Host Agent service.

Now, update the Host Agent server.properties file as follows:

server.agent.rm.centralizePairConfiguration=enable

server.agent.rm.exclusion.instance=6, 7

server.agent.rm.optimization.userHorcmFile=true

By default, the Host Agent server.properties file is in this directory:

C:\Program Files\HDVM\HBaseAgent\agent\config

  • The 1st statement tells HDvM that this Host is a Replication Management Console
  • The 2nd statement tells HDvM not to use HORCM6.CONF and HORCM7.CONF – even if the HDvM agent modifies the files
  • The 3rd statement tells the HDvM agent to update the HORCM CONF files as required

In my experience, this 2nd parameter is ignored at certain levels of HDvM 5.x.

So, I suggest that if you do not want a pair of HORCM CONF files to be usable by HDvM, you simply use “localhost” instead of “IP Address”. Of course, you cannot use “localhost” for TrueCopy HORCM CONF files if this CCI server is communicating with another CCI server to control TrueCopy.

Always use the \\.\CMD-10111 syntax for describing your CMDDEV as well. This means that the HORCM file will work correctly after a reboot even if the Physical Drive numbers change.

Now start the Host Agent service.

Step 3 – HDvM Agent modifies all “valid” HORCM CONF files

Here is a typical, but complex, HORCM CONF file (HORCM0.CONF). Note that it has been created to be as difficult as possible to understand J.

Unusual features of this file are:

  • It contains a CMDDEV for 4 different subsystems
  • It contains a mixture of TrueCopy and ShadowImage definitions
  • It uses both CL1-A-XX and CL-1-An-XX syntax
  • It uses 0 and 000 to represent zero – not recommended, in practice!

HORCM_MON

#ip_address        service   poll(10ms)      timeout(10ms) 

10.129.3.127       horcm0    1000            3000          

 

HORCM_CMD

#dev_name                               dev_name

 

# USP600 - SN 10111

\\.\PhysicalDrive2

 

# 9580V - SN 41

\\.\PhysicalDrive5

 

# USP100 - SN 10262

\\.\PhysicalDrive6

 

# NSC55 - SN 80025

\\.\PhysicalDrive8

 

HORCM_DEV

#dev_group    dev_name            port#       TargetID LU#     MU

#

TC_USP600     DH_TC_USP600_lun0   CL1-A-18    1        0

SI_9580V      DH_SI_9580V_lun0    CL1-A1-11   1        000     0

SI_9580V      DH_SI_9580V_lun3    CL1-A1-11   1        003     0

SI_9580V      DH_SI_9580V_lun5    CL1-A1-11   1        005     0

SI_USP100     DH_SI_USP100_lun1   CL1-A2-10   1        001     0

SI_NSC55      DH_SI_NSC55_lun0    CL1-A3-6    0        0       0 

 

HORCM_INST

#dev_group      ip_address        service  

#

TC_USP600       10.129.3.127      horcm1

SI_9580V        10.129.3.127      horcm1

SI_USP100       10.129.3.127      horcm1

SI_NSC55        10.129.3.127      horcm1

 

Nevertheless, HDvM understands this file and will use it correctly.

Here is what the HDvM Agent does to the beginning of this file:

# Edited by dvmraidinit on Wed Jul 26 15:46:11 2006

# Edited by dvmraidinit on Wed Jul 26 15:46:11 2006

# Edited by dvmraidinit on Wed Jul 26 15:46:11 2006

# Edited by dvmraidinit on Wed Jul 26 15:46:11 2006

HORCM_MON

#ip_address        service   poll(10ms)      timeout(10ms) 

10.129.3.127       horcm0    1000            3000          

 

HORCM_CMD

#dev_name                               dev_name

# USP600 - SN 10111

#cu:ldev = 02:03

\\.\PhysicalDrive2 #10111

# SYD9580V - SN 41

#cu:ldev = 0000

\\.\PhysicalDrive5 #0041

# USP100 - SN 10262

#cu:ldev = 00:10

\\.\PhysicalDrive6 #10262

# NSC55 - SN 80025

#cu:ldev = 03:10

\\.\PhysicalDrive8 #80025

 

The HDvM Agent does not update anything else in the file.

Important Note:

As you can see, the HDvM Agent adds a comment for the cu:ldev of the CMDDEV and a comment for the Serial Number of the array.

However, during one reboot of this Host, after a power failure in the lab, the Host rebooted without the NSC55 being online. In this unusual case, HDvM made serious errors updating the HORCM CONF files which rendered them incorrect and useless.

Therefore:

  • Always make your own comments in the HORCM CONF files – showing which CMDDEV belongs to which subsystem.
  • If HDvM updates the HORCM CONF files in error, you can always stop the Host Agent, use your own comments to fix the HORCM CONF files and then restart the Host Agent.
  • After doing this, Refresh and LUN SCAN all subsystems affected by these files.

Please note that HDvM 5.1 has improved this process. You must have HDvM 5.1.0-01 or above as the server and you must have HDvM 5.1.0-01 Agent installed as well. In this case, you can use the \\.\CMD-SerialNumber syntax in the HORCM CONF file. Here is an example of what the HDvM 5.1.0 Agent does to a HORCM CONF file.

# Edited by dvmraidinit on Mon Aug 28 14:06:56 2006

HORCM_MON

#ip_address        service             poll(10ms)          timeout(10ms) 

10.129.148.40      11803               1000                3000          

 

HORCM_CMD

#dev_name                              dev_name

#

# BNE9570V_2 SN 6802

#

#cu:ldev = 0000

\\.\CMD-6802-0

In this case, only the cu:ldev comment is added. However, there is still a bug in HDvM 5.1 at this point in time. Here is a HORCM CONF file that is not updated correctly.

# Edited by dvmraidinit on Mon Aug 28 14:06:55 2006

# Edited by dvmraidinit on Mon Aug 28 14:06:55 2006

# Edited by dvmraidinit on Mon Aug 28 14:06:55 2006

HORCM_MON

#ip_address                             service             poll(10ms)          timeout(10ms) 

10.129.148.40                           11004               1000                3000          

 

HORCM_CMD

#dev_name                               dev_name

#

# BNE9570V_2 SN 6802

#

#cu:ldev = 0000

\\.\CMD-6802-0

#

# BNE9200_1  SN 0875

#

#cu:ldev = *

\\.\CMD-875-1

#

# BNE9570V_1 SN 0977

#

#cu:ldev = *

\\.\CMD-977-5

HDvM 5.1.0-01 Agent does not understand serial numbers with less than 4 digits.

So, the recommendation is to use the GUID form of the CMDDEV syntax until HDvM 5.1.0-04, or HDvM 5.5, is in use. Either that, or check the HORCM CONF files after each server reboot.

Step 4 – Restart HDvM

Stop and start the HDvM server. This step may not be required. I did it anyway.

Step 5 – Refresh a subsystem

In limited testing, it does not appear to matter which subsystem you refresh. However, you must refresh at least one subsystem which is contained in the HORCM CONF files. If you do not refresh a subsystem, the changed HORCM CONF files will not be used.

You can stop and start HDvM server as often as you like. You can stop and start the HDvM Agent. Nothing will appear in HDvM until a subsystem is refreshed.

Watching the running processes on the HDvM server, one can see the HDvM Agent “wake up” and do inqraid and other commands using a self created HORCM9xx instance as the last step of the Refresh Subsystem task. Your HORCM instances are not started at this time.

If later you manually edit your HORCM CONF files, you will have to Refresh and LUN SCAN a subsystem again, or the changes will not show up in HDvM.

I recommend that you refresh and LUN SCAN any subsystem which can be affected by the new or changed HORCM CONF files.

Step 6 – View Pair using the new HORCM CONF Files

This is what you will now see if you now do “View Pair”.

HDVMa.png

The Good News

  • You can see pair status for all user defined pairs

The Bad News

  • You will see pairs for all Hosts, irrespective of which Host you are looking at. If you have 1000 pairs, this will take an excessive amount of time to display and the information will be very hard to read.
  • The pair status will not be updated if CCI commands are issued manually. You will have to refresh the Host Agent to see any new status information.

This is what you see for HORCM CONF files which are not managed by HDvM.

HDVMb.png

Step 7 – Modify Pair(s) using the new HORCM CONF Files

This is what you see if you do “Modify Pair”.

HDVMc.png

The Good News

  • You can split (suspend) pairs that are in pair status
  • You can resync pairs that are split
  • You can split or resync one LUN, one group or many LUNs/groups at the same time

The Bad News

  • Split does not use the –rw option for TC pairs. Thus, the S-VOLS are Read Only. This is next to useless. There is no option to split the pair such that the S-VOL is Read/Write. You will have to do that manually using CCI.
  • You cannot create pairs that are in the HORCM CONF file that are not paired yet. If you click Pair Create, you will need to enter all the information again via the GUI and use a different set of HORCM CONF files.
  • If you do create a pair via CCI, you will have to refresh a subsystem again before the pair information shows up correctly in the HDvM “View Pair” display.
  • If you delete a pair, not only will the pair go Simplex, the pair information will be deleted from HDvM and deleted from your HORCM CONF files. So, you had better keep a copy of these files if you need to put a pair back.
  • The first time a “Modify Pair” or “Delete Pair” is done, the HDvM Agent will start both HORCM instances. These instances are left running, even if you stop the Host Agent service.
  • If you try to use CCI to manually modify the pairs, you will get the following errors:

C:\HORCM\ETC>set horcminst=0

C:\HORCM\ETC>pairdisplay -g TC_USP600

pairdisplay: [EX_ATTHOR] Can't attached to HORC manager

Refer to the command log(C:\HORCM\log0\horcc_ml_acer510_log.txt) for details.

C:\HORCM\ETC>horcmstart 0 1

Error No:5

Please terminate a process which opens a file under C:\HORCM\log0\curlog.

So, you have to kill the running instances before you can start HORCM yourself manually. Of course, then you must remember to issue horcmshutdown or the Host Agent will not be able to use these HORCM instances.

Conclusion

It all works, however there are some design flaws in the HDvM implementation of pair management. Hopefully these will be fixed one of these days.

 

  • Was this article helpful?