Infinibox User Documentation
Infinibox User Documentation
10
USER DOCUMENTATION
Last updated: 06/12/2018
InfiniBox 4.0.10 User Documentation
Table of Contents
1 Introduction ..................................................................................................................3
2 Getting started ............................................................................................................15
3 Compression ...............................................................................................................45
4 Authentication and security .......................................................................................54
5 iSCSI connectivity .......................................................................................................76
6 Hosts and clusters.......................................................................................................83
7 Network connectivity and configuration.................................................................101
8 Hardware monitoring ...............................................................................................136
9 Pools ..........................................................................................................................148
10 Provisioning volumes ...............................................................................................160
11 Provisioning filesystems ...........................................................................................184
12 Consistency groups...................................................................................................228
13 Link ............................................................................................................................260
14 Replication ................................................................................................................268
15 Encryption at-rest .....................................................................................................306
16 InfiniSpares ...............................................................................................................308
17 Event notification......................................................................................................312
18 GUI and InfiniShell software upgrade......................................................................321
19 Metadata ...................................................................................................................323
20 Performance monitoring ..........................................................................................324
21 Quality of service.......................................................................................................362
– 2
InfiniBox 4.0.10 User Documentation
1 Introduction
INFINIDAT features high-end, hyper-scale storage with highly-dense capacity, high performance, and
infinite use cases. INFINIDAT offers you an environment-friendly system with low power consumption,
low CapEx & OpEx and unmatched TCO.
With more than 90 patent applications (many of which are approved), INFINIDAT is a global leader in the
areas of data protection, performance, automation, energy savings, ease of management, and scaling.
Along with the capital cost of usable capacity, the operational costs increase. Power consumption, floor
space and human capital are all part of the costs of owning and managing a storage system.
Costs are also measured by putting a price tag on how lengthy is the task of provisioning capacity or
creating snapshots; how many storage administrators are needed; what percentage of the
administration tasks can be automated; what is the cost of human mistake; are we safe from downtime;
and so on.
INFINIDAT offers a new paradigm in the storage – a paradigm that breaks the traditional connection
between storage capacity and the cost associated with it.
Backup - Local backup copies allow for recovering from data loss and logical data corruption
while remote backup copies are used for disaster recovery, audit and regulatory compliance.
Provisioning - Most organizations provision capacity in thick format. That is, the storage space is
purchased and allocated prior to the actual use. Organizations that have already moved to thin
provisioning (assessing the actual storage needs prior to purchasing it) find themselves in an
increasing risk of downtime, resulting from a lack of tools for capacity planning.
Data copies - Full copies of the production data consume lots of expensive storage capacity, as
well as computational resources that are required for moving them around.
The fast data growth caused by virtualization, increased use of BI and other data-intensive applications
has turned storage into the biggest IT spending (around 25% according to studies).
• RAID - Most companies use RAID-1 or 5 for protecting their production data from a single failure
for their critical data. And RAID-6 for large drives to provide protection against most dual failures
but avoid using it for critical, due to its performance penalty.
Introduction – 3
InfiniBox 4.0.10 User Documentation
• SAS drives - High-performance drives are expensive, and provide smaller capacities. A
combination of SATA drives and flash-based SSD drives is both inexpensive and high in
performance. However, this combination's efficiency depends on the chosen RAID layout and
their ability to manage which data needs to be in which storage tier (pre-fetching).
• Data center - The bigger the data center, the bigger the power and cooling costs, as well as the
cost of floor space. The latter costs have skyrocketed in recent years.
This document explains INFINIDAT’s unique approach to solving all these challenges in a single, robust
storage architecture.
1.2.1 Capacity
Term Meaning
System physical capacity The total physical capacity that can be allocated
within a single system.
System virtual capacity The maximum system capacity that can be defined
by pools. This capacity can be larger than the system
physical capacity.
System free virtual capacity The system virtual capacity minus the sum of the
pools virtual capacity.
Introduction – 4
InfiniBox 4.0.10 User Documentation
1.2.2 Pools
Term Meaning
Pool physical capacity The maximum usable net capacity that can be
allocated to the pool entities.
Pool virtual capacity The limit on the size of all volumes (thin and thick
provisioned), excluding snapshots.
Pool allocated virtual space The sum of all volumes (thick and thin, excluding thin
snapshots). The allocated space cannot exceed the
pool virtual capacity.
Pool allocated physical space The sum of all thick volumes, plus the physical space
consumed by all the thin volumes and
snapshots. The used space cannot exceed the pool
physical capacity.
Pool free physical space The defined pool physical capacity minus the
allocated physical space.
Pool free virtual space The defined pool virtual capacity minus the allocated
virtual space.
Introduction – 5
InfiniBox 4.0.10 User Documentation
1.2.3 Volumes
Term Meaning
1.2.4 Filesystems
Term Meaning
Term Meaning
Introduction – 6
InfiniBox 4.0.10 User Documentation
Term Meaning
Term Meaning
Introduction – 7
InfiniBox 4.0.10 User Documentation
Term Meaning
1.2.7 Replication
Source A volume on the source system that is replicated (or planned to be replicated).
dataset
Target A volume on the target system that is the destination of the replicated data. A target volume
dataset that is part of a replica cannot accept host writes.
Replica An entity that matches a pair of source and target volumes and other settings essential for the
replication.
Local The InfiniBox system through which the user manages the replica.
Both local and remote system may contain source and target datasets.
Sync job The process of creating a snapshot of the source and delivering it to the target.
Introduction – 8
InfiniBox 4.0.10 User Documentation
INFINIDAT Storage System has been designed in order to meet the following goals:
• Cost - The cost of usable capacity, power consumption, cooling, floor space, human capital are all
part of the costs of owning and managing a storage system. Length and complexity of the task of
provisioning capacity or creating snapshots, cost of storage administrators, cost of manual labor
that could be automated, cost of human error
• Reliability - Multiple data protection layers
• Performance - Balance is loaded across all hardware components to achieve optimal utilization
• Redundancy - 3 Nodes in Active-Active-Active configuration, each Node has constant access to all
of the drives
• Availability -
• No single point of failure
• Protection against double disk failure
• Fast rebuild in case of drive failure
1.3.1 InfiniRAID
As part of the process of destaging data from system cache to disk drives, every 64KB of data has an
added 4KB for metadata that is written in a RAID6-like or Dual Parity data protection scheme. Full
stripes of 1088KB (using 68KB stripe members) are spread across all the 480 disks within the system,
creating hundreds of thousands of independent RAID-Groups; and which provide key architectural
benefits for both performance and support for fast recovery from single or double disk failures.
If a drive fails, InfiniRAID immediately rebuilds the data into the spare capacity in the system, carefully
distributing the data across all the remaining disks, relieving the administrator from the need to
physically replace the disk for the process to complete.
Resuming protection after a disk failure is achieved so quickly as the failed disk was a member of 1000's
of independent RAID-groups, each spread over different disks. This means that all the disks participate
in the recovery process, minimizing the impact on each disk
Introduction – 9
InfiniBox 4.0.10 User Documentation
INFINIDAT Host PowerToolsTM for VMware is an application that provides the VMware
administrator with provisioning capabilities by assisting and easing the process of volumes backup and
recovery.
1.3.3 Multi-Protocol
In an effort to reduce the storage sprawl, InfiniBox was designed to support multiple protocols in a
single system. The internal data structures allowing InfiniBox to scale to petabytes were designed to
allow storing both SAN volumes, NAS filesystems and object storage (RESTful API). As additional
protocols are added to InfiniBox stack, the focus on keeping the feature-set identical across all
protocols is maintained. This allows customers to choose the right protocol for their need without
compromising on functionality.
Introduction – 10
InfiniBox 4.0.10 User Documentation
InfiniBox features off-the-shelf hardware components, allowing for a quick adoption of newer, faster
hardware components.
Common components
Each InfiniBox layout contains an array of 3 storage controllers (nodes), 3 BBUs and a service drawer.
The storage controllers are connected to each other via an InfiniBand network. Each storage controller
is equipped with RAM, Flash Cache and internal disk drives in various configurations.
Capacity
The InfiniBox layouts are equipped with 1,2,4 or 8 drive enclosures, each contains 60 disk drives. The
available sizes are 3,4,6 or 8 TB. InfiniBox offers a variety of capacity options, starting with a single
enclosure of 60 disk drives at the disk size of 3 TB, all the way up to 8 enclosures of 60 disk drives each,
at the disk size of 8 TB.
Rack layout
The following image displays the various InfiniBox rack layouts.
Introduction – 11
InfiniBox 4.0.10 User Documentation
PDU to ATS
The PDUs feed the ATSs in either of the following configurations:
ATS to BBU
Each of the ATS feeds each of the BBUs (a single ATS feeds a single BBU).
• ATS - 3
• BBU - 3
• Connectivity - An ATS per BBU
PDU to Enclosure(s)
Each enclosure is fed from 2 different PDUs.
BBU to Nodes
Each BBU feeds two Nodes. Each of the nodes is fed by 2 BBUs. Thus, in case of a single BBU failure, all
3 nodes remain acitve:
Introduction – 12
InfiniBox 4.0.10 User Documentation
• Ultra-dense 4U
• 60 NL-SAS HDDs, hot-pluggable
• 2 x hot-pluggable, redundant IO controllers equipped with redundant 6Gbps, 2.0 SAS
connections
• 2 x hot-pluggable, redundant power and cooling modules
• Two independent AC power inlets
BBUs
Support the Nodes during power loss, allowing enough time for the notes to gracefully shutdown
• Provide power loss enough time for the Nodes to shut down gracefully in an event where the two
power sources are lost
• When power returns, the system is powered on automatically
Drive visibility
Each node has direct access to all drives.
• 8 FC ports
• 4 Ethernet ports (copper or optics)
• 1 management port for the InfiniBox Management Suit
• Port 15 for connecting to the Remote Support appliance
Introduction – 13
InfiniBox 4.0.10 User Documentation
• ATS
• Support Appliance (on a fit-PC)
• Internal system Ethernet switch
Introduction – 14
InfiniBox 4.0.10 User Documentation
2 Getting started
Dashboard view
In the image below, the GUI is opened on the Dashboard view. The Dashboard displays metrics on:
Other views
Read on all other GUI view in the following help pages:
2.2.2 Steps
1. Select InfiniShell from the menu at the top right of the screen.
The InfiniShell console opens, displaying the command prompt:
admin@localhost>
Upon setting the InfiniBox to allow access via HTTPS only, all access requests are redirected to SSL. The
setting takes place during runtime and is persistent across reboot and hot upgrade.
Type
pool.create
The string auto completes to
All of the parameters that the command pool.create accepts.
• Mandatory parameters are not bracketed.
• Optional parameters are bracketed.
name physical_capacity [virtual_capacity] [ssd_cache] [auto_extend]
Type
pool.query
The string auto completes to
[name] [unit] [--detailed] [--columns] [--sort] [--format]
Names of sortable columns: e.g, size: sort by ascending order, -size: sort by descending order.
name, serial, size, wp, mapped, ssd_cache, created_at, updated_at, -name, -serial, -size, -wp,
-mapped, -ssd_cache, -created_at or -updated_at (multiple values, separated by commas)
-created_at -name -size -updated_at created_at name size updated_at
-mapped -serial -ssd_cache -wp mapped serial ssd_cache wp
Another example:
pool.query --sort=size
NAME STATE PHYSICAL TOTAL PHYSICAL ALLOCATED VIRTUAL TOTAL VIRTUAL ALLOCATED AUTO EXTEND
pool1 NORMAL 7.00 TB 0 7.00 TB 0 UNLIMITED
pool2 NORMAL 6.00 TB 0 6.00 TB 0 UNLIMITED
pool3 NORMAL 5.00 TB 0 5.00 TB 0 UNLIMITED
{
"command": "pool.query --format=json",
"result": [
{
"allocated_physical_space": "0",
"allocated_virtual_space": "10.78 TB",
"max_extend": "DISABLED",
"name": "pool_acc3d07cb0b011e48cda00505699a571",
"physical_capacity": "10.99 TB",
"state": "NORMAL",
"virtual_capacity": "10.99 TB"
}
]
}
pool.delete name=pool1
Deleting pool 'pool1' might prevent the pool's administrator from creating new volumes.
Are you sure? [y/n]
If the warning message is disapproved, the command is aborted and the pool is not deleted:
2.4.8
GUI shortcuts
Press on a question mark (?) anywhere on the GUI to get a list of GUI shortcuts.
For example, deleting a link that has replica definitions that are using it, results with the following
message:
• On – this argument gets a name of a command and returns the command syntax.
• Search – this argument gets any string of characters and returns a list of commands where it is
part of the command name or syntax.
• help - The output of this command is a list of all of the InfiniShell command categories.
• help on= and TAB - The output of this command is a list of all of the categories and commands
for which help can run with the on argument. See the next example.
• help on=user - The output of this command lists categories and commands that have user in
their name.
• help search=role - Returns a list of categories and commands where role is part of either the
category, command name, or parameter.
• <command_name>? - Use this form similarly to help on=<command_name>. For
example: user.create?
InfiniBox offers an extensive management suite for controlling the way your data is managed. The
InfiniBox Management Console is a web application that can be accessed from any browser.
• InfiniShell
• InfiniBox GUI
• RESTful API
2.7.1 InfiniShell
The InfiniBox CLI comes with a rich, context-aware auto-complete, and with a simple and easy to use
command structure that only takes administrators a few minutes to learn. With commands structured
the same way across the board, and simple use of wildcards to apply the same commands to multiple
objects, administrators love using InfiniShell to accelerate and simplify their work.
• drive.query
• enclosure.query
• node.drive.query
• node.query
Available states:
config.ethernet.interface.query
config.ethernet.port.query
config.fc.port.query
config.fc.switch.query
link.query
• UP - the link is up, supported by the entire cluster and can support a service
• DOWN - the link is down and cannot support a service
replica.query
2.8.5 pool.query
• Normal - the pool is created with this state and remains in this state as long as it does not use
the emergency buffer.
• Limited - the pool enters a Limited state when it consumes its emergency buffer. The pool
returns to a Normal state if data is removed from it, or if its capacity is extended.
• Locked - the pool enters a Locked state if its emergency buffer is fully consumed. The pool
returns to a Normal state if its capacity is extended, or data is removed from it.
For example:
vol.query
• vol.query --grep=replica
• vol.query --inverted-grep=replica
vol.query --sort=used
vol.query --sort=-used
vol.query --sort=name
vol.query unit=
B, G, GB, GiB, T, TB, TiB or block
B G GB GiB T TB TiB block
vol.query --columns=name,used,pool
NAME USED POOL
aixio001_1 0 aix
aixio001_2 0 aix
aixio001_3 0 aix
aixio001_4 0 aix
aixio001_5 0 aix
aixio003_boot_1 0 aix
aixio003_boot_2 0 aix
aixio003_boot_3 0 aix
aixio003_boot_4 0 aix
aixio004-01 222.00 GB aix
aixio004-02 444.00 GB aix
aixio004-03 665.99 GB aix
(For tabular format, run the query without the format option.)
CSV format
vol.query --format=csv
NAME,THIN,SIZE,USED,ALLOCATED,TREE ALLOCATED,POOL,WP,MAPPED
JSON format
"result": [
"mapped": "no",
"name": "vol_fea63de9-6a2f-4f9d-8fa2-62aa34e6d855_replica",
"pool": "replica_from_ibox3008",
"thin": "yes",
"tree_allocated": "0",
"write_protected": "no"
Name vol_fea63de9-6a2f-4f9d-8fa2-62aa34e6d855_replica
Serial 742b0f000000bbb0000000000000414
Thin yes
Size 1.00 GB
Used 1.00 GB
Allocated 1.00 GB
Tree Allocated 0
Pool replica_from_ibox3008
Write Protected no
Mapped no
Replication Role -
• %logstart file=log.txt
Logger activated
You may provide values to the parameters (none of them is mandatory).
• The file parameter saves the log to a file with the specified name and sets the mode to
append.
• The mode parameter determines the way the log is saved into a file.
• Append mode keeps logging to an existing log file.
• Override mode overrides an existing log file.
• The output parameter logs the output of each entered command.
• The timestamp parameter adds a time stamp to each of the logged commands.
• %logstate - Display the command logger state. This command displays the state of the logging
(either on or off).
• %logstop - Stop the command logger. This command stops logging.
• %raw - Toggle raw API output. Enables displaying the JSON query of the commands output.
• %user - Displays the name of the active user.
• %version - Displays the InfiniShell version.
InfiniBox provides a thoroughly documented set of RESTful APIs. The documentation is available both
on the management console and here, on this help article.
http://<your_system>/apidoc/
• Downloading InfiniSDK
• InfiniSDK documentation
InfiniBox provides an SDK, which is a comprehensive library for use with Python. InfiniSDK greatly
simplifies the creation of customized scripts. The compatibility with RESTful allows for using the API
with any language or application that supports the appropriate HTTP commands. However, we do
recommend that the SDK is used, as this will be updated as new features that are added to the product.
• GitHub
• PyPI
infinishell --help
2.13.3 Usage
2.13.4 Options
Please note that defaults may be overridden in the configuration file: "/home/<user>/.infinidat/
infinishell/infinishellrc". Also, some environment variables are available for your convenience. To
list them, use the --list environment option.
Examples
• Parameters - None
• Example - infinishell -v
• Output - Infinidat LTD. Command Line Utility v2.0.0.26
• Option - -c
• Example - infinishell -c "vol.delete name=v1" box-avi --user=admin --password=123456
• Output - Volume "v1" deleted
• Options
• -f - specify the file name
• -k - do not exit the script file upon a failed execution of a command
• -y - approve all dangerous operations
• Example - infinishell -f shell-script box-avi --user=admin --password=123456 -y
• Output (some columns were removed)
• Parameters
• system
• user
• password
• Example - infinishell box-avi --user=admin --password=******
• Output
infinishell --write-default-config
Path on Windows OS
%PROFILE%\.infinidat\infinishell\infinishellrc
{
"api_max_page_size": 1000,
"internal_log_backup_count": 10,
"color": "auto",
"keep_going": false,
"api_port": 80,
"enable_fs_commands": false,
"api_warnings": false,
"api_ssl": true,
"default_address": null,
"username": "admin",
"api_request_timeout_seconds": 30,
"api_default_page_size": 50,
"history_file": null,
"plugins_dir": null,
"csv_output": false,
"api_default_search_page_size": 200,
"password": "38a7d20a8700614715deoJNra5ud4a87ffb6354aaad4b9f8",
"internal_log_max_size_mb": 20,
"json_output": false,
"internal_log_file": null,
"quiet": false,
"paging": true,
"history": true,
"api_ssl_verify_certificate": false,
"log_file": null,
"auto_confirm_prompts": false,
"api_ssl_port": 443
}
Password obfuscation
When changing the password, the password is visible on the screen. However, upon the next look into
the configuration file, the password is no longer visible, as it is obfuscated.
$ nano ~/.infinidat/infinishell/infinishellrc
...
• To make the password into obfuscated, launch InfiniShell, so configuration file will be updated
with the encrypted password.
• There is no to start a shell session against any system
Approving the message of the day in order to proceed to the login screen
1. When navigating to the InfiniBox GUI screen, the message of the day is displayed.
3 Compression
When to compress
Storage arrays may compress the incoming data either before or after the write operation is
acknowledged to the host. When the data is compressed before the acknowledgement, the storage
array benefits from low cache usage, in the expense of the following:
• Performance – Compressing the data takes time, which means the host experiences higher
latency, which reduces its ability to take advantage of the storage array performance capabilities
• Increased cost of cache hits - data that was just written usually has a good chance of being read
in the short time after it was written (and often read several times). This yields the much desired
low-latency cache hit. However, if the data is compressed, it has to be decompressed anew for
each cache hit. The repeatedly decompression results in high that may undo the performance
gains that could have resulted from the low-latency cache hits.
To avoid these two considerable issues InfiniBox leverages a very large write cache that allows for
compressing data only during its destage to disk.
As a result, InfiniBox not only reduces the latency of writes, but in many cases avoids compression
altogether, further avoiding undesireable performance impact.
Compression – 45
InfiniBox 4.0.10 User Documentation
Compression Methods
Compression used to be a CPU-intensive task, but improvements in CPU architecture and compression
algorithms have reduced the CPU cycles required to compress data.
InfiniBox uses LZ4, the most common algorithm to compress data. However the system was designed
to allow adding more compression types later, as more efficient compression algorithms become
available, or new CPU capabilities further reduce the CPU overhead of existing compression algorithms.
Simply put, compression algorithms try to find strings of data that repeat as many times as possible
within the data and replace them with shorter strings, all the while keeping a dictionary of these
replacements.
During the decompression, each string that appears in the dictionary is replaced with the original
(longer) string, thus the original data is restored.
The more frequent the data string, the more effective the compression. When comparing the
compression of a string of 1 million identical characters to 1000 strings of 1000 identical characters
each, we find that contemporary algorithms keep one dictionary in the first case, compared to 1000
dictionaries in the later case. An improved compression algorithm may have to compare longer strings
of characters, possibly increasing the compression ratio in the expense of a performance impact. In
addition, the compression algorithms are susceptible to reach a plateu in their ability to improve both
performance and compression ratio.
As InfiniBox compresses 64KB of data at a time (compared to the commonly used 4KB-8KB) it reaches a
higher compression ratio at a lower performance impact for the same source data.
3.1.2 Terminology
Compressing data creates a need to show the capacity savings created by compression and zero
reclaim. InfiniBox 3.0 features a new capacity counter to volumes, filesystems and pools called "Data
reduction".
Data reduction is displayed as a ratio between the capacity that would have been consumed by the
entity, and the capacity that is actually consumed (including both capacity associated with the entity
itself and its snapshots).
Compression – 46
InfiniBox 4.0.10 User Documentation
• Thin entities: All data written is compressed, savings from data reduction remains available in
the pool's physical capacity
• Thick entities: Data is written comressed, but the savings remains allocated to the entity (can't
be reused.) Only data in the entity's snapshots (which are thin) remains in the pool's physical
capacity.
In the following example, "vol1", a 1TB thin volume is mapped to a host. The host writes 800GB of data
(assumed to be 2:1 compressible), and fills 100 of the remaining 200GB with zeros:
Result:
• Zeros are automatically reclaimed, so the 100GB of zeros does not consume space.
• The 800GB is compressed by a ratio of 2:1.
• The 1TB was reduced to 400GB on disk out of the 900GB the user wrote, yielding a 2.25:1 data
reduction ratio
• Leave the freed capacity in the pool, allowing any of the pool admins to use it
Compression – 47
InfiniBox 4.0.10 User Documentation
• Reduce the pool size, allowing the storage admin to reuse that capacity elsewhere.
Reduction ratio
Data reduction ratios vary, depending on the dataset.
For example, virtual machines and databases tend to include many zeros, increasing the data
reduction, while data encrypted before writing it to the storage does not compress well.
Existing entities in the pool (Created before 3.0) can be manually set to compress new data.
When a new pool is created it inherits its compression behavior from a system default for compression
(set to "on", can be overridden).
Writes:
Any write to the storage is first accepted in memory to guarantee minimal latency, and only
compressed as data is destaged from RAM to persistent media.
Since many writes get overwritten while in the cache, this InfiniBox avoids a lot of unnecessary
compression.
Once the data is destaged, data is compressed in sections (sets of consecutive 64KB) increments,
creating a large enough dataset to achieve effective compression, but still keeping each sections
separated. This allows the system to retrieve any section without having to retrieve the entire
stripe.
Reads:
All reads from RAM and SSD don't require decompression as data is not compressed while in
cache. This maintains low latency.
Data retrieved from disk will require decompression when its loaded into the cache.
Compression – 48
InfiniBox 4.0.10 User Documentation
• Use-cases
• Introducing compression to an existing InfiniBox system
• Writing into a dataset
• Taking two snapshots
• Overwriting the dataset with 256KB
• Deleting a snapshot
• Unmapping blocks from the volume
• How much capacity is allocated to the dataset (in dark blue, on the image below)
• How much capacity is allocated to the dataset descendants (in light blue, on the image below)
• How much capacity is saved, due to the compression (in grey, on the image below)
• How much free capacity is there (the sum of the grey and white lines, on the image below)
3.2.2 Use-cases
Compression – 49
InfiniBox 4.0.10 User Documentation
Deleting a snapshot
• Used capacity (allocated by the user) - 256KB
• Allocated - 128KB
• Tree allocated - 64
• The capacity is moved to the other snapshot
• Saved capacity - 192 + 128 = 320KB
Compression – 50
InfiniBox 4.0.10 User Documentation
• The system wrote the maximum amount of compressed data it can (for data that is highly
compressible).
Compression – 51
InfiniBox 4.0.10 User Documentation
This limit is not a hard number but rather calculated based on the memory consumed by the
metadata. We estimate average compression up to 1:3 will not consume all the memory.
• A specific volume / filesystem reached the ceiling compression ratio. Compression on that entity
will stop to allow other entities to keep compressing more data.
• Compression is ineffective (for example - data was encrypted by the host and doesn't compress) -
the system avoids compression (reduces CPU load)
3.4.2 Instructions
The compression settings toggle is available on the following screens:
• Creating a pool
• Creating a volume
• Creating a filesystem
Compression – 52
InfiniBox 4.0.10 User Documentation
• Note that a thick filesystem starts with 1:1 ratio even if compression is on.
Compression – 53
InfiniBox 4.0.10 User Documentation
InfiniBox supports multiple types of user repositories which can be used for user authentication and
access rights resolution. InfiniBox supports using multiple user repositories concurrently with the ability
to define the credentials resolution across the repositories.
• Local users - User repository defined and managed within the InfiniBox system itself
• Active Directory (AD) - Microsoft Active Directory of a specific domain (representing multiple AD
servers)
• OpenLDAP - Open LDAP repository stored on an OpenLDAP server
Limits
• Max number of local users in the system: 50
• Max number of external user repositories: 10
• Max number of servers within an OpenLDAP repository: 3
Read-only
A read-only user can query for information only. The query permissions are sufficient for carrying out
monitoring tasks, viewing the system health, events, capacity utilization, etc. The read-only user cannot,
however, make any changes to the system.
Admin
The admin (system administrator) has permission for all InfiniBox software functionality, including
network administration, provisioning pools and entities, and creating other users. For creating other
users, see below.
Pool admin
The pool admin has admin rights for a specific pool (or multiple pools). Within this pool (or pools), the
pool admin can provision datasets, map them to hosts and take snapshots, but cannot create new
pools or change the definitions of existing pools.
The pool admin has read-only permissions outside its pool (or pools).
Technician
The technician is a role that is typically assigned to INFINIDAT technicians that take care of InfiniBox
hardware on the customer premise.
The technician role has permissions that are identical to the read-only user, with additional access to
FRU API, CLI and GUI commands.
The status of the InfiniBox system physical components is visible to all user roles (admin, pool admin,
read-only). However, only the technician has access to commands that are required for hardware
maintenance (for example, the deactivation of a faulty drive and the activation of the new drive that
replaces the faulty drive).
Pool administration
Exporting a filesystem
Provisioning a replica
Network management
Hardware operations
User management
Local users
InfiniBox provides you with a set of out-of-the-box local users. On top of these out-of-the-box users, you
can define more local users. All of the local users have to have one of the available user roles.
• Maximum of 65 Latin characters, numbers, spaces, and the following symbols: "^&'@()[]$=!-#{}%.
+~_" (excluding quotation marks).
• AD Domain name
• Repository Name
• Bind username and password
• Whether to use LDAPS
• Users (optional) - in order to limit InfiniBox access only to some of the repository users, specify
these users according to these attributes:
• User Class, Username Attribute, Users Base DN
• Groups (optional) - in order to limit InfiniBox access only to some of the repository user groups,
specify these users according to these attributes:
• Group Class, Group Name Attribute, memberof Attribute, Group Base DN
InfiniBox dynamically discovers all AD domain controllers by issuing a DNS query to the provided AD
domain, InfiniBox will then try to use the fastest responding domain controller for its AD queries.
• Repository Name
• OpenLDAP Server(s) ip/hostname
• Use SSL - select whether to use LDAPS
• Port
• Bind username and password
• Users (optional) - in order to limit InfiniBox access only to some of the repository users, specify
these users according to these attributes:
• User Class, Username Attribute, Users Base DN
• Groups (optional) - in order to limit InfiniBox access only to some of the repository user groups,
specify these users according to these attributes:
• Group Class, Group Name Attribute, memberof Attribute, Group Base DN
For resiliency, it is highly recommended to define multiple OpenLDAP servers managing the same user
repository, so that in case of a unavaliability of one of the OpenLDAP servers, InfiniBox can
transparently failover to use others.
4.1.4 Authentication methods
InfiniBox authenticates local users by comparing the username and password that the user provides
during the login to InfiniBox to the credentials that are stored on the InfiniBox.
An LDAP / Active Directory user does not authenticate directly to InfiniBox. The user authenticates to
LDAP / Active Directory, and the LDAP / Active Directory is defined as an InfiniBox user group. User
management is done in the user repository.
1. InfiniBox checks whether the username belongs to a local user. If it is, InfiniBox checks whether
the password matches and the login succeeds
2. If the username does not belong to a local user, InfiniBox looks for it in the AD and LDAP that are
configured to work with InfiniBox.
a. If the username belongs to any of the AD or LDAP and belongs to a user group that is
allowed to log into InfiniBox, the login succeeds.
b. The username is assigned with a user role that is determined by the user group that the
repository is mapped to.
c. In case that the username sppears in more than one repository, the username is resolved
according to the repository that ranks first in the order of resolution list. The order of
resolution is configurable.
3. The login fails in the following cases:
a. The username does not belong to any local user, nor any AD or LDAP
b. The username belongs to an AD or LDAP that a configured to work with InfiniBox, but is
not a member of a group that is allowed to work with InfiniBox
c. The usename is listed as a local user, or belongs to the right group, but the provided
password is incorrect
All of the commands are available both from the InfiniShell and the GUI.
A detailed explanation of the InfiniShell commands, along with their parameters, and syntax example, is
available on the InfiniShell Command Reference (here).
Creating an admin
user.create name=pool-01 [email protected] role=PoolAdmin password=123456
The output is:
Creating a PoolAdmin
user.create name=pool-02 [email protected] role=PoolAdmin
You are asked to provide a password for the user. The password you enter is not displayed on
screen.
List existing local users along with their roles and the pools they have access to.
and TAB.
A list of available pool IDs is dispalyed on screen. Add the pools one-by-one:
Following the confirmation message, the pool association with the pool admin is visible
via user.query.
• user.remove_pool - Revoke pool provisioning privileges from a pool administrator.
login
Use this command in order to switch the user with which you log into the InfiniBox.
For example, following the user.create command, you can test the access rights of the new user. From
the InfiniShell, log into InfiniBox as follows:
pool-01-admin@localhost>
quit, exit
Use these commands to close the InfiniShell session.
user.group.create
• Example:
• INFINIDAT
• Technician
2. Check a user and select Disable user from the actions menu.
• Via infinishell:
• config.system.set_session_timeout
• session_id
• username
• password
• creation time
• last request time
• Group assignment
• Account removal
• Idle session timeout - sets the session to expire in case of user inactivity
• The user's credentials are kept for the timeout period. Within this period, when opening
the GUI in the browser, there is no need to type the user and password.
• By default, the session terminates after 1 hour of inactivity
• Active session timeout - sets the session to disconnect the user
• By default, the session expires after 24 hours
3. Click Update.
Using InfiniShell
config.system.query
"2880"
API endpoint
PUT api/rest/config/mgmt/mgmt.session_expiry
Returned code
{
"metadata": {
"ready": true
},
"result": 2880,
"error": null
}
"60"
API endpoint
PUT api/rest/config/mgmt/mgmt.session_idle_timeout
Returned code
{
"metadata": {
"ready": true
},
"result": 120,
"error": null
}
API endpoint
GET api/rest/config/mgmt/mgmt.session_expiry
Returned code
Required JSON data
None
API endpoint
GET api/rest/config/mgmt/mgmt.session_idle_timeout
Returned code
4.6.2 Instructions
1. On the InfiniBox GUI, go to Settings, click the LDAP tab and click the Define button.
2. Set the following attributes:
a. Name - LDAP connection name as it will be displayed on the InfiniBox GUI. This name does
not have to be the actual LDAP server name.
b. Domain name - the name of the LDAP server or a domain of LDAP server
c. Use SSL - select whether to use LDAPS
d. Port
e. Bind username
f. Bind password
3. (Optional) Click the Action button to change the preconfigured schema
4. Click Define Server
The server is defined.
4.7.3 Workaround
To work around this issue, change the value of Group Name Attribute to cn and retry the user group
creation.
Through CLI:
5 iSCSI connectivity
Discovery
Before the host can open a connection to a storage array, it needs to first "learn" about the storage.
There are 2 methods of discovery:
• Static discovery - the user manually provides one of the target hostname / IP addresses. The host
will then connect to this IP to query the storage for its details (more below)
• Dynamic discovery - the host receives a hostname / IP address for an iSNS server which acts as a
mediator: The iSNS receives the configuration from the storage periodically, and provides it to the
host whenever the asked.
Dynamic discovery allows the host to discover multiple storage arrays at once, as well as receive
updates on new storage array as they are added to the environment.
Regardless of the discovery method, the host will get a lot of information about the target, such as the
list of IP addresses it can use for accessing the data and the preferred IO sizes andthe authentication
requirements. In addition, the host is required to authenticate and provide digests (checksums) for the
data.
Note that a complete manual configuration is also supported, but is not a common practice.
At this stage the host treats all iSCSI connections as it would Fibre Channel paths. The host starts
sending SCSI commands over these paths, and gets the list of LUNs available to the initiator(s). Further,
the host sends query commands on each path to get the details of each LUN. These details will be used
by the multipath driver to identify the group of devices as multiple paths to the same device.
Term Description
Session A connection between the iSCSI intiator and an iSCSI target (IP address)
Multiple sessions An iSCSI host connects to all the target IPs in the Network space using a separate
session per IP (see What is a network space).
Term Description
Digest Additional CRC added to the iSCSI message in order to guarantee it arrived without
corruption.
There are separate digests for the header and data payload.
ErrrorRecoveryLev Defines how the Initiator and target recover from errors.
el (ERL)
InfiniBox supports ERL0
1. installing an iSCSI initiator on the host (this can be a software initiator that comes with the OS or
an iSCSI HBA)
2. Discovering one of the iSCSI storage targets (IP addresses).
This is an automated process where the host collects information from the storage. After the
host gets all the information, it closes the discovery session.
3. Connecting to all target IP addresses (a.k.a. full feature phase)
The host opens multiple TCP connections to the iSCSI targets, commonly each of these
connections has a separate session, and each session is treated as a path to the storage.
At the end of this process, the connectivity between the host and storage may look like this:
Once the host completes the connection it can scan for SCSI devices and discover the LUNs it has
access to.
• iSNS serves as a directory where all iSCSI targets are registered and the clients can discover their
IP addresses in a single query.
• Once the host discovers the target, it follows a similar path to connect to the iSCSI target as
explained above.
This is a fast way to migrate between the 2 protocols, by allowing the same host to first connect using
another protocol and only then removing the paths of the old protocol.
A separate, Single-port LACP is created on top of the physical network. In the following illustration, 2
switches are connected to InfiniBox. The infiniBox ports of each of the nodes serve either an FC switch
or an iSCSI switch.
• InfiniBox 4.0 Best Practices Guide for Setting Up Services.pdf (the link takes you to the Support
site article where the PDF is available)
The instructions that were provided for previous releases are obsolete.
5.3.1 Limits
• Maximum supported host ports (iQNs): 2000
5.3.2 Limitations
• Authentication - only CHAP and Mutual CHAP are supported
• IP addresses - only IPv4 is supported
• IPSEC is not supported
• MCS (Multiple Connections per Session) - is not supported
• NetWork Space exclusivity - iSCSI requires a separate Network Space
• Creating a cluster
6.2.2 Prerequisites
• Ports (iSCSI or FC, as needed)
6.3.3 Prerequisites
• Host
• Initiators - look for available ports: Querying for mappings and for unmapped initiators
The reason we start assigning LUNs to a cluster starting with 11 is to avoid collision with LUNs mapped
to individual hosts within the cluster. As long as no more than 10 volumes are mapped to a host
individually, there is no collision between volumes mapped individually and volumes mapped to the
cluster. In the rare case that a host has more than 10 volumes mapped only to it, and it also belongs to
a cluster, the LUN number assignment has to be set manually.
The InfiniBox management GUI and CLI support setting the LUN number manually (in addition to the
default behavior that is explained above) by the user when mapping a volume to host or cluster.
6.4.2 Prerequisites
• A volume
• A host
6.4.4 Instructions
• From infinishell:
• vol.map_query
• host.query
• cluster.query
• map.query
• From the GUI:
• View the volume, host, or cluster screens and look at the Mapping column
6.5.2 Prerequisites
• A volume mapped to a host or a cluster
6.5.4 Instructions
iii. Click Unmap
d. For cluster
i. Click a cluster
ii. Select a volume from the Mapped Volume tab
6.6.3 Prerequisites
• iSCSI host
i. Set pairs of user and secret for the target and the initiator
5. Click Modify.
The host security properties are set.
6.7.2 Prerequisites
• A host
6.8 Clusters
• Deleting a cluster
• Description - Delete a cluster
• Command - cluster.delete name=cluster1
• Querying for clusters
• Description - List existing clusters with their member hosts. This command displays the
number of hosts and LUNs for each cluster, along with the cluster creation date and the
last time it was modified.
• Example - cluster.query
• Mapping a dataset to a cluster
• Description - Map a volume, or a snapshot, to a cluster
• Command - cluster.map
• Querying for cluster mappings
• Description - list existing cluster mappings
• Command - cluster.map_query
• Removing a host from a cluster
• Description - remove a host from a cluster
• Command - cluster.remove_host
• Renaming a cluster
• Example - cluster.rename name=cluster1 new_name=cluster2
• Unmapping a host
• Description - Unmap a dataset from the cluster
• Example - cluster.unmap name=cluster1 vol=vol1
6.10.2 Prerequisites
• FC ports (see here: Querying for FC ports)
• cluster.create
6.11.2 Prerequisites
• Cluster - see: Creating a cluster
• Host - see: Creating a host
b. Click Add.
The host is added to the cluster.
• cluster.add_host
2. Select a Host.
3. Click the Ports tab.
Click the port to see further details:
b. A degraded host looks like this:
c. A disconnected host looks like this:
• host.port_query
This task overcomes the limit of 32 hosts for a single cluster by mapping more than a single cluster to
the same volume.
3. On the same screen, click the volume and select Modify Mapping from the action menu.
4. On the Mapping screen that opens, click the action menu and check Enable Multiple Hosts
Selection. As a result, the other clusters are available on the screen.
vol.map_query vol=vol1
NAME MAPPING TYPE MAPPED TO LUN ID
vol1 CLUSTER cluster1 11
vol1 CLUSTER cluster2 12
Setup
The ethernet network is set up by INFINIDAT.
Ports
• Replication
• In: 80, 443
• Out: 8067
• Management: 80, 443
• NAS
• Portmapper:
• TCP/111
• UDP/111
• Mount:
• TCP/20048
• UDP/20048
• NFS:
• TCP/2049
• iSCSI
• iSCSI: 3260
• ISNS: 3205
Chart
Network One or more Ethernet Ports that are grouped together for the purpose of redundancy
Interface and/or performance using LACP.
Ethernet
Interface Partial A failure of 1 or more Ethernet Ports which are part of an Ethernet
failure modes failure Interface where at least one port remains available.
IP address A group of floating IP addresses that will offer the service (Each IP offers 1 service). It’s
recommended that each Network Space will have 6 IP Addresses to ensure even
workload distribution.
Network A set of definitions for a network address space, annotated using CIDR. Example:
10.0.0.0/24
192.9.200.11 10.0.0.22
192.9.200.12 10.0.0.23
192.9.200.13 10.0.0.24
192.9.200.14 10.0.0.25
192.9.200.15 10.0.0.26
Click Create.
The interface is created and is visible on the screen.
4. Repeat these steps to create more interfaces.
The commands are displayed in length, including examples on the InfiniShell Reference Guide.
7.5.2 Prerequisites
• A network interface
1. Select a network interface and click Enable Interface on the Actions menu.
The interface is now enabled.
• GUI Instructions
• InfiniShell instructions
7.6.2 Prerequisites
• A network interface
Storage administrators configure their storage system to integrate with network hardware (switches,
routers) and with network services (e.g. NFS and Replication). In order to simplify management and
provisioning processes, InfiniBox Network Spaces was created. It is a logical construct that groups the
required networking resources and the configuration required to create a Service, for example,
Replication.
• Instructions
• Related tasks
• Network Space - the definition of a specific data service (NAS / replication / iSCSI) within one
specific subnet.
• Creating a link
• Creating a replication
• Deploying a service (for example: NAS)
For multi-InfiniBox services (Replication), repeat this task for each InfiniBox.
7.10.2 Prerequisites
• Ports:
• Data
• 1 or more ports per node (preferably of the same configuration across all nodes)
• IP addresses
• iSCSI - 6
• NAS - 6
• Asynchronous replication - 4
• Synchronous replication - 7
• Firewall port: 8067 (for asynchronous replication only)
• Management (required only for Replication network space)
• 1 Management port
• 1 IP address
• Firewall ports: 80, 443
• Network interface
7.10.4 Instructions
1. Click Create on the Network Space pane. The Create Network Space screen opens.
2. The wizard is comprised on two panes: Ethernet Interfaces and IP Configuration.
Fill in the Network Name and select a Service.
5. Click Finish. The Network Space is created and is visible on the screen.
• Interface - One or more Ethernet Ports that are grouped together for the purpose of
redundancy and/or performance using LACP.
• Network Space - A set of definitions for a network address space, annotated using CIDR.
• Creating a link
• Creating a replication
For multi-InfiniBox services (Replication), repeat this task for each InfiniBox.
7.11.2 Prerequisites
• Management
• 1 Management port
• 1 IP address
• Firewall ports: 80, 443
• Data
• 3 to 6 (3 * 1 to 2) ports
• 3 to 6 IP addresses
• Firewall port: 8067
system.
7.11.4 Instructions
1. Click Create on the Network Space pane. The Create Network Space screen opens.
2. The wizard is comprised on two panes, Ethernet Interfaces and IP Configuration.
Fill in the Network Name and select a Service.
4. Type the IP addresses of the network, netmask, default gateway, management and data.
Type Enter or click Add for each management and data IP address.
7.12.2 Prerequisites
This task assumes that the following entity is already defined:
• Network space
• config.net_space.ip.create
3. Insert an IP address and click Create.
The IP address is added to the network space.
7.13.2 Prerequisites
This task assumes that the following entity is already defined:
• Network space
• config.net_space.rename
• config.net_space.set_default_gateway
• config.net_space.set_interfaces
• config.net_space.set_network
• config.net_space.set_rate_limit
• config.net_space.set_service
2. Modify any of the network space attributes and click Modify.
7.14.2 Prerequisites
This task assumes that the following entity is already defined:
• Network space
• On the left pane you can see the network space definitions:
• Services
• Interfaces
• Rate limit
• On the right pane you can see the network spaces IP addresses.
The first IP address is for management and all other IP addresses are for data.
• config.net_space.create - This command creates a new network space on one or all of the
system’s nodes
• config.net_space.query - This command lists network spaces
• config.net_space.set_interfaces - This command assigns interfaces to the network space
• config.net_space.delete - This command deletes a network space
• config.net_space.set_service - This command assigns a network space for a service
• config.net_space.rename - This command renames a network space
• config.net_space.ip.query - This command lists the network space IP addresses
• config.net_space.ip.create - This command creates an IP address – or a range of consecutive
IP addresses – for a network space
• config.net_space.ip.delete - This command deletes an IP address from a network space
• config.net_space.ip.enable - This command enables an IP address of a network space
• config.net_space.ip.disable - This command disables an IP address of a network space
The commands are displayed in length, including examples on the InfiniShell Reference Guide.
• GUI instructions
7.16.2 Prerequisites
This task assumes that the following entity is already defined:
• Network space
• config.net_space.delete
7.17.1 Introduction
A VLAN (virtual LAN) is a logical interface that is configured on top of a physical interface, providing an
additional virtual layer, thus allowing to support more services. Services (NAS, iSCSI, replication) can
either use VLANs or other, non-VLAN interfaces. The data they send is VLAN-tagged - or not tagged -
accordingly.
7.17.2 Limits
• Maximum 200 VLANs per node
Since nodes are configured symmetrically, this also means 200 VLANs per system.
7.17.3 Limitations
• VLANs are only supported on LACP interfaces that were created on InfiniBox 3.0
• VLANs are not supported on LACP interfaces that were created on InfiniBox versions prior
to 3.0
• VLANs are not supported on ports.
• To enable VLANs on pre-3.0 interfaces, contact support.
• As VLANs inherit their state from the underlying LACP interface, they cannot be disabled
• The name of the VLANs has to be identical across all nodes.
1. Click Settings from the GUI menu and then click the Network Interfaces tab. Click one of the
Network Interface. The Network Interface screen opens.
2. The Network Interface screen displays the way the Network Interface uses VLANs for the
various InfiniBox services.
• Separate replication traffic from production system A to DR systems B and C, so that each
replication stream will go through a different gateway (spreading the load between them)
• Routing specific IP subnets (E.g. DMZ hosts) through a specific gateway
• Etc.
InfiniBox routes are configured per network space. Since each service requires a network space on each
subnet it is connected to, different subnets can enjoy the flexibility of different routing rules.
However, contradicting rules in different networks are not supported. For example, routing network
space A to destination network X via gateway AX and routing another net space (B) to the same target
network X via gateway BX, is not supported.
7.20.2 Limits
• Maximum of 16 routes per Network Space
• Maximum of 256 routes per service
• Each route needs to be between CIDR 0 and 29 (0.0.0.0 - 255.255.255.248), smaller subnets are
not supported in this version
• Contradicting routing rules are not supported
7.21.2 Prerequisites
This task assumes that the following entity is already defined:
• Network space
• Link
• Replica
• Detach the Network Space from the Replication link. See instructions here: Detaching and
attaching a link.
4. Click the Network Space Actions menu and select Modify Network Space from the menu.
The Modify Network Space screen opens.
5. Modify the Network Space attributes if needed (see relevant instructions here: Modifying a
network space). Edit the Network IP address, Netmask, Default Gateway and MTU if needed.
6. Return to the IP Addresses tab. Add the new IP addresses.
7. Repeat the process, if necessary, on the remote site.
8. If IP addresses were added on the remote site (on step 7), go to the Links screen, select the
relevant link and click Change Remote IP.
8 Hardware monitoring
• CLI
• drive.query
• enclosure.query
• node.query
• node.drive.query
• API
• GET api/rest/components/
• GET api/rest/components/racks/{rackId}/enclosures/{enclosure_index}/drives
• GET api/rest/components/racks/{rackId}/enclosures
8.2.1 Introduction
During the InfiniBox warranty period, faulty drives can either be retained at the customer premise or
returned to INFINIDAT. The returned drives are totally erased, as described in the following process.
8.2.2 Flow
The System Health and the Hardware Components part of the screen provide clickable visual hints on
the system health. Going over an indicator allow focusing on a health issue.
PDU failure
• 1 failed PDU out of 2 - 8 enclosures turn yellow.
• 1 failed PDU out of 4 – 4 enclosures turn yellow.
BBU warning
Two nodes might turn yellow when the BBU stops providing power to one of their PSUs.
BBU is missing
BBU turns red.
The following image provides an example of a health indicator that provides information on a Warning
state of a disk drive within an Enclosure. As indicated on the image, the health of the Enclosure is OK.
Clicking the Enclosure that is colored red (above) opens a detailed view of the Enclosure’s drives along
with their exact status (below).
8.4.2 Procedure
1. Gracefully shutdown the system using the following infinishell command:
system.shutdown
8.4.4 Troubleshooting
• Contact support
8.5.3 Procedure
1. Verify that all of the Enclosures switches are OFF (two switches on each Enclosure).
2. Verifying the power sources:
a. The system has one power cable for each PDU (the system has either 2 or 4 PDUs).
i. In 2 PDUs formation, each PDU is connected to a power source.
ii. In 4 PDUs formation, PDUs from each side of the system is connected to a power
source.
b. To verify that the machine is correctly fed from two separate power sources:
i. Turn on power source A, that feeds the left-side PDUs
ii. Verify that the left-side PDU outlets are on
iii. Turn on power source B
iv. Verify that the right-side PDU outlets are on.
3. Turn on the machine
a. If the enclosures are not yet turned on, turn them on now (the two switches are located
one on each PSU).
c. The nodes should turn on automatically.
i. Verify that the nodes are turned on.
ii. The system starts activation only the average BBU load is above 50%
d. In case that the nodes are not turned on, verify that the UPSs are at least 80% loaded.
8.5.5 Troubleshooting
• Verify that the power cables are connected to the BBUs and to the 1U drawer (ATSs)
• Contact support
9 Pools
The pool maintains capacity properties that apply to all of the datasets (volumes, filesystems and their
snapshots) that belong to the pool. A dataset cannot be created outside a pool.
Pools control the way the INfiniBox capacity is used by imposing quotas of physical capacity and virtual
capacity, and a set of rules that determine wat happens when the capacity is depleted. The storage
admin creates pools with different capacity quotas and other properties and allocate them to the
applications that InfiniBoxs serves. These applications are mapped to volumes or file systems, where
any volume or filesystem in InfiniBox belongs only to one pool, thus, it conforms to a specific capacity
allocation. The volume, or fielsystem, can move between pools, with their snapshots and optionally
with their capacity (see further along this article).
Changes to the pool’s capacity properties consist of metadata transactions and do not entail copying
data. Thus, there are instantaneus and do not affect the system’s performance.
The pool manages a group of volumes and filesystems along their snapshots, offering the following key
benefits:
• Improved capacity management – specific volumes and/or filesystems that serve a specific
application or a group of applications can be grouped within a pool and have their capacity
managed together
• Improved capacity regulation – the behavior in a case of capacity depletion takes place on the
pool level, thus limiting the available capacity and determining whether and how the volumes
keep serving read and write requestes, applies to all of the volumes and filesystems within the
pool
The ability to allocated virtual capacity only when it is needed allows to define to pool’s virtual capacity
to be larger than the pool’s physical capacity. As the pool physical capacity and virtual capacity are
defined independently, the virtual capacity can also be smaller than the physical capacity, or identical to
the physical capacity.
InfiniBox specifies virtual capacity at the pool level. The pool datasets (volumes and filesystems) are
attributed with a thin provisioning toggle. Thus, they can be either thinly provisioned, or not. If they are
thinly provisioned, the virtual capacity that is available for them derives from the virtual capacity of the
pool.
The pool physical and virtual capacities can each be defined to be as large as the system capacity.
• Physical capacity – the net physical capacity of the system is preconfgured per InfiniBox model
• Virtual capacity –
• Upon system inception - is defined to be identical to the system physical capacity
• Can be increased – by INFINIDAT personnel (contact Support for that)
• On InfiniBox software release 3.0 and up – the vitual capacity is 2.5 times the physical
capacity
The maximum pool pysical and virtual capacity is limited by the system-level capacity.
• System free virtual capacity - The system virtual capacity minus the sum of the pools virtual
capacity.
• Pool allocated virtual space - The sum of all volumes (thick and thin, excluding snapshots). The
allocated space cannot exceed the pool virtual capacity.
• The sum of the virtual size (thick and thin, excluding thin snapshots) - the allocated space cannot
exceed the pool virtual capacity
• Pool allocated physical space - The sum of all thick volumes, plus the physical space consumed
by all the thin volumes, and their snapshots. The used space cannot exceed the pool physical
capacity.
• Pool free physical space - The defined pool physical capacity minus the allocated physical space.
• Pool free virtual space - The defined pool virtual capacity minus the allocated virtual space.
• Thick volume - Reserved-space volume. Virtual and Physical space allocation is done immediately
as Thick Volume is created, at the amount of the volume size.
• Thin volume - Shared-space volume. Thin volumes consume physical space upon writes. The
virtual space is allocated upon volume creation to the amount of the volume size. The initially
allocated physical space is 0 (zero). In case of space depletion, no allocation is guaranteed for
thin volumes.
• Reserved space - Automatically defined spare physical space for the pool, to support pool
physical space depletion behavior.
• Emergency buffer - A policy for automatically extending of the pool physical capacity in the event
of pool physical space depletion.
• Limited state - Upon further accepting writes, the pool enters a Limited state where no new
volumes can be created, but the existing volumes can be written into.
• Locked state - If the pool can no longer expand, it enters a Locked state and its entities can no
longer accept writes.
This task creates a pool and provisions physical and virtual capacity. You can later on create datasets
(volumes and filesystems) in the pool. A broad explanation of provisioning terminology is available
here: Overview of pools.
9.2.2 Prerequisites
• None
4. Click Create.
The pool is created and is visible on the screen.
Capacity indicators
• State - indicates whether the pool is Normal or Locked
9.4.2 Prerequisites
To assign a pool to a user you need:
• You can assign the user to a pool upon creation of the user, as well
• A pool
You may add more than one pool to the same PoolAdmin, and more than one PoolAdmin to a pool.
You can add and remove users to and from pool according to your evolving needs.
You may add more than one pool to the same PoolAdmin, and more than one PoolAdmin to a pool.
9.5.2 Prerequisites
To assign a pool to a user you need:
A locked pool can be unlocked, thus restoring the capabilities mentioned above.
Auto-locking of a pool
When a pool exceeds its capacity settings it is locked.
9.6.2 Prerequisites
• Pool
9.7.2 Prerequisites
• Pool
• Prerequisites
• A note on a PoolAdmin that admins this pool
• Before you begin
• GUI instructions
• InfiniShell instructions
9.8.2 Prerequisites
• Pool with all of its datasets deleted or removed to other pools.
10 Provisioning volumes
The volume capacity is determined by the used and is affected by the settings of the pool that the
volume belongs to. Each volume must belong to a pool and can belong to only one pool. The volume
can move among pools.
The volume snapshot is a point-in-time representation of the volume’s data. The volume can have up to
999 snapshots. A snapshot can have snapshots, as well. Taking a snapshot of multiple volumes at the
same point in time is also supported. In order to do this, the volumes are grouped into consistency
groups.
Volume operations
The volume is the basic data container that is presented to the hosts as a logical disk. The term volume
is sometimes used for an entity that is either a volume or a snapshot, as hosts view volumes and
snapshots through the same protocol.
To distinguish the volume from its snapshots, whenever required, the term master volume is used for a
volume to clearly
Each volume has the following basic configuration attributes: name, size, pool, provisioning type and
ssd-enabled. The volume name is an alphanumeric string that is not related to the SCSI protocol. The
volume size represents the number of blocks in the volume that the host sees. InfiniBox presents the
volume size in bytes and multiplications of bytes (KB, GB, TB).
Available volume operations are (all of the operations are available from the GUI, CLI and API):
• Creating a volume – creates a volume by name, pool and size (mandatory parameters), attributes
such as provisioning type, usage of SSD drives and compression. The GUI and CLI also allow to
create series of volumes at once
• Querying for volumes – displaying a filterable and sortable list of the system’s volumes
• Displaying the volume tree – displaying the parental relations between the volume and its
snapshots in a tree format
• Resizing a volume – increasing the volume size
• Setting the volume to use the system’s SSD drives – as InfiniBox provides several hardware layers
to choose from, it is possible to allow highly active volumes to utilize the system’s SSD drives. This
attribute is inherited from the pool, and can be changed individually for each volume
• Renaming the volume – the volume can be renamed (in accordance with InfiniBox naming
scheme)
• Write-protection – locking the volume to host writes
• Changing the thin provisioning setting – the volume can be set to be thin-provisioned or thick-
provisioned
• Thick-provisioned - the capacity that is allocated to the volume is determined upon the
volume creation.
• Thin-provisoned - the capacity that is allocated to the volume is determined upon
incoming writes.
• Mapping the volume to a host – InfiniBox exposes the volume to the host in order to allow for
reads and writes. To be mapped to a volume, he host has to be connected to InfiniBox.
• Creating a snapshot and restoring from a snapshot
• Deleting a volume
• Setting the volume to be compressed
• Moving the volume between pools
Snapshot mechanism
InfiniBox uses the redirect-on-write approach to snapshots taking, where creating a snapshot means
creating a pointer to the existing volume data, rather than copying the volume aside in a mechanism
known is copy-on-write. The InfiniBox natively enables the user to take any number of snapshots with
no performance penalty whatsoever.
As taking the snapshot does not impact performance, and at the moment of creation the snapshot
contains only pointers to the volume, the system can store an unlimited number of snapshots. For
functional considerations, the number of snapshots for a volume is limited to 999. All of the snapshots
of a volume share a single copy of unmodified data.
Redirect-on-write
The redirect-on-write mechanism creates a volume snapshot as follows:
1. All of the data of the volume is not impacted by the snapshot. It remains in place, not moved and
not copied.
2. Following the creation of the snapshot, as the volume accepts new writes, the new writes are
stored on a new storage space.
3. The snapshot keeps pointing to the old data (as it represents the volume data on a specific given
time) and the volumes points to the new data instead of the old data.
Writable snapshots
Taking a snapshot of a snapshot is done similarly to taking a snapshot of a volume.
The parent snapshot is not impacted by this action, and the child snapshot only points to data.
When a snapshot is created, it is write-protected. This means that the snapshot depicts the volume (or
parent snapshot) at a specific point-in-time such that when the volume is restored from the snapshot, it
reflects its own content at the point-in-time in which the snapshot was taken.
When a snapshot becomes writable and starts accepting writes, its child snapshots behave similarly to
the way a snapshot of a volume behaves. For every write that the snapshot receives, the child snapshot
keeps pointing at the old data, with no unecessary writes and no impact on performance.
Snapshot refresh
Refreshing the snapshot means that the snapshot points to the current volume data, but it maintains
its metadata (SCSI serial, creation date, location on the volume tree). The refresh mechanism involves
changing only the pointers of the snapshot. Storage space that is released by the refreshed snapshot
and is not pointed to by any other snapshot is freed, and this operation takes place outside of the
scope of the snapshot refresh.
• Size - specified upon volume creation and seen by the host SCSI initiator.
• Used – the physical space that is allocated to the volume and was actually written into.
• Allocated – the physical space that was allocated to the volume upon creation.
• Tree allocated – the sum of the allocated properties of the volume’s descendants. The value of
this property is zero (0) if there are no descendants.
10.2.2 Prerequisites
• A pool with sufficient capacity
• Admin or Pool Admin privileges
• Click the Pools icon and place the cursor on the pool in which you will create the volume
• Click the Volumes & FS icon on the toolbar on the left
10.2.4 Instructions
1. Create a volume either:
• On the Pools screen, right-click a pool and select Create Volume.
• On the Volumes screen, click Create.
2. Set the volume’s name, size and whether it is thin provisioned.
3. Select a pool from the Pool drop-down list. Consult the physical and virtual capacity indicators.
4. Optionally, click Advanced.
a. (Optionally) Create a series of volumes
1. Set the number of volumes that will be created
2. Specify their ordinal numbers.
b. (Optionally) Check SSD Cache.
By default, the volume will be created with SSD drives enabled.
This option is available only for systems that have SSD drives. On a system with no SSD
drives, this checkbox is not displayed on the screen.
5. Click Create.
• Name
• Size
• Thin provisioning
• SSD cache
• Select a volume and select Modify Volume from the Actions menu.
• Click a volume to display it on screen, and select Modify Volume from the Actions menu.
10.3.3 Instructions
1. Upon selecting Modify Volume, the Modify Volume screen opens.
2. Modify one of the attributes that are available for modification.
a. When resizing the volume to more than 2TB, approve the warning.
3. Click Modify.
The volume is modified.
10.4.2 Prerequisites
• A volume
• Select a volume
• Click a volume to display it on screen
4. Click Move.
The volume moves to the new pool.
• This operation does not impact the write-enable state of the volume's snapshots
10.5.2 Prerequisites
• A write-protected volume
• Select a volume
• Click a volume to display it on screen
• Prerequisites
• Before you begin
• GUI instructions
10.6.2 Prerequisites
• A volume
• Select a volume
• Click a volume to display it on screen
The reason we start assigning LUNs to a cluster starting with 11 is to avoid collision with LUNs mapped
to individual hosts within the cluster. As long as no more than 10 volumes are mapped to a host
individually, there is no collision between volumes mapped individually and volumes mapped to the
cluster. In the rare case that a host has more than 10 volumes mapped only to it, and it also belongs to
a cluster, the LUN number assignment has to be set manually.
The InfiniBox management GUI and CLI support setting the LUN number manually (in addition to the
default behavior that is explained above) by the user when mapping a volume to host or cluster.
10.7.2 Prerequisites
• A volume
• A host, or a cluster
10.7.3 Instructions
1. Right-click a volume from the Volume & FS screen and select Modify Mapping from the pop-up
menu.
2. Browse or search for a host and click Map.
3. Click Apply.
The volume is mapped to the host.
• vol.map
• vol.query
• host.query
• cluster.query
• map.query
10.8.2 Prerequisites
• A volume
10.9.2 Prerequisites
• A volume
• Select a volume
• Click a volume to display it on screen
• If the volume is THIN the system will allocate the amount of capacity that is actually in use
for user data.
• Write protected - states whether the host can write into the volume
• Creation date - Date and time of the creation of the volume
Columns that are not displayed by default, but can be added to the table:
• Replication Role - for a replicated volume, this column indicated whether the volume is a source
or a target
• Serial - the volume's serial number
• Data Reduction Ration - the ratio between the pre-compressed volume capacity to the
compressed volume capacity
1. Size - specified upon volume creation and seen by the host SCSI initiator
2. Used - the physical capacity that is allocated to the volume and was actually written into
3. Free - the amount of the volume size that is not in use
4. Allocated - the capacity that is allocated for the volume
• If the volume is THICK the system will always allocate the entire size.
• If the volume is THIN the system will allocate the amount of capacity that is actually in use
for user data.
5. Tree Allocated - the sum of the allocated properties of the volume’s descendants. The value of
this property is zero (0) if there are no descendants
2. Write to the volume
• Block A is replaced with block A'
• The snapshot writes the capacity of block A as it is no longer available on the volume
10.12.2 Prerequisites
• Volume - the volume that its snapshot is taken
3. Name the snapshot and click Create.
Use the unit argument to specify the units of the capacity fields of the output. Available units are:
Capacity indicators
• Size – The defined size of the parent volume at snapshot creation time.
• If you change the parent volume size after the snapshot was taken, the snapshot size is
not impacted
• Allocated – The amount of capacity the system had to allocate to support the snapshot. A
snapshot is always thin provisioned.
• Used – The amount of data the host wrote to the parent volume after the creation time of the
snapshot
• SSD Cache - determines whether the snapshot is set to use the system's cache
10.14.2 Prerequisites
• Volume
• Snapshot
4. Approve the dangerous operation.
The snapshot is refreshed.
10.15.2 Prerequisites
• A volume
• A snapshot of this volume (located anywhere on the volume tree)
10.15.4 Instructions
1. Select a snapshot and select Restore from this Snapshot from the Actions menu.
The Restore from Snapshot screen opens.
2. Select which ancestor of the snapshot to restore.
3. Click Restore.
The selected volume is restored from the snapshot.
11 Provisioning filesystems
11.1.2 Prerequisites
• A pool with sufficient capacity, see: Creating a pool
• Admin or Pool Admin privileges.
• Creating a network interface
• Creating a network space
• Click the Pools icon and place the cursor on the pool in which you will create the filesystem
• Click the Volumes & FS icon on the toolbar on the left
• A filesystem with a size that is not a multiplication of 512B is rejected with an error.
• 1 iNode
• 0 capacity
11.1.4 Instructions
1. On the GUI, either:
• On the Pools screen: Click the Actions button and select Create a filesystem from the
pop-up menu.
• On the Volumes & FS screen: Click Create and select Filesystem from the list.
Click Create.
3. The filesystem is created. In the example on the screenshot, 10 filesystems are created,
numbered 101 to 110.
InfiniBox implements NAS directly on top of the data layer allowing it to get similar data services to our
SAN implementation. It features the following:
• User mode – for enhances stability, InfiniBox NAS does not use kernel resources
• Shared cache - the filesystem shares the cache with the SAN volumes, thus reduces memory
consumption and increases the performance.
• Transaction protection for taking a snapshot during a transaction, without performance impact
• RAID, data placement, and provisioning operations are taken by the block device
Capable of snapshots
Supports snapshots
Growing capacity Requires host side actions No host side action required
• Name
• Size
• Thin provisioning
• SSD cache
11.3.2 Prerequisites
• A filesystem
• Select a filesystem and select Modify Filesystem from the Actions menu.
• Click a filesystem to display it on screen, and select Modify Filesystem from the Actions menu.
11.3.4 Instructions
1. Upon selecting Modify Filesystem, the Modify Filesystem screen opens.
2. Modify one of the attributes that are available for modification.
3. Click Modify.
The filesystem is modified.
11.4.2 Prerequisites
• A filesystem
• Select a filesystem
• Click a filesystem to display it on screen
11.5.2 Prerequisites
• A write-protected filesystem
• Select a filesystem
• Click a filesystem to display it on screen
• Prerequisites
• Before you begin
• GUI instructions
• InfiniShell instructions
11.6.2 Prerequisites
• A filesystem
• Select a filesystem
• Click a filesystem to display it on screen
11.7.2 Prerequisites
• A filesystem
11.9.2 Prerequisites
• A filesystem
• Select a filesystem
• Click a filesystem to display it on screen
11.10.2 Prerequisites
• A filesystem
11.10.3 Instructions
1. You can create the snapshot either from the Volumes & FS screen or from the Filsystem screen.
• On the Volumes & FS screen: right-click a filesystem and select Create Snapshot from
the pop-up menu.
• On the Volumes & FS screen: Click click a Filesystem to open the Filesystem view. Click
the Actions menu and select Create Snapshot.
The Create Snapshot screen opens.
It is also visible on the Volumes & FS view. Click the expansion arrow that is placed to the left of
the filesystem to expand the filesystem tree and reveal the snapshot.
11.11.2 Prerequisites
• A filesystem
• A filesystem snapshot
11.11.4 Instructions
1. Select a snapshot and select Restore from this Snapshot from the Actions menu.
11.12.2 Prerequisites
• A filesystem snapshot
11.12.4 Instructions
1. Select Modify Snapshot from the Actions menu. The Modify Snapshot screen opens.
2. Modify the filesystem snapshot name.
3. Click Modify.
The filesystem snapshot is modified.
11.13.2 Prerequisites
• A filesystem snapshot
11.13.4 Instructions
1. Select Delete Snapshot from the Actions menu.
2. Approve the warning message
The filesystem snapshot is deleted.
11.14.2 Prerequisites
• A filesystem, or a filesystem snapshot
11.14.4 Instructions
1. On the screen, click the Exports tab.
2. Select an export and then select Delete Export from the Actions menu
The export is deleted
11.15.2 Prerequisites
• An export of a filesystem or a filesystem snapshot
11.15.4 Instructions
1. Select an export and then select Disable Export from the Actions menu
2. Approve the warning message
The export is disabled.
11.16.2 Prerequisites
• A filesystem
Basic settings
Export path The external path that is seen by clients "/ • Starts with a
as they mount. <filesystemNam
e>" "/"
• Cannot have
spaces
• Accepts: A-Z,
a-z, 0-9
Advanced settings
Privileged ports only When set to on, prevents users with root Off
permissions from mounting the export with
source port >= 1024
Max read size The maximum allowed read size for this export 1MB Binary value: 512
bytes to 8MiB
(8,388,608 bytes)
Max write size The maximum allowedwritesize for this export 1MB
Preferred read size The read IO size preferred by this export 64KB
Preferred write size The write IO size preferred by this export 64KB
Return 32-bit FileIDs Causes InfiniBox to zero out the top 32 bits Off
of iNode so it doesn't break some older OSes and
applications
Anonymous UID The UID given to users after squashing their • A numerical
original UID
value 0-65535
Anonymous GID The GID given to users after squashing their • A numerical
original GID
value 0-65535
Squash Users and When set to on, all UID and GID will be set to the Off
groups anonymous UID & GID
11.16.4 Instructions
1. Click the Exports tab on the filesystem screen, and click Create.
10.0.0.4 RW No RW-No
11.17.2 Prerequisites
• A filesystem snapshot
11.17.4 Instructions
1. On the filesystem snapshot screen, click the Exports tab.
2. Click Create. The Create Export screen opens.
3. Create an export path
4. You may also modify an internal export path
5. Approve, or overwrite the default export settings
6. Click Create.
The filesystem snapshot has an export path.
• Filesystem
• Filesystem snapshot
These access rights are only for the export. Access rights to the filesystem itself are set by the InfiniBox
admin (See: Overview of user management).
11.18.3 Prerequisites
• A host, an IP address or a range of IP addresses
• a Filesystem export
11.18.4 Instructions
1. Click an Export on the Exports tab on the filesystem's screen. The Export Permissions tab
opens.
2. Click Add Rule to add a new permission setting.
3. A new row is added to the screen. Insert a client - either a wildcard, an IP address or a range of IP
addresses. Select an access level and then whether to allow a root access. Click Done.
Client examples:
• 172.16.66.172
• 172.16.66.172-172.16.66.180
• Wildcard (*)
The screen closes. To view, add, or remove the permissions settings, repeat step 1.
Basic settings
Export path The external path that is seen by clients "/ • Starts with a
as they mount. <filesystemNam
e>" "/"
• Cannot have
spaces
• Accepts: A-Z,
a-z, 0-9
Advanced settings
Privileged ports only When set to on, prevents users with root Off
permissions from mounting the export with
source port >= 1024
Max read size The maximum allowed read size for this export 1MB Binary value: 512
bytes to 8MiB
(8,388,608 bytes)
Max write size The maximum allowedwritesize for this export 1MB
Preferred read size The read IO size preferred by this export 64KB
Preferred write size The write IO size preferred by this export 64KB
Return 32-bit FileIDs Causes InfiniBox to zero out the top 32 bits Off
of iNode so it doesn't break some older OSes and
applications
Anonymous UID The UID given to users after squashing their • A numerical
original UID
value 0-65535
Anonymous GID The GID given to users after squashing their • A numerical
original GID
value 0-65535
Squash Users and When set to on, all UID and GID will be set to the Off
groups anonymous UID & GID
11.19.2 Prerequisites
• An export of a filesystem, or a filesystem snapshot
11.19.4 Instructions
1. Select an export and then select Modify Export from the Actions menu of the Exports tab.
2. Modify the export settings as needed.
3. Click Modify.
The export settings are modified.
Performance gain
As the files are written faster (into one place instead of two) they are consequentially read faster, when
required.
• Files that are larger than 128B occupy a section and affect the amount of free space.
11.21 Querying for NFS clients and the filesystem they are using
• About this task
• Note
• How to query for NFS clients and the filesystem they are using
• From InfiniShell
• Filtered by a filesystem:
• Filtered by the source IP:
• From the GUI
Note
Only live IOs can be queried. The query does not display mounted filesystems that have no activity.
11.21.2 How to query for NFS clients and the filesystem they are using
The NFS IO can be filtered by either a filesystem or an export.
From InfiniShell
Filtered by a filesystem:
metrics.nas.fs.show fs=fs1
metrics.nas.source_ip.top fs=fs1
System ibox1150
Top NAS source IPs in system by OPS
Collecting data...
System ibox1150
Top NAS source IPs in system by OPS
Once we have a list of NFS Client IPs, we can show the detailed performance for that NFS client.
metrics.nas.source_ip.show source_ip=172.16.88.152
System ibox1150
Source IP '172.16.88.152' NAS performance in system
Collecting data...
System ibox1150
Source IP '172.16.88.152' NAS performance in system
• Pools - the InfiniBox system is divided into pools - storage units that can impose capacity limits
on the filesystems (and volumes) that are in them
• Filesystems - the filesystem stores many files and deploys protection schemes (snapshots and
replica) on the filesystem unit
• TreeQ - a filesystem subtree (or a folder) that can be assigned with a quota on the number of
files or the capacity. A single filesystem can contain thousands of TreeQs
For ease of operation, INFINIDAT recommends to create a small number of filesystems, keeping in mind
that the number of files within a single filesystem is practically unlimited and a high file count does not
incur a performance impact on InfiniBox.
Examples of quotas
The quota can be imposed on either the capacity or number of iNodes, or both.
• 2GB capacity
• 1,000 iNodes
• 1GB capacity and 1,200 iNodes (in such a case, the first hard quota to be reached, blocks the
subtree IO. See below for more details)
Target filesystems
• A filesystem that is a target of a replica inherits the TreeQ definitions from the source filesystem.
These definitions cannot be modified on the target, as long as it is part of the replica.
• When a quota is reached an event is generated on the source side only
• 1 iNode
• 0 capacity
Limits
• The TreeQ can have a capacity of 500MB - 10,000 PB
• The TreeQ can have up to 100*108 iNodes
• The number of TreeQ per filesystem is 4,095
• Size limits:
• Hard capacity >= 1GB (1*109, not GiB)
• Hard capacity - Soft capacity >= 100MB (100*106, not MiB)
• Soft inode > 1
• Soft quota - A threshold for alerting the storage administrator of high quota usage, without
blocking writes. This allows the administrator time to respond before writes will be rejected
• When the soft quota is exceeded:
• An event is generated within a 50MB window above the quota
• The tree keeps accepting IO
• Hard quota - a threshold that blocks IO when reached.
• When the hard quota is reached:
• An event is generated when the a user tries to reach above the assigned quota
(iNodes, Capacity)
• Events are only generated once per hour per TreeQ hard quota
• The event may be triggered within a 1MB window below the quota
• For capacity quota: the tree ceases accepting writes. Read and delete operations are
accepted
• For iNodes quota: the TreeQ ceases accepting creates (while writes to existing
iNodes are not ceased)
• Write-protected filesystems
• Locked filesystems
To enable TreeQ for such filesystems, they need to get out of these states (i.e. write-enabled, or move
them to a non-locked pool).
• NO_QUOTA - when no quota was set by the admin (the system will only count usage but won't
send events / block the user from writing)
• BELOW_QUOTA - the soft limit was not exceeded yet, users can write and no event will be
triggered
• SOFT_EXCEEDED - the TreeQ has exceeded its soft quota but has not reached the hard limit (user
can still write data)
1. Both soft quota and hysteresis thresholds were crossed, so an event is generated
2. The capacity is above the soft quota, so when new capacity was added, the soft quota threshold
was not crossed. No event is generated
3. The capacity moves from below the soft quota to above the soft quota, but the hysteresis
threshold was not crossed. No event is generated
4. Both soft quota and hysteresis limit were crossed so an event is generated
Cas Time that has passed since the last Event is Writes / file creation
e event generated? blocked?
Note that as the TreeQ is smaller than the filesystem, the file can be moved to another TreeQ and
remains writable.
12 Consistency groups
The consistency group allows to take snapshots of all of its volumes at the same point-in-time, thus
ensuring a consistent image of the volumes at that time. The consistency group is typically used when a
single application spans multiple volumes and there is a need to create a point-in-time copy of these
volumes. From the application perspective, point-in-time backups of the entire application are crucial
for maintaining data integrity.
The consistency group can be restored from its snapshot group (subject to specific constraints - see
further down this page). Upon a restore, any of the consistency group's datasets is restored from its
matching snapshot.
The consistency group and its members all belong to the same pool.
that is provided in the following image, a consistency group (1) has two members. A snapshot group is
created, in which there are two snapshots, one for each of the consistency group's members (2). A new
member is added to the consistency group, creating a situation in which the snapshot group cannot
restore the entire consistency group, if asked to do so (3). Upon the creation of a new snapshot group, it
contains a snapshot for each of the consistency group members (4).
12.2.2 Prerequisites
• A pool
12.2.4 Instructions
1. On the GUI: click the Volumes & FS icon. Then, click the Consistency Groups tab.
The Consistency Groups screen opens.
2. Click Create Group.
The Create a Consistency Group screen opens.
3. Enter a name for the consistency group.
Select a pool from the list of available pools.
Click Create Group.
12.3.2 Prerequisites
• A consistency group
• Datasets (volumes) that are added as members to the consistency group
For more information, see here: Adding a member to, or removing a member from, a replicated
consistency group whose replication type is SYNC
Pool association
• Upon creation, the consistency group is associated with a pool.
• All of the volumes of a consistency group reside in the same pool.
• The consistency group can be moved between pools, but individual members cannot move
between pools independently.
• When a consistency group moves, all of its members and their snapshots move with it.
12.3.4 Instructions
1. Click on a consistency group on the Consistency Groups tab.
The Consistency Groups screen opens. If the consistency group has no members yet - for
example, if it was just created - a bubble pops, indicates the availability of the option to add
members.
• You can create - and add to the consistency group up to 100 volumes, according to the
following guidelines:
• Setting index numbers to volumes. The created volumes will be indexed from 1 to
the set number. For example: 100.
• Setting a range of index numbers. This option accepts any range under a limitation
of 7 characters (hyphen included). For example: 101-200, 900-999. The largest index
number available is 999.
• Click Create to create the volumes. The volumes are displayed on the screen.
• Select the volumes and click Add to Group to add them to the consistency group.
The RPO (Recovery Point Objective) is the maximum time the replica is allowed to lag. The RPO is
configured with another parameter - the Sync Interval. The RPO has to be greater than the Sync Interval
and the sync job is expected to be completed prior to the completion of the Sync Interval. The best
practice is to set the RPO to be twice the time of the Sync Interval.
RPO states:
• RPO OK – The lag between the source and target < RPO
• RPO LAGGING - The lag between the source and target > RPO
• N/A – RPO not set
Adding a member to a replicating consistency group is done by adding a source member to the source
consistency group and instructing the replica to either add a target member to the target consistency
group or to create a target member to a non-replicating member that is added to the source. The
instruction is provided to the source system, where the Adding a Member operation takes place.
The consistency group settings (interval and RPO) are imposed on the added member.
A consistency group that is in initialization state cannot have its role changed in case of a disaster
recovery. In order to change the role of the consistency group, the initializing member has to be
removed - losing any advancement in replicating to the target member - in order to move the
consistency group out of the initializing state and allow the role change.
It is advised to consider this implication prior to adding the new member to the consistency group. It
might prove useful to replicate this member separately - prior to adding it to the consistency group -
and only when it is synchronized with the target, to add it to the consistency group (as well as add its
target to the target consistency group).
12.5.1 Limitations
• Maximum number of members in a group - 100
• Maximum number of consistency group in a system - 10,000
• Maximum number of snapshot groups per consistency group - 250
Example 1
Prefix s1-
Snapshots s1-vol1,...s1-vol5
Example 2
Suffix -s1
Snapshots vol1-s1,...vol1-s5
12.7.2 Prerequisites
• A consistency group
2. Provide a name for the snapshot group and either a prefix or a suffix to the snapshots.
Click Take Snapshot.
12.8.2 Prerequisites
• A snapshot group
12.8.3 Instructions
1. Right-click a snapshot group and select Delete Group from the pop-up menu.
Click Delete.
3. Approve the warning message.
The snapshot group is deleted.
12.9.2 Prerequisites
• A consistency group
12.9.3 Instructions
1. Right-click a consistency group and select Modify Group from the pop-up menu.
2. Provide a new name for the consistency group and click Modify Group.
12.10.2 Prerequisites
• A snapshot group
12.10.3 Instructions
1. Right-click a snapshot group and select Modify Group from the pop-up menu.
The Modify Group screen opens.
12.11.2 Prerequisites
• A consistency group
• A second pool, in addition to the pool that the consistency group is stored in
12.11.3 Instructions
1. Right-click a consistency group and select Move to Pool from the pop-up menu.
12.12.2 Prerequisites
• A consistency group
• A consistency group member that will be removed
• When a member is removed from a consistency group, its snapshots are removed from the
respective snapshot groups.
• When the last member is removed from a snapshot group, the snapshot group is deleted. There
are no empty snapshot groups.
• When the last member is removed from the consistency group, the consistency group remains.
12.12.4 Instructions
1. Click on a consistency group on the Consistency Groups tab.
The Consistency Groups screen opens.
2. Select a member (or several members).
The Remove Members button becomes available.
• Related tasks
• Related GUI tasks
• Related InfiniShell commands
12.13.2 Prerequisites
• A consistency group
• A snapshot group
12.13.3 Instructions
1. Expand the consistency group to view its snapshot groups.
2. Right-click a snapshot group and select Restore from this Snapshot from the pop-up menu.
12.14.2 Prerequisites
• A consistency group
12.14.3 Instructions
1. Right-click a consistency group and select Delete Group from the pop-up menu.
The Delete Group screen opens.
2. Click Delete.
The consistency group is deleted.
Prerequisites
• The link that the replica is using has to be up during the add / remove action
12.15.2 Instructions
1. Verify that the replication type of the consistency group is ASYNC
a. If the replication type is SYNC, change it to ASYNC
2. Verify that the replication type of the member is ASYNC
Prerequisites
• The link has to be up
12.16.3 Instructions
1. Click on a replicated consistency group on the Consistency Groups tab.
The Consistency Groups screen opens.
2. Select a member (or several members) and click Remove Members. Three options are made
available on screen:
a. Keep replicating the member individually - the member stays replicated and preserves its
synchronization status
b. Stop replicating the member - the member stops replicating and the staging area (the
replication-associated snapshots) is deleted
c. Stop replicating the member, but retain the staging area - the member stops replicating
but the staging area (the replication-associated snapshots) is preserved
3. Click Remove. The member is removed from the consistency group.
13 Link
The instructions that were provided on this page are now available on the InfiniBox Best
Practices for Setting up Services documents, that are available here.
Automatic authentication
The link is automatically authenticated on the target system whenever the following conditions are met:
• You are logged into the source system with the default Admin user
• The default Admin user exists on the remote system
Manual authentication
A manual authentication is required whenever:
• You are logged into the source system with a user other than Admin (for example, a PoolAdmin)
13.2.2 Prerequisites:
This task assumes that the following entities are defined:
• Link
• link.create - This command creates a link between a network space on the local system and a
target system. Such a link is required for services that span across systems, for example,
Asynchronous Remote Replication.
• link.authenticate - This command verifies that the user of the local system can operate the
remote system as well
• link.delete - This command deletes the link
• link.query - This command lists the links that are defined on the system along with their state
and the last time they were in use
The commands are displayed in length, including examples on the InfiniShell Reference Guide.
The link can move from one network space to another, providing a flexibility in deploying and utilizing
the InfiniBox networking resources.
13.3.4 Prerequisites
• This task assumes that a link already exists.
• In order to be attached to a network space, the link has to be detached.
Detaching a link
1. On the InfiniBox GUI, click the Replication icon on the let toolbar to open
the Replication screen.
2. Click the Links tab.
3. Right-click a link and select Detach from the pop-up menu.
4. Confirm the warning message.
Results:
Attaching a link
Once the network space configuration has changed:
13.4.2 Prerequisites:
This task assumes that the following entities are defined:
• Link
Querying for the network space and IP addresses that serve the link
See here: Viewing the network space details.
• link.create - This command creates a link between a network space on the local system and a
target system. Such a link is required for services that span across systems, for example,
Asynchronous Remote Replication.
• link.authenticate - This command verifies that the user of the local system can operate the
remote system as well
• link.delete - This command deletes the link
• link.query - This command lists the links that are defined on the system along with their state
and the last time they were in use
The commands are displayed in length, including examples on the InfiniShell Reference Guide.
13.5.2 Prerequisites
This task assumes that the following entities are defined:
• Link
• link.create - This command creates a link between a network space on the local system and a
target system. Such a link is required for services that span across systems, for example,
Asynchronous Remote Replication.
• link.authenticate - This command verifies that the user of the local system can operate the
remote system as well
• link.delete - This command deletes the link
• link.query - This command lists the links that are defined on the system along with their state
and the last time they were in use
The commands are displayed in length, including examples on the InfiniShell Reference Guide.
14 Replication
• Sending the I/O to the remote site after it was already acknowledged by the host
• Allowing the user to define the interval between the snapshots that are sent to the remote site
• Supporting a minimal 4 secs RPO (Recovery Point Objective) if the link quality requirements
between the sites are fulfilled.
Glossary
Target A volume, file system or a consistency group on the target system that is the destination of the
dataset replicated data. A target dataset cannot accept host writes.
Replica An entity that matches a pair of source and target datasets and other settings essential for the
replication.
Network A set of definitions for a network address space, annotated using CIDR.
Space
Sync job The process of creating a snapshot of the source and delivering it to the target.
RPO Recovery Point Objective. The amount of data, measured in time units, that is at risk and might be
lost, in the case of a disaster.
Staging The storage space that is used by snapshots that are in use for the replication process, both on
area the source and the target InfiniBox systems.
Overview
In order to replicate data from one InfiniBox system to another, the user needs to connect the two
systems by defining Replication Network Spaces on each of the InfiniBox systems. On top of Network
Spaces, the user will create a bi-directional Replication Link that will define the connection between the
two Network Spaces. If the systems are using sync and async replication between them, the same link
will be used for both replication types, using different protocols.
Access to the target system is required for all two-sided operations. It is not required for operations
that are carried out only on the source system.
Replicating data from the source system to the target system can be carried out by both Admin and
Pool Admin user roles.
• The Admin user can replicate any of the system's datasets that are available for replication.
• The Pool Admin can replicate only datasets from the relevant pool.
A Network Space for Replication service can be defined as "Async Only" or "Async and Sync".
The Network Space definition requires the user to define minimum 4/7 IP's depending on the
replication type:
• Minimum 4 IPs for Async Only Network Space - The first IP will be used as the Management IP,
and the rest will be used as data IPs for async replication
• Minimum 7 IPs for Sync and Async - The first IP will be used as the Management IP, and the rest
will be used as data IPs for sync and async replication
The Management IP transfers the replica configuration and Management commands between the
source and the target. The Management IP does not send the data.
For link creation, the user must have an admin permission on both local and remote systems.
The link is bi-directional. It can be created on any of the systems by identifying the second system via an
IP address.
The same link can be used for both target and source replicas between the 2 systems.
Link states
The replica link can be in either of the following states:
Attach/Detach links
In case the user wants to change IPs on a linked replication network space, the link will have to be
detached from the network space and re-attached after the network space is updated, or attach it to a
new network space.
• Detaching a link - When the link is detached, the relationship between the link and the network
space is disconnected. All of the replicas that use the link are automatically suspended.
• Attaching the link - When the link is attached, all of the replicas that were suspended as a result
of the detach operation will be automatically resumed.
• Replicas that were suspended prior to the detach, will not be automatically resumed.
Overview
A replica is an entity that matches a pair of source and target datasets and other settings essential
for the replication.
• Volumes
• File Systems
• Consistency Groups
• Volumes
• Consistency Groups
Replica roles
The dataset that is replicated is called source and the dataset that receives the replicated data is called
target.
The replica role can be changed via user commands.
Every change in roles will cause the replica to reach Auto-Suspended state due to configuration
mismatch.
A change of the replica role will cause a change in the functionality of the changed replica:
In Sync replication there is a command for "switch role" that switches the source and target roles
synchronously.
Replica states
InfiniBox uses replica states in order to manage a prompt functionality of the replication, the replica
state definitions are the same for sync and async replicas:
• Active - The replica is active and data is transferred from the source to target as needes
• Suspended - The replica is suspended by the user. No data is transferred from the source to the
target. The manual suspension of the replica pauses the current sync job.
• Auto-suspended - The replica is automatically suspended by InfiniBox due to a permanent error
or a timeout. The user will have to manually resume the replica once the cause of the suspension
is fixed.
Initial Sync
When the replica is defined, and the source is not yet replicated to the target, the replica is in an
Initialization state. In this state, all of the source data has to be replicated.
This state may take a long time depending on the amount of data that needs to be replicated.
Once the replica is synchronized (the source is fully replicated to the target), the InfiniBox system will
replicate only the new I/Os or differences between the source dataset and the target.
These retained snapshots are uniquely identified by the system and can be used as base for re-creating
the replica between the source and target datasets, as long as they were not changed by the user.
If the user creates the replica using the retained snapshots as base, the initial sync job is skipped, a new
snapshot of the source dataset is taken and only the difference between the retained snapshot and the
new snapshot is transferred to the target.
The following user operations that are usually available on datasets are blocked on replicated datasets:
• Delete dataset
• Restore dataset
• Resize dataset
• Disable Write-protect dataset on a target dataset
• Export a filesystem on a target dataset
Once the replica object will be deleted, the operations on the dataset will be allowed as usual.
Replica Operations
Replica Create
Creating the replica will be done on the source system since this is the system holding the dataset data
and connected to the application active host.
Replica Delete
A replica entity should be deleted from the source replica if possible. The system will automatically
delete the target replica as well.
When the replica is deleted, the pairing between the replicated datasets is deleted and both source and
target datasets return to regular usage. Deleting the replica will not delete the replicated datasets on
either side.
In case there is no connectivity between the systems or if there is a configuration mismatch between
the replicas, there is an option to delete the replica locally using a force flag. This will require the user to
do the cleanup on the other system.
When deleting an async replica, there is an option to retain the staging area (the last snapshot
replicated) and expose it to the user for future use (see snapshot-base init above). If the replica is in
Initializing state, there are no snapshots to retain.
Suspend Replica command will cause the source replica to stop transferring data to the target replica,
and Resume Replica will resume the data transfer between the datasets if possible.
When there is no connectivity between the source and target or in case of a configuration mismatch
between them, the resume command will fail.
Change role can be done on the source or the target replica, the source replica has to be suspended
prior to changing the role.
When changing source to target, the source dataset will be changed to target dataset and will not
accept user writes. This may cause a loss of updated source data that was not replicated to the target
yet.
When changing target to source the target dataset will be changed to source dataset and will accept
host writes. I/O from the another system will be blocked.
After a change role commands, the replica will have to be manually resumed in order to continue
replicating.
The switch role command can be used only from the source replica and only if the link between the
systems is connected and the replica is in synchronized state.
A replicated CG (consistency group) keeps the volumes in the CG on the target side consistent with each
other.
Create a CG Replica
Creating a replicated CG is done just like a volume or filesystem replica create.
In CG replica there are several options for the local dataset at the time of creation:
• An empty CG - The replica entity will be created between the 2 empty CGs and once the user will
add volumes to the CG they will automatically be replicated.
• A CG with volumes - All the volumes in the source CG will be paired with target volumes and start
a replication process.
• The members on the target side can be created automatically or previously created by the
user and paired specifically.
The added member can be a volume or an async replica. In both cases, the new member will get the
async replica definitions from the CG (RPO and interval).
Adding a member to a replicated CG will change the CG replica sync state to initializing until all the
volumes are replicated and the targets are consistent.
In order to remove a member, the replica link must be connected and the replica has to be from async
type. To remove a member to a sync CG, the replica type has to be changed to async beforehand.
When removing a member, the user can choose to keep the member replicated, and a new replica
entity will be created for the removed member.
The user can also choose to retain the staging area for the removed member, as done in delete replica.
Delete a CG replica
Deleting a CG replica is similar to the deleting a volume.
CG replica delete should be done from the source replica if possible and will delete the replica entity on
both sided.
Deleting the CG replica will not delete the CG on either side or change it in any way.
In case there is no connectivity between the systems or if there is a configuration mismatch between
the replicas, there is an option to delete the replica locally using a force flag. This will require the user to
do the cleanup on the other system.
When deleting an async CG replica, there is an option to retain the staging area, this will expose a snap-
group of all the last replicated snapshots of the CG.
The sync job creates a snapshot on the source dataset and delivers it to the target. The next sync job
takes a new snapshot of the source, calculates the diff from the previous snapshot and sends only the
data that was changed since the previous sync job.
The amount of time between two scheduled sync jobs is called sync interval. The sync interval can be
changed by the user. Changes to the replica sync interval take effect on the next sync job.
The async snapshots are internal snapshots and are not visible to the user. The capacity will be
presented to the user in the replica information as staging area capacity.
The user can use the "Sync now" operation on any async replica, regardless of the interval defined, and
a sync job will be initiated (if there is no sync job currently replicating).
RPO State
In addition to the replica state, Async replicas there isalsoaRPOstate.
• RPO Lagging - The replica passed the RPO defined and potential data loss in case of a disaster
might be larger than planned. This state might be reached when there are connectivity issues
preventing a proper data flow or an incorrect RPO definition.
Initializing
Replicating
Done
Stalled
Suspended Paused
Done
Done
In synchronous replication, as each host write is replicated to the target system prior to acknowledging
the host, the replica depends on the link quality. InfiniBox takes measures to handle the synchronous
replica in case that the link between the source and the target cannot support the replica, including
safely return to synchronous replication when the connectivity conditions are back to normal.
The replication type will stay sync at all time and the user will not be able to perform async replication
operations, such as sync now, nor configure the replica RPO and Interval.
The Failback to sync replication does not require an Initialization and will be done automatically by the
system.
The state of the rpelica is visible only on the Source. On the Target, the state is N/A. To view the replica
state, query for it on the Source system.
Active Synchronized
Initializing
Sync in progress
Out of sync
In async replicas, the snapshot that is taken on the target is always consistent with the last replication
cycle.
This ability to take a snapshot on the target is ideal for Disaster Recovery tests that aim to verify the
integrity of the data on the target without affecting the replication process.
It allows the user to map the snapshot to the remote host without stopping the replication of the
source dataset to the target.
Note that it is also possible to map the target dataset itself to a remote host, taking into account that
the dataset will be consistent and write-enabled only after the replica was changed to source or
deleted.
Failover
• The link between the source and the target is down and the target is connected to a host and can
serve it.
• The target has to have its role changed to a source and will now accept host writes.
• The replica on the original source side gets into an auto-suspended state.
• During this phase, the target and the source are no longer consistent.
Failback
The user returns both source and target to their original roles, and the replica returns to the state it was
prior to the failover.
• The original target should be changed back to target (was changed to source in the failover).
• The replica should be resumed from the original source side.
• A sync job will start in order to return the replica to synchronize state.
In this case, the user might want to replicate the data changed on the target datasets back to the source
datasets.
Failover
• The source system is down and the target is connected to a host and can serve it.
• The target has to have its role changed to a source and will now accept host writes.
• During this phase, the source datasets are unavailable to the user due to the disaster.
Failback
The user switches the original roles of the replica and synchronizes the data from the new source to the
old source.
After this procedure, the user can decide whether to keep the replicas roles reversed or change them
back to the original sites (using switch role for sync if possible, or change role on both sides when there
is no new data on the source, to prevent data loss in the process)
• Ethernet ports - every InfiniBox system includes 3 controller nodes. Every node has access to all
drives. Depending on the available InfiniBox model, one may have either 2 (F61xx/F21xx) or
4 (F62xx/F22xx) 10Gbps Ethernet ports per node.
• Network space - different InfiniBox services require a network space of their own.
• The same network space serves both Asynchronous and Synchronous replicas
• Separate network spaces are required for Replication and for NAS.
• Service - an InfiniBox feature that requires network connectivity. For example: Replication, NAS.
Required ports
Make sure you have accessibility (admin privileges) to both local and remote systems.
The first IP will be used to Management the next 3 IP addresses will be used for Async replication and
the last 3 IP addresses will be used for Sync replication.
Management 1 1 80,443
Data 3 or 6 3 or 6 8067
Creating ports
Create a port on each of the Nodes:
On Node 1:
config.ethernet.interface.create_single_port port=N1ETH1
On Node 2:
config.ethernet.interface.create_single_port port=N2ETH1
On Node 3:
config.ethernet.interface.create_single_port port=N3ETH1
Creating a link
• The link verifies that there are enough IP addresses on both systems (1 for Management, 3 for
Synchronous replication, 3 for Asynchronous replication, as explained above)
• For a description of Link States, see: Detaching and attaching a link
• See detailed instructions here: Creating a link
This task replicates a volume, a consistency group or a filesystem, from a source InfiniBox to a target
InfiniBox.
Naming restrictions
Two replicated entities (volume, consistency group or a filesystem) cannot have the same name.
• In case that the link is not up (either degraded or down), the new name will not be reflected on
the source side, even when the link is up again. In any case that the link is not up, it is advised to
wait until it is up and only then rename the target.
14.3.2 Prerequisites
Creating a replica from a source InfiniBox to a target InfiniBox requires a link between the two systems.
See the following help topics for instructions on how to fulfill the prerequisites:
• replica.create
• replica.advanced.create - for replicating volume a from the source and target snapshots
• replica.advanced.create_cg - for replicating a consistency group from the source and volume
snapshot groups
Failover and failback are operations that handle a situation in which the link between the local and the
remote systems is down. These operations switch the roles of the source and the target. The Replica
Switch Roles starts with a source and a target that are both live and linked between them.
14.4.1 Failover
On a Failover scenario, the link between the source and the target is down and the target is connected
to a host can serve it. To do so, the target has to have its role changed to a source. As the target serves
the host, the replica gets into an Auto Suspended state. During this phase, the target and the source are
no longer consistent.
In this phase, we change the role of the target to source. The volume becomes write-enable, as it will
now accept host writes.
14.4.2 Failback
Once the link is back, there is a need to synchronize the target – that has accepted host writes during
the Failover – and the source. To do so, the target remains a source, and its volume is replicated to the
other side of the replica, to the old source. To allow the replication in this direction, we change the role
of the source to target. When changing source to target, the volume becomes write-disable and the
replica will be suspended.
The user resumes the replication and the target and source become synchronized.
Now, we return both source and target to their original roles, and the replica returns to the state it was
prior to the failover.
• RPO OK - the time that has passed since the last sync job was successfully completed is smaller
than the RPO.
• RPO lagging - the time that has passed since the last sync job was successfully completed is
greater than the RPO.
• N/A - no RPO was set for the replica. See more on this below.
Default values
• When creating a replica from the GUI, the default values of the Interval and RPO are:
• Interval - 60 seconds
• RPO - 5 minutes
• When creating a replica from InfiniShell of InfiniAPI, there are no default Interval and RPO values
Recommended values
• It is recommended to set the values of Interval and RPO so the RPO value is at least twice the
value of the Interval
• The default values described above meet this recommendation
14.5.3 Instructions for modifying the Interval and RPO from the GUI
1. On the InfiniBox GUI, right-click the Replication icon on the let toolbar to open
the Replication screen.
2. Right-click a replica and select Modify Replica from the pop-up menu.
The Modify Replica screen opens.
3. Modify the RPO and Interval and click Modify.
Source A volume on the source system that is replicated (or planned to be replicated).
dataset
Target A volume on the target system that is the destination of the replicated data. A target volume
dataset that is part of a replica cannot accept host writes.
Replica An entity that matches a pair of source and target volumes and other settings essential for the
replication.
Local The InfiniBox system through which the user manages the replica.
Both local and remote system may contain source and target datasets.
Sync job The process of creating a snapshot of the source and delivering it to the target.
Staging area The storage space that is reserved to, or used by, snapshots that are in use for the replication
process, both on the source and the target InfiniBox systems.
The sync now command creates a new snapshot on the source and initiates a sync job. Future, interval-
initiated, sync jobs are not canceled. Multiple sync now commands - one per replica - can be run on the
same source system concurrently.
14.9.2 Prerequisites
This command requires an up and running replica definition, that is:
The command fails in case there is a sync job that is currently running.
• replica.sync_now
14.10.2 Prerequisites
A replica definition.
14.10.3 Instructions
Query for the replicating volumes on both source and target in order to see the progress of the
replication. See the following examples for the way this query is used, and the data that can be queried
for.
LOCAL DATASET TYPE ROLE REMOTE SYSTEM REMOTE DATASET STATE PROGRESS THROUGHPUT RPO STATE
RESTORE POINT
cg-1 CG SOURCE ibox3000 ibox1140_cg-1 IDLE 100% - OK
2015-09-06 11:05:04
cg-2 CG SOURCE ibox3000 ibox1140_cg-2 REPLICATING 1% - LAGGING
2015-09-06 07:24:34
Whenever the replication was queries amidst the sync job, the State is INITIAL_REPLICATION and the
Progress is a number between 0% and 100%.
(Some fields were removed from this example, in order to allow for a clear display on this document.)
LOCAL DATASET TYPE ROLE REMOTE SYSTEM REMOTE DATASET STATE PROGRESS THROUGHPUT
RPO STATE RESTORE POINT
Available fields
You can set the query to display the following fields (some of them are not included in the default
output that is shown above).
To select which fields to display, run replica.query with the columns operator. Available columns are:
local_pool_name The name of the pool that the local dataset belongs to.
updated_at The last time the replication was updated. Usually, this is the timestamp of the last
sync job.
restore_point The time of the last replicated snapshot on the source, that is known for sure to
be replicated to the target.
last_synchronized The last time data was replicated from the source to the target.
remote_pool_name The name of the pool that the remote dataset belongs to.
• Unknown
• Idle
• Replicating
staging_area_size The capacity that is dedicated for replica snapshots. This field is available only on
the target system.
For more information on how to select which columns to display, see: Controlling the columns of the
displayed query output.
14.11.2 Prerequisites
A replica definition.
14.11.3 Instructions
1. On the GUI, click the Replication icon on the menu on the left. The Replication screen opens.
(This screen has two tabs, the Replicas is the default tab.)
2. Click a replica to view its details on the expanded view.
• GUI Instructions
• InfiniShell instructions
• Retaining the staging area on the target
• Best practice
• Related tasks
14.12.2 Prerequisites
• A replica
• An example of deletion from the target
• The replica is in Initialization phase, so the target is not consistent with the source
• A dataset was added to the consistency group and the consistency group replica hasn't reached
consistent state on the target yet
Best practice
It is advised to wait for the Initialization phase to complete prior to deleting the replica if you would like
to retain the staging area.
If there is not enough room for restoring the target, the replication change role operation will not take
place.
In this case, you may either:
At this point, the dataset and snapshot both consume capacity. This capacity may exceed the pool
physical capacity.
These changes can be reverted after the successful completion of the restore operation.
15 Encryption at-rest
Disk encryption-at-rest allows for data protection across all scenarios in which data that is stored in the
disks is compromised due to disks removal from the site. With data encryption using AES256 and the
ability to securely erase a disk, the risk of data exposure is eliminated.
The InfiniBox storage system can be set to run either with data-at-rest protection or without it. InfiniBox
encryption-at-rest uses the standard method of encrypting data, so there is no performance penalty.
To benefit from this feature, your InfiniBox has to be equipped with self-encrypting disks.
• Encryption-at-rest terminology
• Encryption-at-rest mechanism
• InfiniBox infrastructure
• Feature activation
• Hot upgrade
InfiniBox infrastructure
• InfiniBox generates unique passwords per-drive and per-system so that different drives will
always have different passwords.
This means that even in the theoretical case of a drive compromised, all other drives in the
system remain secure.
Feature activation
• Activation and locking:
• The activation is performed by INFINIDAT Support
• InfiniBox creates passwords for all drives
• InfiniBox locks the drives
• InfiniBox unlocks the drives using the passwords (self-test)
• This task takes several minutes to complete and is done for one drive at a time
• Drive activation
• If the drive is already locked, InfiniBox replaces its password
Hot upgrade
• Hot upgrade is not affected by the encryption-at-rest feature
16 InfiniSpares
16.1.1 General
The InfiniSpares feature allows the InfiniBox system to keep working even when a preconfigured
number of disks were failed. InfiniBox handles the increased number of failed drives by using
unallocated capacity as spare capacity. Replacing the failed drives increases back the unallocated
Capacity.
InfiniSpares improves the system ability to sustain mass disk failures at the expense of usable capacity.
• Reserved spares - up to 5% of the total capacity (this number varies across models, see below)
• The rest is divided between allocated and unallocated capacity, according to the actual usage
When the feature is engaged, InfiniBox allocates free system capacity as spare disks. At any given time,
InfiniBox ensures that the system has an enough spare capacity to hold 2 additional disks failures.
F6xxx 100 12
F4xxx 100 8
F2xxx 50 6
F1230 20 6
16.2.2 Limitations
• When engaged, InfiniSpares consumes system usable physical capacity to recover data on failed
disk drives, this capacity will be reclaimed back as usable capacity when failed drives are
replaced
• When engaged, InfiniSpares preserved ahead physical usable capacity equals to 2 disk drives,
this capacity will be reclaimed back as usable capacity when failed drives are replaced
• If more than the above number of disks have failed, the system performs an emergency
shutdown
16.2.3 Events
INFINISPARES_ENGAGED event with error severity is emitted on any disk failure when system has no
"native" spare disks left and the InfiniSpares feature has to allocate spare capacity for the rebuild.
17 Event notification
• Events
• Event severity
• Event reporter
• Event retention
• Event behavior
• Custom events
• Heartbeat event
• Event notification
• Event notification rule
17.1.1 Events
Event severity
InfiniBox assigns each of the events it generates with a severity level. The severity level is the quickest
way to filter events that are displayed in the event log and when setting a notification rule. The severity
level is preconfigured into the event definition and cannot be changed. The available severity levels are:
• Info - informational - the system reports on an operation that does not have a negative
implication on the system operation. For example, a creation of an entity, user login.
• Warning - example, a change in the state of an hardware component, pool space low, etc.
• Error - a failure in a hardware component that requires user action, a user action that may limit
the system operation. For example, pool space very low.
• Critical - a failure that requires an immediate user action
Event reporter
InfiniBox events are grouped by reporters, which are the InfiniBox component that generates them.
Event retention
• InfiniBox keeps 5M events
• Events are deleted in 100,000 increments
Event behavior
• The event is exposed to the event log 10 seconds after it is generated
Custom events
• Available templates
• CUSTOME_INFO_EVENT
• CUSTOM_WARNING_EVET
• CUSTOM_ERROR_EVENT
• CUSTOM_CRITICAL_EVENT
• Maximum event size: 100kb
Heartbeat event
• Sent to INFINIDAT via the preconfigured SMTP server once a day
• The content of the event informs INFINIDAT support on the state of the INfiniBox system
• The event does not contain user information
• SMTP
• SNMP
• SysLog
• Rule name
• Destination
• Target - a destination to where the notification is sent
• Target parameters - for example, an email address for SMTP rule
• Filter
• Event level - all of the events of this level will be sent
• Additional events - events that belong to a level that is not marked by this rule, and will be
sent
• Excluded events - events that belong to a level that is marked by this rule, and will not be
sent
SMTP server
Out-of-the-box, InfiniBox has a predefined INFINIDAT SMTP server.
17.3.1 SMTP
You can send the InfiniBox event notifications via Simple Mail Transfer Protocol (SMTP).
17.3.2 SNMP
For SNMP versions 1 and 2c you need to define a community. For SNMP version 3 you need to define
an SNMP Engine ID and a user name.
You also need to select the user-based security model among authentication and privacy,
authentication without privacy and no authentication and no privacy. Optionally, you may set the
authentication type, and whether to encrypt the events and a private key.
17.3.3 Syslog
Filter the list by code, level or reporter. State the code to list only the event codes without their details.
State the level and select among critical, error, warning and info. State the reporter and select among
block, custom, file, management, platform and REPLICATION.
• Run the command without parameters to get a full list of all of the event codes: event.codes
• Run the command specifying a code to see its details: eventcodes code=VOLUME_CREATED
Filter the query by time stamp, event ID, code, level and reporter.
• Timestamp
• Level
• Code
• Description
You can run the event in detailed mode, adding the following fields:
2. The Events screen opens.
18.1.2 Prerequisites
Download the software update package from http://repo.infinidat.com/#infinishell
In case that there is an available update, the will be an indicator on the screen.
19 Metadata
The result:
The result:
KEY VALUE
mappings keep-unmapped
20 Performance monitoring
InfiniBox provides visibility to key performance indicators. Each graph can monitor the system, a host, a
volume or a filesystem. The available indicators are: throughput, IOPS/FOPS, latency, read IOPS/FOPS,
write IOPS/FOPS and open requests (for SAN only).
Performance monitoring is done from the InfiniBox GUI, or through InfiniMetrics, an INFINIDAT VMware
plugin.
• All of the entities (either SAN or NAS on the same chart) in the InfiniBox system
• All of the entities (either SAN or NAS on the same chart) within a specific pool
• A specific host
• A specific filesystem or a volume
20.2.2 Prerequisites
• None
The break-down option is available from the Action menu to the right of the Counter, on the chart
legend.
The filter option is available from the Action menu to the right of the Counter, on the chart legend.
Each performance counter is a combination of a filter and a collector. The filter is used to slice-and-
dice the stream of I/O operations passing through the system, in order to define the subset of
operations that should be counted. For example, a filter that is limited to the SAN protocol type
matches all SAN I/O operations. A filter that is limited to the SAN protocol type and to a specific pool
matches only SAN I/O operations on that pool. The collector defines how to summarize the operations
matched by the filter, and which metrics to collect (e.g. IOPS, throughput per second, or average
latency). There are four types of collectors, suitable for different use cases:
• COUNTER - this is the simplest type of collector. It simply counts the operations that match the
filter.
• TOP - used to find out which entities in the system have the highest value in some parameter. For
example, which hosts are doing the most read IOPS, or which filesystems have the highest write
latencies.
• HISTOGRAM - counts operations that match the filter, separating them into "buckets" according
to some parameter. A typical use case would be to count the number of I/O operations per block
size (e.g. 4Kb, 8Kb, 16Kb etc.) or per type (read, write, xcopy etc.).
• AGGREGATOR - this collector counts operations across all entities of a specific type. For example,
it could collect write operations per volume in the system, or read operations per pool.
All collectors return performance counters in 1 second intervals, except for aggregators which use
10 second intervals by default.
The following steps are needed to create and use a performance counter:
1. Create a filter.
2. Add one or more filtering criteria to the filter.
3. Create a collector (attaching it to the filter).
4. Poll the collector periodically to retrieve the performance metrics.
5. Delete the collector when it is no longer needed.
A collector that isn't polled gets automatically garbage-collected after 500 seconds of inactivity (this
value is different in case of AGGREGATOR collectors - see below for details).
GET /api/rest/metrics/available_fields
{
"result": {
"available_filter_fields": [{
"name": "protocol",
"type": "enum",
"values": ["NFS", "NFS_QOS", "FC", "iSCSI"]
}, {
"name": "protocol_type",
"type": "enum",
"values": ["RMR", "SAN", "SAN_QOS"]
}]
},
"error": null,
"metadata": {
"ready": true
}
}
To create the filter we'll send a POST request to the filters endpoint, and specify the wanted protocol or
protocol type. For example to create filter which will apply to SAN I/O operations:
POST /api/rest/metrics/filters
{
"protocol_type": "SAN"
}
{
"result": {
"id": 35184372088996
},
"error": null,
"metadata": {
"ready": true
}
}
The response of the POST request above contains the id of the filter that was created. Using this id we
can discover the available filter fields that can be used for refining the filter:
GET /api/rest/metrics/filters/<filter_id>/available_fields
{
"result": {
"id": 35184372088996,
"available_filter_fields": [{
"name": "protocol",
"type": "enum",
"values": [
"FC", "iSCSI"
]
}, {
"name": "operation_category",
"type": "enum",
"values": [
"login", "other", "read", "unmap", "write", "writesame", "xcopy"
]
}, {
"name": "operation_type",
"type": "enum",
"values": [
"caw", "format_unit", "inquiry", "log_sense", "login", "mode_select",
"mode_sense", "persistent_reserve_in", "persistent_reserve_out", "read",
"read_buf", "read_capacity", "receive_copy_result", "release", "report_luns",
"request_sense", "reserve", "rtpg", "send_diagnostic", "start_stop_unit",
"sync_cache", "task_management_functions", "test_unit_ready",
"unmap", "verify", "write", "write_buf", "write_same", "xcopy"
]
}, {
"name": "scsi_status",
"type": "enum",
"values": [
"busy", "error", "good"
]
}, {
"name": "pool_id",
"type": "uint"
}, {
"name": "vol_id",
"type": "uint"
}, {
"name": "host_id",
"type": "uint"
},
.... SNIP ...
],
"available_collector_fields": [{
"name": "operation_size",
"unit": "B",
"description": "Total size of all SCSI operations (successful and failed)"
}, {
"name": "throughput",
"unit": "B/Sec",
"description": "Total size of successful SCSI operations"
}, {
"name": "external_latency",
"unit": "ms",
"description": "The total latency to complete the SCSI command, from the initial request was received
until the storage sent the final status.
External latency may increase due to host / fabric delays"
}
.... SNIP ...
}]
},
"error": null,
"metadata": {
"ready": true
}
}
The request above lists only the basic fields. To see the full list, add ?level=ADVANCED to the URL.
This document includes below a reference of all filter fields and collector fields per protocol / protocol
type.
We can now use the filter id and any of the available filter fields to further limit the I/O operations that
will be matched by our filter. For example if we want to count only read operations:
PUT /api/rest/metrics/filters/<filter_id>
{
"operation_category": "read"
}
{
"result": {
"id": 35184372088996
},
"error": null,
"metadata": {
"ready": true
}
}
It is not possible to send more than one filtering field per request. Send a separate PUT request for
each field.
POST /api/rest/metrics/collectors
{
"filter_id": 35184372088996,
"type": "COUNTER",
"collected_fields": ["ops", "throughput"]
}
{
"result": {
"id": 35184372089045,
"filter_id": 35184372088996,
"collected_fields": ["ops", "throughput"],
"type": "COUNTER"
},
"error": null,
"metadata": {
"ready": true
}
}
It is also possible to create a filter and a COUNTER collector using a single API request, without creating
the filter in advance:
POST /api/rest/metrics/collectors
{
"type": "COUNTER",
"filters": {
"protocol_type": "SAN",
"operation_category": "read"
},
"collected_fields": ["ops", "throughput"]
}
{
"result": {
"id": 35184372089047,
"filters": {
"protocol_type": "SAN",
"operation_category": "read"
},
"filter_id": 35184372089046,
"collected_fields": [
"ops",
"throughput"
],
"type": "COUNTER"
},
"error": null,
"metadata": {
"ready": true
}
GET /api/rest/metrics/collectors/data?collector_id=in:[<id>,<id>,...]
{
"result": {
"collectors": [{
"id": 35184372089043,
"fields": ["ops", "throughput"],
"data": [
[14451, 467937729],
[12736, 413005671]
],
"collector_type": "COUNTER",
"interval_milliseconds": 1000,
"end_timestamp_milliseconds": 1496922832312
}]
},
"error": null,
"metadata": {
"ready": true
}
}
The response contains a list of collectors, with one item for each collector id that was requested. Each
item includes the following fields:
• id - the collector id
• fields - names of the collected data fields
• data - a list of collected entries, one entry per second. Each entry is a list of values ordered
according to the field names that appear under fields.
• interval_milliseconds - the number of milliseconds covered by each entry in the data list.
• end_timestamp_milliseconds - the timestamp of the last entry in the data list, in milliseconds
since the epoch. Using the timestamp and the interval, it is possible to calculate the timestamp of
all entries in the list.
You can understand how these parameters work together by putting them into a sentence: Return the
top <max_results> <grouping_field> ordered by <sorting_field>.
POST /api/rest/metrics/collectors
{
"type": "TOP",
"filter_id": 35184372089056,
"collected_fields": ["ops", "throughput"],
"grouping_field": "vol_id",
"sorting_field": "ops",
"max_results": 10
}
{
"result": {
"id": 35184372089057,
"filter_id": 35184372089056,
"collected_fields": [
"ops",
"throughput"
],
"grouping_field": "vol_id",
"sorting_field": "ops",
"max_results": 10,
"sort_ascending": false,
"type": "TOP"
},
"error": null,
"metadata": {
"ready": true
}
}
GET /api/rest/metrics/collectors/data?collector_id=in:[<id>,<id>,...]
{
"result": {
"collectors": [{
"id": 35184372089057,
"fields": ["vol_id", "ops", "throughput"],
"data": [
[
["61321", 2794, 67253941],
["61317", 2352, 101169969],
["61319", 2324, 77666658]
],
[
["61321", 4636, 111570820],
["61319", 3479, 116310076],
["61317", 3471, 149286622]
]
],
"collector_type": "TOP",
"interval_milliseconds": 1000,
"end_timestamp_milliseconds": 1497258041312,
"grouping_field": "vol_id",
"sorting_field": "ops"
}]
},
"error": null,
"metadata": {
"ready": true
}
}
The response contains a list of collectors, with one item for each collector id that was requested. Each
item includes the following fields:
For example if we want to collect the number of I/O operations and the total throughput per SAN
operation category (read, write, xcopy, etc.):
POST /api/rest/metrics/collectors
{
"type": "HISTOGRAM",
"filter_id": 35184372089058,
"collected_fields": ["ops", "throughput"],
"histogram_field": "operation_category"
}
{
"result": {
"id": 35184372089061,
"filter_id": 35184372089058,
"collected_fields": ["ops", "throughput"],
"histogram_field": "operation_category",
"type": "HISTOGRAM"
},
"error": null,
"metadata": {
"ready": true
}
}
GET /api/rest/metrics/collectors/data?collector_id=in:[<id>,<id>,...]
{
"result": {
"collectors": [{
"id": 35184372089061,
"fields": ["ops", "throughput"],
"data": [
[
[641, 30521856], [3751, 111668224], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]
],
[
[1837, 87529598], [10901, 323443980], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]
]
],
"collector_type": "HISTOGRAM",
"interval_milliseconds": 1000,
"end_timestamp_milliseconds": 1497259383017,
"histogram_field": "operation_category",
"ranges": ["read", "write", "xcopy", "unmap", "writesame", "login", "other"]
}]
},
"error": null,
"metadata": {
"ready": true
}
}
The response contains a list of collectors, with one item for each collector id that was requested. Each
item includes the following fields:
xcopy 0 0
unmap 0 0
writesame 0 0
login 0 0
other 0 0
xcopy 0 0
unmap 0 0
writesame 0 0
login 0 0
other 0 0
• collected_fields - a list of field names to collect, out of the available collector fields for the filter's
protocol or protocol type.
• grouping_field - a filtering field that defines the type of entities we're interested in. For example
vol_id, pool_id, source_ip etc.
It is also possible to specify the interval_milliseconds to be used by the aggregator - see below.
For example if we want to collect the number of I/O operations and the total throughput for all
volumes:
POST /api/rest/metrics/collectors
{
"type": "AGGREGATOR",
"filter_id": 35184372089062,
"collected_fields": ["ops", "throughput"],
"grouping_field": "vol_id"
}
{
"result": {
"id": 35184372089063,
"filter_id": 35184372089062,
"collected_fields": ["ops", "throughput"],
"grouping_field": "vol_id",
"type": "AGGREGATOR"
},
"error": null,
"metadata": {
"ready": true
}
}
GET /api/rest/metrics/collectors/data?collector_id=in:[<id>,<id>,...]
{
"result": {
"collectors": [{
"id": 35184372089064,
"fields": ["vol_id", "ops", "throughput"],
"data": [
[
[61321, 42269, 1017175338],
[61319, 36030, 1207902580],
[61317, 36014, 1548901690]
],
[
[61319, 34874, 1169198774],
[61321, 41330, 994592385],
[61317, 34928, 1502204618]
]
],
"collector_type": "AGGREGATOR",
"interval_milliseconds": 10000,
"end_timestamp_milliseconds": 1497258041312,
"grouping_field": "vol_id"
}]
},
"error": null,
"metadata": {
"ready": true
}
}
The response contains a list of collectors, with one item for each collector id that was requested. Each
item includes the following fields:
The response above contains the following metrics, for all volumes that did any I/O:
Note that even though AGGREGATORS can collect data in multi-second intervals, the collected fields
contain values averaged over the entire interval. So In the table above, 42269 is the average number of
operations per second.
NFS
Filter fields
user_id uint
group_id uint
fs_entity_id uint
export_id uint
offset uint
source_ip uint
destination_ip uint
file_path uint[] The file_path parameter is a combination of the fs_id and the
file_path
treeq uint[] The treeq parameter is a combination of the fs_id and the treeq
pool_id uint
Collector fields
worker_time ms Average latency for all operations excluding waiting time in the
queue
sections_read n/a The total number of sections which have been read
sections_read_from_cache n/a The number of sections which have been read from cache
sections_read_from_ssd n/a The number of sections which have been read from ssd
sections_read_from_disk n/a The number of sections which have been read from disk
Collector fields
FC
Filter fields
pool_id uint
vol_id uint
lba uint
host_id uint
initiator_port_key uint
target_WWPN uint
target_port uint
source_ip uint
destination_ip uint
network_space_id uint
initiator_WWPN uint
initiator_IQN uint
Collector fields
operation_si bytes Total size of all SCSI operations (successful and failed)
ze
external_late ms The total latency to complete the SCSI command, from the initial request was
ncy received until the storage sent the final status. External latency may increase due to
host / fabric delays
internal_late ms The total latency incured waiting for the InfiniBox backend to complete the
ncy operation. Internal latency is not affected by host / fabric delays.
sections_rea n/a The total number of sections which have been read
d
sections_rea n/a The number of sections which have been read from cache
d_from_cach
e
sections_rea n/a The number of sections which have been read from ssd
d_from_ssd
sections_rea n/a The number of sections which have been read from disk
d_from_disk
average_ope bytes Average size of all SCSI operation (successful and failed)
ration_size
iSCSI
Filter fields
pool_id uint
vol_id uint
lba uint
host_id uint
initiator_port_key uint
target_WWPN uint
target_port uint
source_ip uint
destination_ip uint
network_space_id uint
initiator_WWPN uint
initiator_IQN uint
Collector fields
operation_si bytes Total size of all SCSI operations (successful and failed)
ze
external_late ms The total latency to complete the SCSI command, from the initial request was
ncy received until the storage sent the final status. External latency may increase due to
host / fabric delays
internal_late ms The total latency incured waiting for the InfiniBox backend to complete the
ncy operation. Internal latency is not affected by host / fabric delays.
sections_rea n/a The total number of sections which have been read
d
sections_rea n/a The number of sections which have been read from cache
d_from_cach
e
sections_rea n/a The number of sections which have been read from ssd
d_from_ssd
sections_rea n/a The number of sections which have been read from disk
d_from_disk
average_ope bytes Average size of all SCSI operation (successful and failed)
ration_size
RMR
Filter fields
replica_id uint
dataset_id uint
pair_dataset_id uint
node_id uint
Collector fields
sections_read_from_cache n/a The number of sections which have been read from cache
sections_read_from_disk n/a The number of sections which have been read from disk
sections_read_from_ssd n/a The number of sections which have been read from ssd
sections_read n/a The total number of sections which have been read
SAN
Filter fields
protocol enum • FC
• iSCSI
pool_id uint
vol_id uint
lba uint
host_id uint
initiator_port_key uint
target_WWPN uint
target_port uint
source_ip uint
destination_ip uint
network_space_id uint
initiator_WWPN uint
initiator_IQN uint
Collector fields
operation_si bytes Total size of all SCSI operations (successful and failed)
ze
external_late ms The total latency to complete the SCSI command, from the initial request was
ncy received until the storage sent the final status. External latency may increase due to
host / fabric delays
internal_late ms The total latency incured waiting for the InfiniBox backend to complete the
ncy operation. Internal latency is not affected by host / fabric delays.
sections_rea n/a The total number of sections which have been read
d
sections_rea n/a The number of sections which have been read from cache
d_from_cach
e
sections_rea n/a The number of sections which have been read from ssd
d_from_ssd
sections_rea n/a The number of sections which have been read from disk
d_from_disk
average_ope bytes Average size of all SCSI operation (successful and failed)
ration_size
SAN_QOS
Filter fields
qos_pool_id uint
qos_entity_id uint
resource_unit enum • bw
• io
Collector fields
interval_milliseconds
21 Quality of service
21.1.1 Introduction
InfiniBox system features a virtualized storage service that is shared by all hosts and applications.
InfiniBox accommodates high-performance requirements for multiple applications with varying
performance objectives allowing for fair resource allocation. QoS is available either at the single volume
level, or all of the volumes within a single pool. The QoS feature aligns the system performance to the
varying business needs, by enabling the user to restrict IOPS and throughput, or both to the relevant
entity. In addition, QoS solves the noisy neighbor problem by limiting the resources the entity can use.
The Quality of Service (QoS) provides a facility to limit the performance of volumes (either individually
or as part of a pool) on a per IOPS and/or throughput basis.
The QoS feature allows to establish performance tiers and to sustain high-performance needs, allowing
the user to differentiate performance levels to their applications.
• Max IOPS - the maximum number of IOPS that are allowed for a volume
• Max throughput - the maximum throughput that is allowed for a volume
• Burst factor - the factor of increased performance during the burst. The burst cannot exceed this
factor. See also: Burst
Any volume, or pool, in the InfiniBox system can be assigned to, or removed from a QoS policy.
The QoS policy applies restrictions only on FC-originated IOPS and throughput (not iSCSI).
If the host still does not slow down the pace of the requests, InfiniBox will reject the extraneous IO
requests (using the DEVICE_BUSY response).
21.1.4 Burst
The Burst option allows the entity with an assigned QoS policy to consume more IOPS (or throughput)
than the Max IOPS (and Max Throughput) for a short period of time. An entity that has not consumed
the entire allowed performance gains allowance that can be used later to exceed the QoS max limits.
The burst factor determines the amount of performance that the entity (either a volume or a pool) is
allowed to consume above its max limits. The actual IOPS (or Throughput) during the burst cannot
exceed the multiplication of the burst factor by the max IOPS (or Throughput).
Burst allowance
The burst allowance is determined by the lowest of the following two factors:
1. The area marked with 1, represents the number of IOPS (or throughput) that the entity did not
consume although the policy allowed that
2. The area marked with 2, represents the number of IOPS (or throughput) that is available for the
entity, for above-the-maximum consumption. This number is proportional to the amount of not-
consumed IOPS (or throughput)
Burst factor
The burst is also limited by the burst factor:
SCSI commands that are not accounted for credits and are not limited:
• SCSI-INQUIRY
• Test-unit-ready
SCSI commands that are not accounted for throughput (they are accounted for IOPS only):
• WRITE_SAME
• UNMAP
Note: The replication throughput rate can be limited from the Network Space. To set the network space
rate limit, see: Modifying a network space.
In the following example, a pool with a QoS policy with max IOPS has 3 volumes. Each of the 3 volumes
accepts 1,000 IOPS. The graph below displays a stacked view of the volumes IOPS, where cumulatively
the 3 volumes accept 3,000 IOPS. At this point (time t0)The cumulative IOPS of all of the volumes is
below the policy's max IOPS limit of 5,000. Next, at time t1, each of the volumes accepts an increasing
amount of IOPS. If the volumes did not have the constraint of the pool QoS policy, they could accept
more IOPS. However, as the volumes are subject to the pool QoS policy, they fairly share the allowed
IOPS (5,000 IOPS) between them.
If the pool-volumes QoS policy allows burst, the burst is allowed to all of the pool's volumes.
The volume can be policed by a single volume policy and a single pool-volumes policy (that is imposed
on the pool that the volume belongs to) at the same time. A volume that is both individually policed and
belongs to a policed pool, is affected by both policies. Whenever one of the limits is reached, the
volume performance is affected.
Note: only the pool's volumes are affected by the pool's QoS policy. The pool's filesystems are not
affected. Their OPS and throughput are not accounted.
Note: burst duration is available from the API only, and is hidden by CLI/GUI
GUI instructions
1. To access the QoS screen: on the InfiniBox GUI, click the Settings icon on the menu to the left.
Then, click the QoS tab.
GUI Instructions
1. To access the QoS screen: on the InfiniBox GUI, click the Settings icon on the menu to the left.
Then, click the QoS tab.
2. Click a policy. The policy screen opens.
3. Click Assign Volume or Assign Pool.
4. Select an entity from the list and click Assign. The entity is assigned.
GUI Instructions
1. To access the QoS screen: on the InfiniBox GUI, click the Settings icon on the menu to the left.
Then, click the QoS tab.
2. Click a policy. The policy screen opens.
3. Select Modify Policy from the Actions menu.
4. Change any of the policy's attributes, but the Type.
5. Click Modify. The policy is modified.
GUI Instructions
1. To access the QoS screen: on the InfiniBox GUI, click the Settings icon on the menu to the left.
Then, click the QoS tab.
2. Click a policy. The policy screen opens.
3. Select Delete Policy from the Actions menu.
4. Approve the warning message.
5. The policy is deleted.
• Policies - several policies with various values of the max_iops parameter, named 9000iops,
5000iops, 3000iops and 1000iops
• InfiniShell - to create the pool, volumes and policies and to assign and unassign policies to the
pool and its entities
• InfiniMetrics - to view the impact of the policies assignment on the host writes
21.4.2 Preparations
Prior to the policies assignment, we query for volumes to verify that none of them is assigned to a
policy.
qos_policy.query
All of the volumes accept host writes. The cumulative 30,000 IOPS are evenly divided among all
volumes. The 3 volumes are visible on InfiniMetrics.
The following numbered list refer to the numbers on the next image:
2a. The 3 volumes have exactly the same IOPS so the graph lines overlap (only v3 (color purple) is
visible)
2b. When v1 is assigned to a policy that limits the IOPS to 5,000 (from the nearly 10,000 IOPS it
accepted to the host prior to the policy assignment), v2 and v3 accept more host writes
2c. When v2 is assigned to a policy that limits the IOPS to 3,000, v3 accepts more writes
2d. v3 is assigned to a policy that limits the IOPS to 1,000
Next, the total IOPS that are accepted by the 3 volumes are aligned to 5,000 + 3,000 + 1,000 = 9,000
IOPS.
• The pool that the 3 volumes belong to is assigned to a policy with max 9,000 IOPS
• Volume v2, that was unassigned in the previous step, is assigned to a policy with max 1,000 IOPS
(that same policy that v3 is assigned to)
As a result, the total IOPS that are imposed by the policy the pool is assigned to is 9,000. This number is
divided between volumes v2 and v3 that are assigned to a policy, and volume 1 that is not assigned to a
policy.