Provisioning SAP HANA VDBs: an overview
This topic describes the basic concepts involved with provisioning of VDBs in HANA.
Provisioning of a VDB results in creation of a new tenant database in the specified HANA target environment, with storage for the new tenant backed by Delphix storage. The data inside the tenant reflects the same data in that exists in the dSource snapshot from which the VDB is being provisioned. During the provision process, Delphix will create a filesystem in Delphix specifically for the new VDB, populate the filesystem with the appropriate data files and datafile contents, then share and mount that filesystem onto the specified HANA target host. The new HANA tenant will have its storage paths re-configured to use a single subdirectory specific to the tenant, then traverse an NFS mount which points to the filesystem on Delphix for that tenant. The VDB provision operation is very fast because Delphix does not move nor copy data to create and populate the VDB filesystem.
During the VDB creation, the location of the basepath_datavolumes and basepath_logvolumes will be changed to use the storage inside the Delphix Engine. This will mean that any new services (even if a user creates a service post VDB creation by the plugin) which will now be created for the virtualized tenant will also be created on the tenant-specific filesystem on the Delphix Engine.
Setting log mode overwrite
As a part of the VDB creation process, if the correct tenant username and password are provided, then the log mode for the virtualized tenant will be set to 'overwrite'. It means that "No log backups" are created. When savepoints are written, log segments are immediately freed to be overwritten by new log entries.
HANA port control
Starting Delphix Engine 6.0.10.0 and HANA vSDK plugin, Delphix introduces a solution that keeps the port numbers consistent throughout the VDB life cycle so that the connections made to the VDBs are not disrupted during their life cycle.
Need for user specified ports?
Until now, Delphix HANA was dependent on the HANA-provided ports for any VDB. Every VDB has its own ports and connections for internal and external communication. When operations such as rewind, refresh, or enable are performed on VDBs, this can cause port instability or inconsistency problems because the port numbers could change even when the VDB name remains the same. The below points further elaborates on this limitation.
The plugin uses HANA-provided port numbers which are selected from the available pool of port numbers in the bottom-up approach that means an idle port number at the bottom will be picked first for use.
The plugin does not have any mechanism to remember these port numbers and use them from the pool at the time of creating any tenant database again at the time of enabling, refresh, or rewind.
So if we had a tenant TEST having a service indexserver at 30043 port number, then after the refresh, rewind or enable, there will be a chance that
The same port number(30043) is not available
Any port number lesser than the one being used earlier(30043) is now available.
So, there are chances that the tenant TEST is provided with another port number for the same service by HANA and if there was any connection made to the tenant TEST at 30043 will now be disrupted. Hence there is a need for a solution that allows the database to keep the port number consistent throughout the VDB life cycle.
How does the HANA port allocation works?
The port control feature now provides an option to specify port numbers at the time of VDB creation. This can be done in the following two ways.
User-specified HANA ports
See the procedure for Provisioning HANA VDBs where the user can specify the HANA service and port number at the time of VDB creation.
By Plugin itself
If the service and port numbers are not provided by the user on the Plugin user interface, then the plugin itself will decide the port number and will keep the ports consistent throughout the life of a VDB.
This is how the plugin chooses the ports:
It is based on the value of the
reserved_instance_number
parameter in theglobal.ini
file. This file is located at/hana/shared/{DATABASE_SID}/global/hdb/custom/config.
If this parameter is not defined in global.ini, then the value of the instance number will be used.Ports will be decided by the HANA plugin in a top-down manner which means that the topmost port which is free will be used first and so on.