Backup and Data Protection

StorSimple 8k series as a backup target?

19 December 2016

After a conference call with Microsoft Azure StorSimple product team, they explained:

  •  “The maximum recommended full backup size when using an 8100 as a primary backup target is 10TiB. The maximum recommended full backup size when using an 8600 as a primary backup target is 20TiB”
  • “Backups will be written to array, such that they reside entirely within the local storage capacity”

Microsoft acknowledge the difficulty resulting from the maximum provisionable space being 200 TB on an 8100 device, which limits the ability to over-provision thin-provisioned tiered iSCSI volumes when expecting significant deduplication/compression savings with long term backup copy job Veeam files for example.


  • When used as a primary backup target, StorSimple 8k devices are intended for SMB clients with backup files under 10TB/20TB for the 8100/8600 models respectively
  •  Compared to using an Azure A4 VM with attached disks (page blobs), StorSimple provides 7-22% cost savings over 5 years

15 December 2016

On 13 December 2016, Microsoft announced the support of using StorSimple 8k devices as a backup target. Many customers have asked for StorSimple to support this workload. StorSimple hybrid cloud storage iSCSI SAN features automated tiering at the block level from its SSD to SAS to Azure tiers. This makes it a perfect fit for Primary Data Set for unstructured data such as file shares. It also features cloud snapshots which provide the additional functionality of data backup and disaster recovery. That’s primary storage, secondary storage (short term backups), long term storage (multiyear retention), off site storage, and multi-site storage, all in one solution.

However, the above features that lend themselves handy to the primary data set/unstructured data pose significant difficulties when trying to use this device as a backup target, such as:

  • Automated tiering: Many backup software packages (like Veeam) would do things like a forward incremental, synthetic full, backup copy job for long term retention. All of which would scan/access files that are typically dozens of TB each. This will cause the device to tier data to Azure and back to the local device in a way that slows things down to a crawl. DPM is even worse; specifically the way it allocates/controls volumes.
  • The arbitrary maximum allocatable space for a device (200TB for an 8100 device for example), makes it practically impossible to use the device as backup target for long term retention.
    • Example: 50 TB volume, need to retain 20 copies for long term backup. Even if change rate is very low and actual bits after deduplication and compression of 20 copies is 60 TB, we cannot provision 20x 50 TB volumes, or a 1 PB volume. Which makes the maximum workload size around 3TB if long term retention requires 20 recovery points. 3TB is way too small of a limit for enterprise clients who simply want to use Azure for long term backup where a single backup file is 10-200 TB.
  • The specific implementation of the backup catalog and who (the backup software versus StorSimple Manager service) has it.
  • Single unified tool for backup/recovery – now we have to use the backup software and StorSimple Manager, which do not communicate and are not aware of each other
  • Granular recoveries (single file/folder). Currently to recover a single file from snapshot, we must clone the entire volume.

In this article published 6 December 2016, Microsoft lays out their reference architecture for using StorSimple 8k device as a Primary Backup Target for Veeam


There’s a number of best practices relating to how to configure Veeam and StorSimple in this use case, such as disabling deuplication, compression, and encryption on the Veeam side, dedicating the StorSimple device for the backup workload, …

The interesting part comes in when you look at scalability. Here’s Microsoft’s listed example of a 1 TB workload:


This architecture suggests provisioning 5*5TB volumes for the daily backups and a 26TB volume for the weekly, monthly, and annual backups:


This 1:26 ratio between the Primary Data Set and Vol6 used for the weekly, monthly, and annual backups suggests that the maximum supported Primary Data Set is 2.46 TB (maximum volume size is 64 TB) !!!???


This reference architecture suggests that this solution may not work for a file share that is larger than 2.5TB or may need to be expanded beyond 2.5TB

Furthermore, this reference architecture suggests that the maximum Primary Data Set cannot exceed 2.66TB on an 8100 device, which has 200TB maximum allocatable capacity, reserving 64TB to be able to restore the 64TB Vol6


It also suggests that the maximum Primary Data Set cannot exceed 8.55TB on an 8600 device, which has 500TB maximum allocatable capacity, reserving 64TB to be able to restore the 64TB Vol6


Even if we consider cloud snapshots to be used only in case of total device loss – disaster recovery, and we allocate the maximum device capacity, the 8100 and 8600 devices can accommodate 3.93TB and 9.81TB respectively:



Although the allocation of 51TB of space to backup 1 TB of data resolves the tiering issue noted above, it significantly erodes the value proposition provided by StorSimple.

Powershell script to backup all user databases on current SQL server

This script will backup all user databases on the current SQL server. The Input region accepts values for 2 variables:

$Destination ==>This is the folder where backup files will be stored
$Retension ==> Number of days to keep backup files. Backup files older than this will be deleted. If you don’t want any files deleted, make this number high like 99999

The script creates a folder for each database under the $Destination folder. Backup file name contains the database name and date/time of backup. For example, for database ‘INM’, backup file would be ‘H:\SQL-Backup\INM\INM-20160605_081237AM.bak’
Script returns an object collection. Each object has the following properties:

  • ServerName
  • DatabaseName
  • RecoveryModel
  • BackupDateTime(yyyyMMdd_hhmmsstt)
  • BackupDuration(hh:mm:ss)
  • BackupFileSize(MB)
  • BackupFileSize

Sample script output:


Also see script to list SQL Recovery Model of all databases on current server, script to modify and list SQL Recovery Model of all databases, and this related post.

SQL backup options and feature details

Simple Recovery Model


  • Transaction log is mainly used for crash recovery (no log backup)
  • Transaction log keeps all records after last backup (full or differential)
  • Supports Full and Differential backups only
  • Changes since last backup will be lost
  • Example: Full on Saturdays and differentials on weekdays.


  • Automatically reclaims log space


  • The following features are not supported under the Simple Recovery Model:
    • Log shipping
    • AlwaysOn Database mirroring
    • Point-in-time restores
  • Changes since the most recent backup cannot be recovered

To view a database Recovery Model:

SELECT recovery_model_desc FROM sys.databases WHERE name = ‘MyDBName’


Using the SBSQL module:

Get-SQLRecoveryModel -DBName MyDBName -ServerName MySQLServerName | FT -a

To view Recovery Model of all databases on current SQL server, use the Get-SQLRecoveryModel powershell script.

Sample script output:


To change a database Recovery Model:


This will change the Recovery Model for database ‘MyDBName’ to Simple. Valid options are Simple, Full and Bulk_Logged


Using the SBSQL module:

Set-SQLRecoveryModel -DBName MyDBName -RecoveryModel Simple -ServerName MySQLServerName

To modify Recovery Model of all user databases on current SQL server use the Set-SQLRecoveryModel script.

StorSimple 8k Device Software Version 0.2 (17361)

As of August 12, 2015, the version of StorSimple 8k software is 0.2 (17361). You can view this information in the Azure Management Interface. Click the device node/Dashboard:StorSimple-17361bThis information can also be viewed from the device Powershell/serial interface using the Get-HCSSystem cmdlet:StorSimple-17361c

This version of the device software comes with this set of Powershell cmdlets:StorSimple-17361aFor more information on Powershell remoting into StorSimple 8k devices see this post.

StorSimple 8100 installation step by step


Due to a ‘known issue’, it’s recommended not to configure interface Data 1 and to leave it disabled until the next major StorSimple software release (version 1.2)

In this post, I will go over StorSimple 8100 array step by step installation. StorSimple 8k series is the first generation running Windows 2012 R2 core OS and has the advantages of having 10 Gbps Network interfaces and interoperability with SVA (StorSimple Virtual Array). For more background on StorSimple see these posts.

StorSimple 8100 is a 2 RU iSCSI SAN that seamlessly extends to the cloud. It has SSD, SATA tiers in the box and uses Azure as the third tier. Data is automatically tiered at the block level where most frequently accessed blocks are stored in the linear SSD tier, less frequently accessed blocks are automatically tiered down to the deduplicated SSD tier, less frequently accessed blocks are automatically tiered down to the deduplicated and compressed SAS tier, and finally less frequently accessed blocks are automatically tiered down to the deduplicated, compressed, and encrypted Azure tier.

All local storage in the StorSimple array enjoys RAID 10 configuration protection and speed, fully redundant controllers, power supplies, and redundant data paths both on the iSCSI and network sides.

Racking and stacking:

Along with the array comes this box of goodies:

WP_20150316_09_55_25_ProThe rails are easy to install requiring 1 screw on each of the front and back of right and left sides:

WP_20150316_10_08_39_Proand 2 screws in the front to keep the array from sliding out:

WP_20150316_10_09_32_ProThe package comes with 7 screws, so there’s an extra one..

Power connections are straight forward. 2 cables should connect each of the power supply units to 20 AMP outlets on 2 separate fault domains. For more details on StorSimple power requirements see this link.


The package comes with transceivers that plug in to the 10 Gbps data ports:

WP_20150316_10_15_06_ProYou will need to get 4x twinax cables like this one – not included in the package (assumes your 10 Gbps switch uses SFP+ ports):

WP_20150316_10_15_38_ProSlide in one end of each of the 4 twinax cables into a transceiver like so:

WP_20150316_10_15_55_ProThere’s only one way this will ‘click’, so don’t force it

WP_20150316_10_16_18_ProPlug the ends with the transceiver into the purple 10 Gbps ports marked as Data2 and Data3 on the back of the StorSimple array:

WP_20150316_10_17_28_ProPlug the other sides of the 2 twinax cables connected to Data2 ports to one 10 Gbps switch, and the other sides of the 2 twinax cables connected to Data3 to another 10 Gbps switch. This will provide full wire and switch redundancy. These 4 ports on the 2 switches should have access to your iSCSI vlan/subnet.

Similarly, wire 2 ports marked Data0 to 1 Gbps ports on one switch and ports marked Data1 to 1 Gbps ports on another switch. These 4 ports will need to have access to your data (corporate/production) network and require outbound access to the Internet on the following ports:

  • UDP port 53 for DNS
  • TCP port 80 for HTTP
  • UDP port 123 for NTP
  • TCP port 443 for HTTPS/SSL
  • TCP port 9354 for StorSimple Manager

If you have to setup outbound firewall rule(s) for StorSimple,

  • The source IPs will be the 4 IPs assigned to Data 0, Data 1, Fixed Controller 0 IP and Fixed Controller 1 IP
  • The destination ports will be UDP 53 and 123, and TCP 80, 443, and 9354
  • The destination IPs will be ‘any’. I know most organizations will not like that, but this is practically what most end up doing here. Alternatively, the destination IPs can be all Azure IP subnets. Microsoft makes this IP list available for download, but it changes quite frequently.

The array features active/passive architecture. This means only one controller will be on at a time, with its 2x 10 Gbps ports and 2x 1 Gbps ports. So, although we wired 8 ports, we require 6 IP addresses. 4 on the data/vlan/subnet side (for data 0, data 1, and controller 0 fixed IP and controller 1 fixed IP), and 2 on the iSCSI/vlan/subnet.

For more information on wiring a StorSimple 8k series array see this document.

Next, power on the array.

Serial setup:

Initial array setup is done via serial interface and serves mainly to assign the array IP addresses. Everything after that is done from the Azure management interface.

The recommended setup is to connect both the serial cables to the serial ports on the 2 controllers of the array and wire the other side to a device in the data center that has a serial port.

WP_20150316_13_34_50_ProThis provides remote access to the serial ports if that’s ever needed. Other options include serial over IP devices. The image above shows 1 port connected. To ensure access, wire up both serial ports.

On the server (or laptop) where the serial port is connected, start a connection using Putty for example:


Select the language to use, like ‘1’ for English


Enter ‘1’ to login with full access:


Type in ‘Password1’ to continue:


After successful login, the following prompt is presented:


Type in ‘Invoke-HcsSetupWizard’ as suggested:


Hit ‘Enter’ to accept the default choice and configure IPv4 on interface Data0

Enter the IP address you would like to assign to interface Data0, subnet mask, gateway, DNS.


Hit ‘Enter’ to accept the default time server ‘’ and ‘Enter’ again to bypass configuring a web proxy.

Change the default administrator password:


Set a password for StorSimple Snapshot Manager:

Serial09The next step requires us to login to Azure management interface to obtain our StorSimple Manager service registration key:





StorSimple 8k wish list (updated 3/28/2016)

Having done several StorSimple installation and data migration for enterprise clients, I came across a number of features that would be nice to have in the next StorSimple software update. I will be dating each item. These requests apply to the StorSimple 8k series (8100 and 8600 models).

  • 3/28/2016Resolve the issue of high latency IO’s seeming to block/impede low latency IO’s
  • 3/28/2016: More visibility into the device tiering metrics. Simply put, a storage admin needs to know when a StorSimple device is ‘full’ and is tiering off blocks from the primary data set to Azure. This knowledge is critical to avoid the situation described above. A metric of the amount of space available before the device is full, is even better to help provide predictability before reaching that point.
  • 3/28/2016: ‘Cloud Pinned Volume’ feature would be very helpful. This should allow the StorSimple storage admin to provision an iSCSI volume that resides always in Azure and does not affect the device heat map.
  • 5/1/2015: Need a way to backup and restore a StorSimple array configuration. This was an available feature on the 5k and 7k series arrays but is currently missing in the 8k series arrays. I’m; however; working on Powershell scripts to do just that.
  • 5/1/2015: Need a way to browse a comprehensive backup catalog and be able to perform a granular restore at the file level. This has been requested by several customers. As it stands today, to recover a single file from a cloud snapshot, we must:
    • Know what volume it’s on. This information is not always available, particularly in situations where the file system is presented to client computers under a virtual directory structure such as that provided by F5 ARX
    • Clone the entire volume in the Azure Management Interface. This incurs unnecessary time and egress Azure bandwidth costs. It negatively impacts RTO (Recovery Time Objective)
    • Manually locate and copy over the file(s) to be recovered in Windows Explorer on the Windows file server.
    • Manually do post recovery cleanup, which includes offlining the cloned iSCSI volume on the Windows file server, offlining the cloned volume in Azure StorSimple Management Interface, and deleting the cloned volume.
  • 5/1/2015: SVA is too slow. The StorSimple Virtual Array is currently too slow. Several clients have voiced a concern about that. SVA is spun up as an A3 VM in Azure, which has 4 processor cores and 7 GB memory.
    • 3/29/2016: With the release of SVA 8020 using SSD storage, we see better performance. However, SVA remains a DR option mainly or for workloads that require low IO.
  • 5/1/2015: SVA has 1 network interface. This is a problem because it means both network and iSCSI traffic are mixed and run on the same virtual NIC. It also means we have no path redundancy, fault tolerance, or load balancing.
  • 5/1/2015: Need high availability for SVA. SVA is currently a single point of failure. Need to be able to use something like Azure Availability Set support to make the SVA highly available.
  • 5/1/2015: Need SVA to support more than 30 TB maximum. Currently an SVA has a 30 TB maximum storage capacity, which means if we’re to support volume recovery in Azure, we must have volumes under 30 TB in size.
  • 5/7/2015: Need clarity on deduplication/compression in the 8k series, both the on-prem and Azure tiers. This is not a request to estimate or predict disk space savings due to dedup/compression. This is a request to show actual dedup/compression ratios in already installed systems.

Wishes that came true !

  •  5/1/2015: Need a way to gracefully power down a StorSimple array. This may be trivial, but there’s no where on the physical array to gracefully shut it down. No where in Azure to power it down, no where in Powershell (both the limited set of commands that run on the array and the StorSimple commands in the Azure PS module version 0.8.16. The only way to power it down now is to turn off each of the 2 power supply units on the back of the array.
    ==> solution: using the software, shutdown both controller 0 and controller 1. This can be done from the Azure Management Interface:
    Under the device node, click Maintenance on top/right, then Manage Controllers at the bottom center:Shutdown01Then pick Shut Down Controller from the Select Action drop down menu.Shutdown02
    This can also be done from the device Powershell/serial interface using the Stop-HCSController cmdlet:
    Stop-HcsController -ControllerId Controller0
    Stop-HcsController -ControllerId Controller1
  • 5/1/2015: Need to be able to spin up and use StorSimple Virtual Arrays in Azure without the requirement to have a physical array. Again this feature has been requested by several clients.
    This is now an available feature as the OVA (On-Premise Virtual Array) which came out with StorSimple Software version 2.0 release


Connecting to StorSimple 8k using Powershell

StorSimple 8k series Cloud Integrated Storage Arrays are typically managed from Azure StorSimple Manager. However, in some cases we may need to run Powershell commands directly against the array itself as in troubleshooting situations. This script establishes PS connectivity to a StorSimple 8k array. The script can be downloaded from the Microsoft Script Center Repository.



The array runs a version of Windows 2012 R2 server core OS. It’s not domain joined. As a typical 2012 R2 server, it comes with Remote PS enabled. Line 11 adds the array to the local trusted hosts on the management computer. Lines 17-21 receive, encrypt and save the array admin password for future use. Lines 24-26 establish a remote PS session with the array.

SS21We can now run PS commands against the array. This is an alternative way of array management to using a serial interface as used in this post.

For example:

Invoke-Command -Session $StorSimpleSession { Get-Command }  | sort name | FT -a

shows the available commands on the StorSimple 8k series array, which runs a limited version of Powershell.


For more information see Connect remotely to your StorSimple device

StorSimple 5k/7k series training video

This is a recording of a training session I did recently. It covers the common administrative tasks that may be needed to manage and use StorSimple 5k/7k series array. For more information on StorSimple see this post.

Summary of tasks covered include:

  • How to provision LUNs/iSCSI volumes
  • How to add it/present it to server(s)
  • How to expand LUN/iSCSI volume
  • Setup volume groups and protection policies for backup and DR

It also goes over best practices and recommended settings.

Azure, Veeam, and Gridstore, a match made in heaven!?

Microsoft Azure currently provides the best quality public cloud platform available. In a 2013 industry report benchmark comparison of performance, availability and scalability, Azure came out on top in terms of read, and write performance of Blob storage. 


AzurePS19Veeam is a fast growing software company that provides a highly scalable, feature-rich, robust backup and replication solution that’s built for virtualized workloads from the ground up including VMWare and Hyper-V virtual workloads. Veeam has been on the cutting edge of backup and replication technologies with unique features like SureBackup/verified protection, Virtual labs, Universal Application Item Recovery, and well-developed reporting. Not to mention a slew of ‘Explorers‘ like SQL, Exchange, SharePoint, and Active Directory Explorer. Veeam Cloud Connect is a feature added in version 8 in December 2014 that allows independent public cloud providers the ability to provide off-site backup for Veeam clients.

AzurePS20Gridstore provides a hardware storage array optimized for Microsoft workloads. At its core, the array is composed of standard rack-mount servers (storage nodes) running Windows OS and Gridstore’s proprietary vController which is a driver that uses local storage on the Gridstore node and presents it to storage-consuming servers over IP.

The problem:

Although a single Azure subscription can have 100 Storage Accounts, each can have 500 TB of Blob storage, a single Azure VM can have a limited number of data disks attached to it. Azure VM disks are implemented as Page Blobs which have a 1TB limit as of January 2015. As a result, an Azure VM can have a maximum of 32 TB of attached storage.


Consequently, an Azure VM is currently not fully adequate for use as a Veeam Cloud Connect provider for Enterprise clients who typically need several hundred terabytes of offsite DR/storage.

Possible solution:

If Gridstore is to use Azure VMs as storage nodes, the following architecture may provide the perfect solution to aggregate Azure storage:

(This is a big IF. To my knowledge, Gridstore currently do not offer their product as a software, but only as an appliance)


  • 6 VMs to act as Gridstore capacity storage nodes. Each is a Standard A4 size VM with 8 cores, 14 GB RAM, and 16x 1TB disks. I picked Standard A4 to take advantage of a 500 IOPS higher throttle limit per disk as opposed to 300 IO/disk for A4 Basic VM.
  • A single 80 TB Grid Protect Level 1 vLUN can be presented from the Gridstore array to a Veeam Cloud Connect VM. This will be striped over 6 nodes and will survive a single VM failure.
  • I recommend having a maximum of 40 disks in a Storage Account since a Standard Storage account has a maximum 20k IOPS.
  • One A3 VM to be used for Veeam Backup and Replication 8, its SQL 2012 Express, Gateway, and WAN Accelerator. The WAN Accelerator cache disk can be built as a single simple storage space using 8x 50 GB disks, 8-columns providing 480 MB/s or 4K IOPS. This VM can be configured with 2 vNICs which a long awaited feature now available to Azure VMs.
  • Storage capacity scalability: simply add more Gridstore nodes. This can scale up to several petabytes.

Azure cost summary:

In this architecture, Azure costs can be summarized as:


That’s $8,419/month for 80 TB payload, or $105.24/TB/month. $4,935 (59%) of which is for Page Blob LRS 96.5 TB raw storage at $0.05/GB/month, and $3,484 (41%) is for compute resources. The latter can be cut in half if Microsoft offers 16 disks for Standard A3 VMs instead of a maximum of 8.

This does not factor in Veeam or Gridstore costs.

Still, highly scalable, redundant, fast storage at $105/TB/month is pretty competitive.

November 2014 update rollup for Windows RT/8/2012 breaks VSS backup – hot fix

November 2014 update rollup for Windows RT, Windows 8, and Windows Server 2012 appears to have some issues that cause VSS based backup to break.

Error messages have been ovserved like:

EventId 12366 – VSS – An unhandled exception was encountered while processing a VSS writer event callback method. The VSS writer infrastructure is in an unstable state.


EventId 2034 – MSExchangeRepl – The Microsoft Exchange Replication service VSS Writer when processing the backup completion event.

Microsoft has acknowledged the issue and released hot fix KB2996928.