Installing ScaleIO 1.21 in a Windows Environment

A few weeks ago the latest version of ScaleIO was released (version 1.21) and one of the major new features of it was official Windows Server support. ScaleIO 1.21 supports the following flavors of Windows:

  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2


A quick note before I start, up until recently my friend and colleague Drew Tonnesen has guest-posted on this blog on VMAX-VMware related topics. A week ago he started his own blog where he will continue to post his thoughts and walk-throughs at Please check it out and follow it!

First off you can find the bits here for download as well as the release notes and user guide:

Like with other OSes you have a few different options on how to install ScaleIO which mostly converge on using the provided Python script. Currently the Python script requires the Windows Domain Administrator credentials to run and install the executables on target Windows hosts (local admin is fine though if they are not on a domain). Furthermore you need to install Python to of course run the script. Using the domain admin was not an option for me, so I needed another way to do it. So I looked into seeing if there was another way and there is–using the SCLI and a few other things.

At scale I would say using the Python script is best (especially in a heterogeneous OS environment) but the domain admin requirement is probably a show-stopper for many, so these steps might be the best alternative for pure Windows setups. At the very least if you are adding Windows to your existing ScaleIO environment some of this will come in handy if you are only adding SDCs and SDSs. I am going to try to put a PowerShell script together to help automate this at some point so look for that in a future post.

So let’s start.

Once you have downloaded and unzipped the ScaleIO files navigate to the folder containing the Windows MSI file. It will be here:

<unzip root location>ScaleIO-v1.21WIN_2008R2_2012_2012R2ECS-1.21-0.21.WIN2K8R2ECSpackages

Copy this to every Windows Server you want to configure. In my environment I have three Windows Server 2012 R2 machines. One will be a primary MDM and a SDS, another will be the secondary MDM and a SDS and the third will be the tie breaker, a SDS and a SDC. Run the MSI on each Windows machine and choose the appropriate installer options for that Windows hosts.


Pretty straight forward. By default the installer will place the programs in C:Program Filesscaleio but this can be changed if you want. Note that occasionally I have seen the install fail–I have resolved this by starting the MSI from a command prompt started with elevated administrator permissions. This seems to happen when ScaleIO has been installed and then uninstalled and something doesn’t get completely removed. If the SDC in particular fails to install see if it is already in the device manager (devmgmt.msc) and if so remove it manually (uninstall the device and driver) and then re-attempt the install.

In addition to the CLI and other files the installation creates and starts a few services. The MDM install will add a service called “scaleio meta-data manager” and “scaleio shared memory server”.  The SDS install will add “scaleio data server” and the tie breaker will add “scaleio tie breaker”. The SDC does not add a service but instead a new storage controller and driver called “ScaleIO HBA device”.

sdc mdm[


If you want to install the Call Home process you must first install Active Python which can be found at the below link. The Call Home service will be called “ECS Call Home”. Download Active Python here:

Once all of the parts are installed it is time to configure the ScaleIO setup. This can be done using the SCLI. On Windows though the CLI root command is actually “cli” not “scli” like in other versions of ScaleIO. The CLI is located in <install location>C:Program FilesScaleIOECSMDMbin.

The first thing to do is to configure the MDMs. Run the following commands to configure the primary and secondary MDMs (I am running this from my server with an MDM installed).

cli --add_primary_mdm --primary_mdm_ip
cli --add_secondary_mdm --secondary_mdm_ip

Now add the tie breaker:

cli --add_tb --tb_ip

Change it to cluster mode:

cli --switch_to_cluster_mode --mdm_ip

Set the license:

cli --set_license --license_key XXXXXXXXXXXXXXXXXXXXXX

Note that configuring a virtual IP is not currently supported if the MDMs are on Windows so you can skip that step entirely in pure Windows environments. If the MDMs are on Linux you may configure a virtual IP.

Create a protection domain:

cli --add_protection_domain --protection_domain_name scio-pd1

Now we need to add the SDS and along with that some storage. ScaleIO with Windows requires that the devices have a drive letter but not be formatted, this can be achieved through the CLI diskpart or through the GUI diskmgmt.msc.



Do this for every device that you want to be added to a storage pool on each SDS Windows server. I have one device per SDS and I have assigned them all the drive letter E.

So to add the SDSs:

cli --add_sds --sds_ip --sds_name scio-sds1 --protection_domain_name scio-pd1 --device_name E
cli --add_sds --sds_ip --sds_name scio-sds2 --protection_domain_name scio-pd1 --device_name E
cli --add_sds --sds_ip --sds_name scio-sds3 --protection_domain_name scio-pd1 --device_name E

I didn’t supply a storage pool name so they are going into the default pool you may certainly create a new one of course.

Now create a volume:

cli --add_volume --size_gb 512 --volume_name scio-vol1 --protection_domain_name scio-pd1

Next we have to add the SDC to the environment. This cannot be done via this CLI. Instead log onto each server that is going to be a SDC and run this following command locally from the SDC:

"C:Program Filesscaleioecssdcbindrv_cfg" --add_mdm --ip

This will add the SDC to your MDM, repeat for each SDC. You can verify it was added by going back to your MDM and running:

cli --query_all_sdc

You will see something like:

Query all SDC returned 1 SDC nodes.
SDC ID: cf07ffff00000000 IP: State: Connected GUID: 708D7037-9B7B-2F45-9C31-6E7AF14EC2D9

Now we can map the volume to the new SDC. Get the SDC ID (or IP) from the previous command and map the volume like so:

cli --map_volume_to_sdc --volume_name scio-vol1 --sdc_id cf07ffff00000000

One thing to remember is that you should not use the shortcut “–all_sdcs” in Windows environments when mapping volumes. Volumes mapped using the –all_sdcs switch will not support the SCSI-3 protocol and therefore will be unavailable with a Windows cluster. Therefore you must map them each individually to each SDC.

Now if you log into your Windows Server that has the SDC the new ScaleIO device will appear and is ready to use (you might need to rescan)!


As you can see from the image the device appears as a Fibre Channel SCSI block device.

That’s pretty much it! I am going to work on seeing if I can automate this and when I get around to it I will post on it. Furthermore I plan on posting on a Windows configuration that does use the Python script. Stay tuned.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.