Hitachi block storage driver

Hitachi block storage driver provides Fibre Channel and iSCSI support for Hitachi VSP storages.

System requirements

Supported storages:

Storage model

Firmware version

VSP E990,

93-01-01 or later

VSP F350, F370, F700, F900

VSP G350, G370, G700, G900

88-01-04 or later

VSP F400, F600, F800

VSP G200, G400, G600, G800

83-04-43 or later

VSP N400, N600, N800

83-06-01 or later

VSP 5100, 5500, 5100H, 5500H

90-01-41 or later

VSP F1500

VSP G1000, VSP G1500

80-05-43 or later

Required storage licenses:

  • Hitachi Storage Virtualization Operating System (SVOS)

    • Hitachi LUN Manager

    • Hitachi Dynamic Provisioning

  • Hitachi Local Replication (Hitachi Thin Image)

Supported operations

  • Create, delete, attach, and detach volumes.

  • Create, list, and delete volume snapshots.

  • Create a volume from a snapshot.

  • Create, list, update, and delete consistency groups.

  • Create, list, and delete consistency group snapshots.

  • Copy a volume to an image.

  • Copy an image to a volume.

  • Clone a volume.

  • Extend a volume.

  • Migrate a volume.

  • Get volume statistics.

  • Efficient non-disruptive volume backup.

  • Manage and unmanage a volume.

  • Attach a volume to multiple instances at once (multi-attach).

  • Revert a volume to a snapshot.

Note

The volume having snapshots cannot be extended in this driver.

Configuration

Set up Hitachi storage

You need to specify settings as described below for storage systems. For details about each setting, see the user’s guide of the storage systems.

Common resources:

  • All resources

    The name of any storage resource, such as a DP pool or a host group, cannot contain any whitespace characters or else it will be unusable by the driver.

  • User accounts

    Create a storage device account belonging to the Administrator User Group.

  • DP Pool

    Create a DP pool that is used by the driver.

  • Resource group

    If using a new resource group for exclusive use by an OpenStack system, create a new resource group, and assign the necessary resources, such as LDEVs, port, and host group (iSCSI target) to the created resource.

  • Ports

    Enable Port Security for the ports used by the driver.

If you use iSCSI:

  • Ports

    Assign an IP address and a TCP port number to the port.

Set up Hitachi storage volume driver

Set the volume driver to Hitachi block storage driver by setting the volume_driver option in the cinder.conf file as follows:

If you use Fibre Channel:

[hitachi_vsp]
volume_driver = cinder.volume.drivers.hitachi.hbsd_fc.HBSDFCDriver
volume_backend_name = hitachi_vsp
san_ip = 1.2.3.4
san_login = hitachiuser
san_password = password
hitachi_storage_id = 123456789012
hitachi_pool = pool0

If you use iSCSI:

[hitachi_vsp]
volume_driver = cinder.volume.drivers.hitachi.hbsd_iscsi.HBSDISCSIDriver
volume_backend_name = hitachi_vsp
san_ip = 1.2.3.4
san_login = hitachiuser
san_password = password
hitachi_storage_id = 123456789012
hitachi_pool = pool0

This table shows configuration options for Hitachi block storage driver.

Description of Hitachi block storage driver configuration options

Configuration option = Default value

Description

hitachi_async_copy_check_interval = 10

(Integer(min=1, max=600)) Interval in seconds to check asynchronous copying status during a copy pair deletion or data restoration.

hitachi_compute_target_ports = []

(List of String) IDs of the storage ports used to attach volumes to compute nodes. To specify multiple ports, connect them by commas (e.g. CL1-A,CL2-A).

hitachi_copy_check_interval = 3

(Integer(min=1, max=600)) Interval in seconds to check copying status during a volume copy.

hitachi_copy_speed = 3

(Integer(min=1, max=15)) Copy speed of storage system. 1 or 2 indicates low speed, 3 indicates middle speed, and a value between 4 and 15 indicates high speed.

hitachi_discard_zero_page = True

(Boolean) Enable or disable zero page reclamation in a DP-VOL.

hitachi_exec_retry_interval = 5

(Integer) Retry interval in seconds for REST API execution.

hitachi_extend_timeout = 600

(Integer) Maximum wait time in seconds for a volume extention to complete.

hitachi_group_create = False

(Boolean) If True, the driver will create host groups or iSCSI targets on storage ports as needed.

hitachi_group_delete = False

(Boolean) If True, the driver will delete host groups or iSCSI targets on storage ports as needed.

hitachi_host_mode_options = []

(List of Integer) Host mode option for host group or iSCSI target.

hitachi_ldev_range = None

(String) Range of the LDEV numbers in the format of ‘xxxx-yyyy’ that can be used by the driver. Values can be in decimal format (e.g. 1000) or in colon-separated hexadecimal format (e.g. 00:03:E8).

hitachi_lock_timeout = 7200

(Integer) Maximum wait time in seconds for storage to be logined or unlocked.

hitachi_lun_retry_interval = 1

(Integer) Retry interval in seconds for REST API adding a LUN mapping to the server.

hitachi_lun_timeout = 50

(Integer) Maximum wait time in seconds for adding a LUN mapping to the server.

hitachi_pool = None

(String) Pool number or pool name of the DP pool.

hitachi_port_scheduler = False

(Boolean) Enable port scheduling of WWNs to the configured ports so that WWNs are registered to ports in a round-robin fashion.

hitachi_rest_another_ldev_mapped_retry_timeout = 600

(Integer) Retry time in seconds when new LUN allocation request fails.

hitachi_rest_connect_timeout = 30

(Integer) Maximum wait time in seconds for connecting to REST API session.

hitachi_rest_disable_io_wait = True

(Boolean) This option will allow detaching volume immediately. If set False, storage may take few minutes to detach volume after I/O.

hitachi_rest_get_api_response_timeout = 1800

(Integer) Maximum wait time in seconds for a response against sync methods, for example GET

hitachi_rest_job_api_response_timeout = 1800

(Integer) Maximum wait time in seconds for a response against async methods from REST API, for example PUT and DELETE.

hitachi_rest_keep_session_loop_interval = 180

(Integer) Loop interval in seconds for keeping REST API session.

hitachi_rest_server_busy_timeout = 7200

(Integer) Maximum wait time in seconds when REST API returns busy.

hitachi_rest_tcp_keepalive = True

(Boolean) Enables or disables use of REST API tcp keepalive

hitachi_rest_tcp_keepcnt = 4

(Integer) Maximum number of transmissions for TCP keepalive packet.

hitachi_rest_tcp_keepidle = 60

(Integer) Wait time in seconds for sending a first TCP keepalive packet.

hitachi_rest_tcp_keepintvl = 15

(Integer) Interval of transmissions in seconds for TCP keepalive packet.

hitachi_rest_timeout = 30

(Integer) Maximum wait time in seconds for each REST API request.

hitachi_restore_timeout = 86400

(Integer) Maximum wait time in seconds for the restore operation to complete.

hitachi_snap_pool = None

(String) Pool number or pool name of the snapshot pool.

hitachi_state_transition_timeout = 900

(Integer) Maximum wait time in seconds for a volume transition to complete.

hitachi_storage_id = None

(String) Product number of the storage system.

hitachi_target_ports = []

(List of String) IDs of the storage ports used to attach volumes to the controller node. To specify multiple ports, connect them by commas (e.g. CL1-A,CL2-A).

hitachi_zoning_request = False

(Boolean) If True, the driver will configure FC zoning between the server and the storage system provided that FC zoning manager is enabled.

Required options

  • san_ip

    IP address of SAN controller

  • san_login

    Username for SAN controller

  • san_password

    Password for SAN controller

  • hitachi_storage_id

    Product number of the storage system.

  • hitachi_pool

    Pool number or pool name of the DP pool.