dsmISI4veeam

Preface

General Storage dsmISI for Veeam enables Veeam users to utilize Dell EMC Isilon storage as repository for Veeam Backup & Replication. In principle, Veeam works with any storage system providing the required capacities and allowing repository servers on Linux or Windows access. Thus Isilon systems with their linear scalability and accessibility via common NAS protocols are ideally suited to pose as Veeam storage. However there are two issues which make dsmISI for Veeam necessary.

First of all, Isilon systems do provide excellent performance overall but are limited to the throughput of a single Isilon node for every stream written or read. This is not an issue if many streams from multiple machines have to be handled. With Veeam however, the number of machines writing and reading data (repository servers) and the number of streams they generate is rather small – typically far fewer than the number of Isilon nodes in a cluster. So reaching the maximum throughputs provided by Isilon storage with Veeam, while theoretically possible, is seldom seen in the real world.

The second and probably more critical issue is the fact that Isilon’s OneFS file system only allows file sizes of less than four terabytes. That is no problem with backup software which allows the user to determine a maximum output file size like Oracle RMAN or IBM Spectrum Protect. However with Veeam, the output file size in a repository is ultimately determined by the amount of data Veeam is writing during a backup. These backups can be much bigger than four terabyte and will fail when written directly to an Isilon.

dsmISI for Veeam has been developed to circumvent these downsides. It stripes Veeam repository data evenly across all nodes in an Isilon cluster and therefore uses all nodes’ throughput simultaneously. That leads to write and read streams which are a lot faster than what a single Isilon node could handle. It also maps a standard Linux file system (XFS) on top of Isilon’s OneFS and, in doing so, allows storage of files larger than four terabytes despite the Isilon’s limitations. While that is great for Veeam, it means also that access to any Veeam repository is only accessible from one repository server at a time and storage once allocated by a repository server isn’t available for usage from other servers accessing the Isilon – even if that space is not in use. It is vital to understand these limitations of dsmISI for Veeam before deploying it.

Prerequisites

dsmISI for Veeam is designed to run on 64bit Linux systems only. Please check the Veeam documentation for which distributions are supported and how to set them up as repository servers. Furthermore, dsmISI for Veeam requires dsmISI Version 2 or later to be installed and configured. Please refer to the dsmISI installation guide for further information.

Only proceed with configuring dsmISI for Veeam once dsmISI has been installed and configured to the point where dsmisi mount works and all nodes attached to your network are visible as NFS mounts on your Linux repository server.

If you need help with installing and configuring the dsmISI software, please consult the documentation dsmISI.

Note

There is no need to specify a ServerName stanza in /etc/dsmisi/dsmisi.conf since dsmISI for Veeam doesn’t use dsmISI’s dynamic load balancing.

It is recommended to use the value 1048576 for NfsRsize and NfsWsize in dsmisi.conf for best performance with Veeam. In addition to the above, make sure the following components are installed:

  • Java Runtime (minimal version 1.8)

  • xfsprogs (version 4 or later) if you plan to use XFS file systems

dsmISI for Veeam itself is distributed either as an rpm or, if licensed for Veeam only, as a generic jar file which can be pushed and executed standalone without prior installation if run in a cluster or swarm configuration. The jar file contains all modules dsmISI for Veeam requires to operate – however the aforementioned prerequisites still apply.

IMPORTANT: Keep in mind that dsmISI for Veeam creates and mounts file systems on top of Isilon NFS mounts. You will therefore either want to disable udisks2 completely or limit it to the areas you absolutely want udisks2 to handle automatic mounting of file systems. Please refer to your Linux distribution’s udisks2 documentation for details. Since automatically mounting file systems which may potentially already be mounted on another system may destroy these file systems, disabling udisks2 permanently is highly recommended.

Installation

All actions around dsmISI for Veeam require root authority on the repository server and all subsequently mentioned commands assume the user issuing them to be logged in as root. If that is impossible in your environment and you can’t su to root, please make sure your user has the required sudoers privileges and precede all commands given in this manual with a sudo directive.

Unpack the install file and run the installer by issuing:

rpm -i dsmisi4v.rpm

or copy the unpacked file named dsmisi4v.jar to your systems /sbin directory by entering:

cp dsmisi4v.jar /sbin

If working with a flat jar file, you may create a wrapper for your convenience which you can place in your path:

cat /usr/sbin/dsmisi4v
#!/bin/bash
args="$@"
java -jar /sbin/dsmisi4v.jar ${args}

Check to see if dsmISI for Veeam works by entering:

dsmisi4v

If you chose not to create a wrapper script, start dsmisi4v by entering:

java -jar /sbin/dsmisi4v.jar

You should see output and usage information similar to the one shown below:

[root@localhost ~]# dsmisi4v
dsmISI for Veeam and IBM Spectrum Protect Plus Version 2.3 Build 92
General Storage Software GmbH - 2021
Usage:
status [{file system name}||{mountpoint}] (show information about a file system (omit for all))
create {isilon name} {new file system name} {image size (GB)} {number of images} (create new container)
format {file system name} (format a newly created container)
extend {file system name}||{mountpoint} {number of images} (extend container by the given number of images)
mount {file system name} {mountpoint} (mount a file system)
umount {file system name}||{mountpoint} (cleanly dismount a file system and all of its components)
init {file system name} (initialize a file system without mounting it)
deinit {file system name} (deinitialize a file system which isn't mounted)

If dsmISI has previously mounted your Isilon clusters properly, you should see all mounted Isilon nodes for all clusters by entering dsmisi4v status. Please check whether the displayed information is correct and the number of nodes show up as expected. Refer to the dsmISI documentation if anything is missing:

[root@localhost ~]# dsmisi4v status
Hostname: .dsmivrepo.
Isilon Name: clustera
Nodes mounted: 3
Isilon Name: clusterb
Nodes mounted: 3

Next, create a directory named dsmisi4v in one of the mount paths for each Isilon you plan to use with dsmISI for Veeam as shown in the example below:

mkdir /veeam/isimount/clustera/0001/dsmisi4v

This directory should only exist once on every Isilon cluster and will be shared by all machines accessing a cluster. That way, every Veeam repository file system can be mounted by every Veeam repository server with dsmISI for Veeam installed and access to the Isilon cluster in question.

If creating the dsmisi4v directory doesn’t work due to permission issues, contact your Isilon administrator to allow access accordingly.

Note

In order to avoid unwanted, simultaneous access to the same repository from multiple servers, dsmISI for Veeam uses a locking mechanism which uses the system name to identify where a mount request is coming from and prohibit mounting from other machines (Hostname: .XXX., where XXX is your hostname as identified by dsmisi4v). Make sure this identifier is unique. Change the repository server’s hostname if you have to. Utilizing more than one repository servers with the same hostname is not supported and can lead to corrupted file systems when accidentally mounting file systems simultaneously on more than one machine. dsmISI for Veeam automatically adds a period (.) to the beginning and end of the hostname. This is for internal purposes and not actually part of your hostname.

Creating a new veeam repository filesystem

Creating a new repository is a two step process. First, the underlying structure has to be prepared. This structure basically consists of a directory with a given, unique name (the one you chose as parameter during the create process – see below) which is created directly underneath the dsmisi4v directory on the Isilon you chose to create the structure on.

In that directory, dsmISI for Veeam creates as many container files in the size you request during the create process. These files are named NAME.imgXXX.dsmi where NAME is the unique name (same as the directory name) and XXX is a zero based sequence number for the container. These files are allocated with the size you request but only actually use the capacity written to them. Therefore ls and du give different values until the entire space in the file system has been used at least once.

The command used to create a structure like that is:

dsmisi4v create [isilonname] [new containername] [size per image in GB (=< 3700)] [# of images (>=3)]

Parameter

Description

isilonname

Name of the Isilon you want to create the structure on. This name isn’t necessarily the Isilon’s hostname but rather the name you have as IsiName in your /etc/dsmisi/dsmisi.conf file. Please note that the name is case sensitive. If in doubt, execute dsmisi4v without parameters. All Isilons are listed with their proper name following a Adding Isilon Cluster stanza.

new containername

Name of the container structure you want to create. Please note that this name must be unique across your dsmISI for Veeam environment and serves as an absolute identifier. You should UNDER NO CIRCUMSTANCES create a container structure called veeamrepo1 on Isilon cluster A and another also called veeamrepo1 on Isilon cluster B.

size per image in GB

Number of gigabytes per file created in this new structure. All files will be created with this size. The number has to be smaller than 4000 in order to comply with Isilon limitations.

# of images

Number of image files created. Multiplied with size per image, this determines how big the new file system can ultimately get. This number has to be bigger than 2 and smaller than 1000.

Note

The unique name of your repository must be at most 12 characters long.

It is recommended to create repositories which, when put together, don’t exceed the usable capacity of the Isilon cluster in question multiplied by about 0.8 in order to leave some free space – even if all file systems are full.

For the purpose of this manual, we’ll create a structure on Isilon clustera called uniqrepo01 with a size of 102 terabytes:

dsmisi4v create clustera uniqrepo01 3500 30
[root@localhost ~]# dsmisi4v create clustera uniqrepo01 3500 30
Creating new container structure.
Creating new file system uniqrepo01 on Isilon clustera
Using path /veeam/isimount/clustera/0001/dsmisi4v/
Creating new container /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01 comprised of 30 images with 3500 GBs each (105000 GB overall capacity)
Successfully created /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01
Creating image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img000.dsmi

Creating image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img029.dsmi
Container uniqrepo01 created on isilon clustera

The process usually takes no more than a couple of seconds and nothing has really been done at this point – except the creation of the file structure as described above.

In order to create a mountable file system in this newly created container, you can format the container with this command:

dsmisi4v format uniqrepo01

Example:

[root@localhost ~]# dsmisi4v format uniqrepo01
Creating new VG uniqrepo01
Mapped 30 images (0 images already mapped).
[ Physical volume "/dev/loop0" successfully created., Volume group "uniqrepo01" successfully created]

[ Physical volume "/dev/loop29" successfully created., Volume group "uniqrepo01" successfully extended]
Creating LV: lvcreate -l 100%FREE -i 30 -I 1024 -n uniqrepo01_lv uniqrepo01
Logical volume "uniqrepo01_lv" created.
mkfs.xfs /dev/uniqrepo01/uniqrepo01_lv -Luniqrepo01 -d su=1024k,sw=8
meta-data=/dev/uniqrepo01/uniqrepo01_lv isize=512 agcount=103, agsize=268435200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=27525089280, imaxpct=1
= sunit=256 swidth=2048 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Finished. Marking FS type
Marked file system as xfs on /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01//dsmisi.fstype

Please note that no additional parameters are required or accepted (which is one of the reasons why it is so important to keep repository names absolutely unique in dsmISI for Veeam).

What format basically does, is to map every container file belonging to the repository uniqrepo01 on a loop device. It does that in a manner which evenly utilizes the individual mount points from individual nodes of the Isilon on which the repository resides. A physical volume is created on each mapped container file and assigned to a new volume group also called uniqrepo1. On that volume group, a single logical volume named uniqrepo1_lv is created an on that, a new XFS file system is created.

Mounting a veeam repository file system

As with any other file system, you’ll need a mount point. In order to keep things simple, it is recommended (though not required) to use the repository name in the mount point as well:

mkdir –p /veeam/uniqrepo01

In order to mount the repository uniqrepo01 to that mount point, issue the command:

dsmisi4v mount uniqrepo01 /veeam/uniqrepo01

Example:

[root@localhost ~]# dsmisi4v mount uniqrepo01 /veeam/uniqrepo01
Processing file system uniqrepo01
File system is not locked. Locking now.
Locked file system uniqrepo01 to ".dsmivrepo.".
Mapping Devices
Image uniqrepo01.img009.dsmi is already mapped to /dev/loop0

Image uniqrepo01.img028.dsmi is already mapped to /dev/loop29
Mapped 0 images (30 images already mapped).
Scanning for PVs
Activating VG
1 logical volume(s) in volume group "uniqrepo01" now active
Mounting file system
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/uniqrepo01-uniqrepo01_lv 103T 36M 103T 1% /veeam/uniqrepo01
Mounting successful.

This will initialize the container uniqrepo01 (map it to devices unless it is already mapped), activate the volume group and finally mount the file system to the mount point provided with the command.

During initialization, dsmISI for Veeam will lock the repository by placing a file named dsmisi.lock in the directory containing the container files on the Isilon. This lock is machine specific and contains the hostname identifier dsmISI for Veeam prints out with the status messages (see above). On every attempt to initialize a container, dsmISI for Veeam checks whether such a file exists and whether it contains the name of the machine dsmISI is running on or that of another machine. In case of another machine, dsmISI for Veeam will not initialize the container and exit with an error message.

This mechanism should prevent accidental mounting of the same file system from more than one host (which would inevitably lead to destruction of that file system).

Note

If mounting a dsmISI for Veeam file system fails with a message indicating that the file system could not be unlocked, check thoroughly whether the file system is already mounted on another machine. If so, umount it from that machine and repeat the attempt. If the file system is definitely not mounted on another machine, delete the dsmisi.lock file from the appropriate container directory on the Isilon and re-try mounting. The error message indicating that the file system couldn’t be unlocked also indicates the machine name of the host which last had the file system successfully initialized and is most likely to be the one on which it is mounted at the time you get the error message when trying to mount. Issues like this should only happen if a repository server with a mounted file system crashed and couldn’t unmount properly. When integrating dsmISI for Veeam into a (any) cluster, make sure you understand dsmISI for Veeam locking and how and when to neutralize it.

Unmounting a veeam repository file system

You could simply run umount /mountpoint to unmount a dsmISI for Veeam file system – but that will leave the entire structure underneath initialized and hence not enable you to mount that file system on another machine. The proper way to unmount is therefore to run:

dsmisi4v umount containername

Note that the mountpoint is not required, however you can use either the mountpoint to which the repository is mounted or the file system name. In our example, both will lead to the same outcome:

dsmisi4v umount uniqrepo01

or:

dsmisi4v umount /veeam/uniqrepo01

Example:

[root@localhost ~]# dsmisi4v umount uniqrepo01
Processing file system uniqrepo01
File system is locked by this system (.dsmivrepo.)
Umounting uniqrepo01 from /veeam/uniqrepo01
Attempt 1 of 12
Returned: []
Unmounting successful. Proceeding to VG cleanup.
.. --- Volume group ---
.. VG Name uniqrepo01
.. System ID
.. Format lvm2
.. Metadata Areas 30
.. Metadata Sequence No 31
.. VG Access read/write
.. VG Status resizable
.. MAX LV 0
.. Cur LV 1
.. Open LV 0
.. Max PV 0
.. Cur PV 30
.. Act PV 30
.. VG Size <102.54 TiB
.. PE Size 4.00 MiB
.. Total PE 26879970
.. Alloc PE / Size 26879970 / <102.54 TiB
.. Free PE / Size 0 / 0
.. VG UUID kDBl0l-E9Bq-3TZu-hnHa-yEk7-5mMl-EUapeP
..
Changing VG Status
... 0 logical volume(s) in volume group "uniqrepo01" now active
.. --- Volume group ---
.. VG Name uniqrepo01
.. System ID
.. Format lvm2
.. Metadata Areas 30
.. Metadata Sequence No 31
.. VG Access read/write
.. VG Status resizable
.. MAX LV 0
.. Cur LV 1
.. Open LV 0
.. Max PV 0
.. Cur PV 30
.. Act PV 30
.. VG Size <102.54 TiB
.. PE Size 4.00 MiB
.. Total PE 26879970
.. Alloc PE / Size 26879970 / <102.54 TiB
.. Free PE / Size 0 / 0
.. VG UUID kDBl0l-E9Bq-3TZu-hnHa-yEk7-5mMl-EUapeP
..
Deactivating devices... Pass 1
Cecking image uniqrepo01.img009.dsmi
Found device /dev/loop0.
[]

[]
Cecking image uniqrepo01.img028.dsmi
Found device /dev/loop29.
[]
Deactivating devices... Pass 2
Cecking image uniqrepo01.img009.dsmi

Cecking image uniqrepo01.img028.dsmi
All devices clear. Clean successful for uniqrepo01. Unlocking file system.
Unlocking successful.

Unmounting the file system itself is the first step dsmisi4v umount undertakes. There is a maximum of 12 attempts with 5 second pauses between. After each attempt, dsmisi4v checks whether the unmount was successful and proceeds with cleaning up the underlying infrastructure if it was.

If a process was still accessing files in the file system, unmounting it will fail. If unmounting interactively, you can stop the process during this minute (12 x 5 seconds) by pressing CTRL-c and end whatever process is still accessing the file system (using something like fuser) before re-trying the operation. This should not be necessary when all Veeam processes have ended.

When integrating dsmISI for Veeam into a cluster or automating operations in general, it is important to understand that merely unmounting a file system from its mount point using the operating system’s umount is typically not enough and devices have to be unmapped and volume groups deactivated before the system can be shut down cleanly or storage resources can be taken over by other machines.

Initializing and de-initializing dsmISI for veeam filesystems

Under certain circumstances, it is helpful to initialize a file system to the point where it could be mounted – but not actually mount it. For example, it may be necessary to run a file system check for which the file system has to be unmounted.

If it is still possible to mount the file system, you could do so using the dsmisi4v mount command (see above) and then unmount it using not the dsmisi4v umount repositoryname but the Linux umount mountpoint command. However often it is both simpler and faster to use:

dsmisi4v init containername

In our example, the command would be:

dsmisi4v init uniqrepo01

That initializes the repository but doesn’t actually mount it. Once initialization has finished, you can check onto which devices your container files have been mapped by the initialization process by issuing dsmisi4v status. De-initializing a dsmISI for Veeam file system is accomplished by issuing:

dsmisi4v deinit containername

…so in our example, you would run:

dsmisi4v deinit uniqrepo01

Which is more or less the same as unmounting it using dsmisi4v umount but is meant to work even if the file system in question hasn’t been mounted by merely initialized.

Extending dsmISI for veeam filesystems

If a file system has to be made bigger and the required space is available on the Isilon it resides on, you can use:

dsmisi4v extend containername number_of_additional_images

It is recommended to extend a file system by a number of images resembling a multiple of the number of Isilon nodes in a cluster in order to maintain a balanced performance. So if your Isilon has 3 nodes, you should extend by either 3 or 6 or 9 etc. images.

In this example, we extend uniqrepo01 by 3 images:

[root@localhost ~]# dsmisi4v extend uniqrepo01 3
Extending uniqrepo01 by 3 images
Image size will be derived from image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img009.dsmi (3758096384000)
/veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img030.dsmi
Creating new image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img030.dsmi referencing image
...
[ Physical volume "/dev/loop32" successfully created., Volume group "uniqrepo01" successfully extended]
Volume group uniqrepo01 has been extended.

Proceed by extending the LV accordingly (lvextend –resizefs -l+100%FREE –stripes 3 uniqrepo01/uniqrepo01_lv) if you want to resize the existing LV. Depending on your infrastructure, you may want to change the striping layout of additional images to whatever suits you. However in most cases it is recommended to use the command dsmISI for Veeam suggest at the very end of its output when using dsmisi4v extend. Simply copy it from the last line of the output (see immediately above) and paste it into the command line in order to resize the file system using the entire additional capacity you just created using dsmisi4v extend:

[root@localhost ~]# lvextend --resizefs -l+100%FREE --stripes 3 uniqrepo01/uniqrepo01_lv
Using stripesize of last segment 1.00 MiB
Size of logical volume uniqrepo01/uniqrepo01_lv changed from <102.54 TiB (26879970 extents) to 112.79 TiB (29567967 extents).
Logical volume uniqrepo01/uniqrepo01_lv successfully resized.
meta-data=/dev/mapper/uniqrepo01-uniqrepo01_lv isize=512 agcount=103, agsize=268435200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=27525089280, imaxpct=1
= sunit=256 swidth=2048 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 27525089280 to 30277598208

You can check the file system’s properties by running dsmisi4v status:

[root@localhost ~]# dsmisi4v status
Hostname: .dsmivrepo.
Isilon Name: clustera
Nodes mounted: 3
Isilon Name: clusterb
Nodes mounted: 3
File System Name: uniqrepo01
Isilon Name: clustera
File System Path: /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/
Mounted: /veeam/uniqrepo01
Locked by: .dsmivrepo.
Number of Images: 33
Highest image index: 32
Smallest image: 3758096384000 (3500 GB)
Largest image: 3758096384000 (3500 GB)
Images mapped: 33
Type of File System: xfs
VG Status: read/write

Note

For dsmisi4v extend to work, the file system has to be mounted on the system on which you run the command. The additional capacity is available immediately, however balancing it across Isilon nodes requires you to dsmisi umount the file system at a convenient point in time and dsmisi mount it again afterwards. You should do that as soon as possible after extending in order to avoid performance bottlenecks.

Using the system daemon to mount automatically when booting

If you don’t control mounting and unmounting of file systems through a cluster or job scheduler, you should mount dsmISI for Veeam file systems during startup via the Linux System Daemon. A simple example for a script may look like this:

cat /etc/systemd/system/dsmisi4v_start.service
[Unit]
Description=Startup dsmISI for Veeam
After=network-online.target
[Service]
Type=oneshot
ExecStop=/bin/true
ExecStart=/bin/bash /usr/local/bin/dsmisi4v_start
[Install]
WantedBy=multi-user.target

Remember to define the unit as oneshot and assign a dummy stop executable. Since we’re relying on the Isilon to be reachable, we should only let systemd start our service once network initialization has begun. While that typically takes no more than a second, we’ll still introduce a short sleep in our script for good measure. Adjust and append additional mount commands at the end of a script like this:

cat /usr/local/bin/dsmisi4v_start
#!/bin/bash
echo "$(date) - Starting up..." >> /etc/dsmisi/dsmisi4v.log
echo "Currently mounted: $(df)" >> /etc/dsmisi/dsmisi4v.log
echo "Hostname: ${HOSTNAME}" >> /etc/dsmisi/dsmisi4v.log
/opt/generalstorage/dsmisi/bin/dsmisi mount >> /etc/dsmisi/dsmisi4v.log
sleep 20
export HOSTNAME=${HOSTNAME}
/usr/sbin/dsmisi4v mount uniqrepo1 /veeam/uniqrepo1 >> /etc/dsmisi/dsmisi4v.log

Once scripting is in place, enable the service by issuing systemctl enable dsmisi4v_start.service. You should consider creating a similar service for unmounting your file systems when the system is rebooted, shutdown or halted:

cat /etc/systemd/system/dsmisi4v_stop.service
[Unit]
Description=Shutdown dsmISI for Veeam
Conflicts=shutdown.target reboot.target halt.target poweroff.target
After=network.target nfs-client.target local-fs.target remote-fs.target
[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/bash /usr/local/bin/dsmisi4v_stop
RemainAfterExit=true
KillMode=none
SendSIGKILL=no
TimeoutStopSec=300
[Install]
WantedBy=default.target

The script itself would look like this:

cat /usr/local/bin/dsmisi4v_stop
#!/bin/bash
echo "$(date) - Stopping..." >> /etc/dsmisi/dsmisi4v.log
echo "Currently mounted: $(df)" >> /etc/dsmisi/dsmisi4v.log
echo "Hostname: ${HOSTNAME}" >> /etc/dsmisi/dsmisi4v.log
export HOSTNAME=${HOSTNAME}
/usr/sbin/dsmisi4v umount uniqrepo1 >> /etc/dsmisi/dsmisi4v.log

Enable the service by issuing systemctl enable dsmisi4v_stop.service.

Further preparation for veeam repository services

Once dsmISI and dsmISI for Veeam are installed and configured, you should be able to write to and read from your Isilon cluster(s) at the maximum speed your hardware allows and you can begin using the repositories you created. For that, Veeam software as such is not installed on your repository servers.

All communication between repository servers and proxy servers is done via ssh and initiated by the Veeam proxy server.

In busy environments with lots of simultaneous backup sessions, you may have to adjust the number of sessions allowed via ssh. To do so, edit the file /etc/ssh/sshd_conf and add or change the following settings and restart sshd or reboot:

MaxSessions 200
MaxStartups 100:30:200

Samples

Sample dsmisi.conf:

#
# General Storage dsmISI
# dsmisi.conf sample file
#
FileLogLevel Debug
SysLogLevel Warning
#SysLogLevel Debug
#ConnectTimeout 5
#ConnectTimeout 10
IsilonUser dsmisi
#ClaimWeight 5
#ClaimWeight 185
#Linux
MountArgs rw,hard,proto=tcp,timeo=600,retrans=2,intr,actimeo=5,vers=3
#MountArgs rw,sync,hard,proto=tcp,timeo=900,retrans=2,intr,actimeo=0
#AIX
#MountArgs rw,vers=3,hard,proto=tcp,timeo=600,retrans=2,intr,actimeo=1
#MountArgs rw,vers=3,hard,proto=tcp,timeo=600,retrans=2,intr,dio,noac
#NfsRsize 524288
#NfsWsize 524288
NfsRsize 1048576
NfsWsize 1048576
IdleTime 20
IsiName clustera
IsiMgmtIp 192.168.20.100
IsiIpPool subnet0:pool0
IsiConnectionTimeout 60
IsiUser dsmisi
IsiExport /ifs/dsmisi
IsiMountRootDir /veeam/isimount
IsiName clusterb
IsiMgmtIp 192.168.20.200
IsiIpPool subnet0:pool0
IsiConnectionTimeout 60
IsiUser dsmisi
IsiExport /ifs/dsmisi
IsiMountRootDir /veeam/isimount

Sample dsmISI User Configuration on Isilon:

isi auth users create --name=dsmisi --password=8AqD9vsDRvqCC --zone=system --password-expires=no
isi auth roles create --name=dsmisi
isi auth roles modify --role=dsmisi --add-priv=ISI_PRIV_LOGIN_PAPI,ISI_PRIV_LOGIN_SSH,ISI_PRIV_STATISTICS,ISI_PRIV_NETWORK --add-priv-ro=ISI_PRIV_SMB --add-user=dsmisi

Sample dsmISI visudo on Isilon OneFS 8:

DSMISI ALL=(ALL) NOPASSWD: ISI_PRIV_NETWORK, ISI_PRIV_STATISTICS

Command Reference

The following section contains information about the commands usable by dsmisi4v

status

Show information about filesystems.

Syntax:

dsmisi4v status [{file system name}||{mountpoint}]

Parameters:

{file system name}||{mountpoint} (Optional) - Specifies, which file system or mount point should be shown. If none, all configured filesystems will be shown.

Examples:

[root@localhost ~]# dsmisi4v status
Hostname: .dsmivrepo.
Isilon Name: clustera
Nodes mounted: 3
Isilon Name: clusterb
Nodes mounted: 3
File System Name: uniqrepo01
Isilon Name: clustera
File System Path: /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/
Mounted: /veeam/uniqrepo01
Locked by: .dsmivrepo.
Number of Images: 33
Highest image index: 32
Smallest image: 3758096384000 (3500 GB)
Largest image: 3758096384000 (3500 GB)
Images mapped: 33
Type of File System: xfs
VG Status: read/write

format

Format a newly created container.

Syntax:

dsmisi4v format {file system name}

Parameters:

{file system name} (Required) - Specifies, which file system should be formatted.

Examples:

[root@localhost ~]# dsmisi4v format uniqrepo01
Creating new VG uniqrepo01
Mapped 30 images (0 images already mapped).
[ Physical volume "/dev/loop0" successfully created., Volume group "uniqrepo01" successfully created]

[ Physical volume "/dev/loop29" successfully created., Volume group "uniqrepo01" successfully extended]
Creating LV: lvcreate -l 100%FREE -i 30 -I 1024 -n uniqrepo01_lv uniqrepo01
Logical volume "uniqrepo01_lv" created.
mkfs.xfs /dev/uniqrepo01/uniqrepo01_lv -Luniqrepo01 -d su=1024k,sw=8
meta-data=/dev/uniqrepo01/uniqrepo01_lv isize=512 agcount=103, agsize=268435200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=27525089280, imaxpct=1
= sunit=256 swidth=2048 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Finished. Marking FS type
Marked file system as xfs on /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01//dsmisi.fstype

init

Initialize a file system without mounting it.

Syntax:

dsmisi4v init {file system name}

Parameters:

{file system name} (Required) - Specifies, which file system should be initialized.

deinit

Deinitialize a file system which isn’t mounted.

Syntax:

dsmisi4v deinit {file system name}

Parameters:

{file system name} (Required) - Specifies, which file system should be deinitialized.

mount

Mounts a file system

Syntax:

dsmisi4v mount  {file system name} {mountpoint}

Parameters:

{file system name} (Required) - Specifies, which file system should be mounted.
{mountpoint}  (Required) - Specifies, to which mount point the file system should be mounted.

Examples:

[root@localhost ~]# dsmisi4v mount uniqrepo01 /veeam/uniqrepo01
Processing file system uniqrepo01
File system is not locked. Locking now.
Locked file system uniqrepo01 to ".dsmivrepo.".
Mapping Devices
Image uniqrepo01.img009.dsmi is already mapped to /dev/loop0

Image uniqrepo01.img028.dsmi is already mapped to /dev/loop29
Mapped 0 images (30 images already mapped).
Scanning for PVs
Activating VG
1 logical volume(s) in volume group "uniqrepo01" now active
Mounting file system
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/uniqrepo01-uniqrepo01_lv 103T 36M 103T 1% /veeam/uniqrepo01
Mounting successful.

umount

Cleanly dismount a file system and all of its components

Syntax:

dsmisi4v umount {file system name}||{mountpoint}

Parameters:

{file system name}||{mountpoint} (Required) - Specifies, which file system or mount point should be unmounted.

Examples:

[root@localhost ~]# dsmisi4v umount uniqrepo01
Processing file system uniqrepo01
File system is locked by this system (.dsmivrepo.)
Umounting uniqrepo01 from /veeam/uniqrepo01
Attempt 1 of 12
Returned: []
Unmounting successful. Proceeding to VG cleanup.
.. --- Volume group ---
.. VG Name uniqrepo01
.. System ID
.. Format lvm2
.. Metadata Areas 30
.. Metadata Sequence No 31
.. VG Access read/write
.. VG Status resizable
.. MAX LV 0
.. Cur LV 1
.. Open LV 0
.. Max PV 0
.. Cur PV 30
.. Act PV 30
.. VG Size <102.54 TiB
.. PE Size 4.00 MiB
.. Total PE 26879970
.. Alloc PE / Size 26879970 / <102.54 TiB
.. Free PE / Size 0 / 0
.. VG UUID kDBl0l-E9Bq-3TZu-hnHa-yEk7-5mMl-EUapeP
..
Changing VG Status
... 0 logical volume(s) in volume group "uniqrepo01" now active
.. --- Volume group ---
.. VG Name uniqrepo01
.. System ID
.. Format lvm2
.. Metadata Areas 30
.. Metadata Sequence No 31
.. VG Access read/write
.. VG Status resizable
.. MAX LV 0
.. Cur LV 1
.. Open LV 0
.. Max PV 0
.. Cur PV 30
.. Act PV 30
.. VG Size <102.54 TiB
.. PE Size 4.00 MiB
.. Total PE 26879970
.. Alloc PE / Size 26879970 / <102.54 TiB
.. Free PE / Size 0 / 0
.. VG UUID kDBl0l-E9Bq-3TZu-hnHa-yEk7-5mMl-EUapeP
..
Deactivating devices... Pass 1
Cecking image uniqrepo01.img009.dsmi
Found device /dev/loop0.
[]

[]
Cecking image uniqrepo01.img028.dsmi
Found device /dev/loop29.
[]
Deactivating devices... Pass 2
Cecking image uniqrepo01.img009.dsmi

Cecking image uniqrepo01.img028.dsmi
All devices clear. Clean successful for uniqrepo01. Unlocking file system.
Unlocking successful.

create

Create new containers for use with dsmisi4v.

Syntax:

dsmisi4v create {isilon name} {new file system name} {image size (GB)} {number of images}

Parameters:

{isilon name} - Name of the Isilon you want to create the structure on. This name isn’t necessarily the Isilon’s hostname but rather the name you have as IsiName in your /etc/dsmisi/dsmisi.conf file. Please note that the name is case sensitive. If in doubt, execute dsmisi4v without parameters. All Isilons are listed with their proper name following a Adding Isilon Cluster stanza.
{new file system name} - Name of the container structure you want to create. Please note that this name must be unique across your dsmISI for Veeam environment and serves as an absolute identifier. You should UNDER NO CIRCUMSTANCES create a container structure called veeamrepo1 on Isilon cluster A and another also called veeamrepo1 on Isilon cluster B.
{image size (GB)} - Number of gigabytes per file created in this new structure. All files will be created with this size. The number has to be smaller than 4000 in order to comply with Isilon limitations.
{number of images} - Number of image files created. Multiplied with size per image, this determines how big the new file system can ultimately get. This number has to be bigger than 2 and smaller than 1000.

Examples:

[root@localhost ~]# dsmisi4v create clustera uniqrepo01 3500 30
Creating new container structure.
Creating new file system uniqrepo01 on Isilon clustera
Using path /veeam/isimount/clustera/0001/dsmisi4v/
Creating new container /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01 comprised of 30 images with 3500 GBs each (105000 GB overall capacity)
Successfully created /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01
Creating image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img000.dsmi
...
Creating image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img029.dsmi
Container uniqrepo01 created on isilon clustera

extend

Extend container by the given number of images.

Syntax:

dsmisi4v extend {file system name}||{mountpoint} {number of images}

Parameters:

{file system name}||{mountpoint} (Required) - Specifies, which file system or mount point should be extended.
{number of images} (Required) - How many image files should be added to the existing container.

Examples:

[root@localhost ~]# dsmisi4v extend uniqrepo01 3
Extending uniqrepo01 by 3 images
Image size will be derived from image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img009.dsmi (3758096384000)
/veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img030.dsmi
Creating new image /veeam/isimount/clustera/0001/dsmisi4v/uniqrepo01/uniqrepo01.img030.dsmi referencing image
...
[ Physical volume "/dev/loop32" successfully created., Volume group "uniqrepo01" successfully extended]
Volume group uniqrepo01 has been extended.