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 |
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 |
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 |
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.