Windows Server 2012 and Windows Storage Server 2012 offer an integrated iSCSI Target service that can be used with OpenStack Block Storage in your stack. Being entirely a software solution, consider it in particular for mid-sized networks where the costs of a SAN might be excessive.
The Windows Block Storage driver works with OpenStack Compute on any
hypervisor. It includes snapshotting support and the boot from volume
feature.
This driver creates volumes backed by fixed-type VHD images on Windows Server 2012 and dynamic-type VHDX on Windows Server 2012 R2, stored locally on a user-specified path. The system uses those images as iSCSI disks and exports them through iSCSI targets. Each volume has its own iSCSI target.
This driver has been tested with Windows Server 2012 and Windows Server R2 using the Server and Storage Server distributions.
Install the cinder-volume
service as well as the required Python components
directly onto the Windows node.
You may install and configure cinder-volume
and its dependencies manually
using the following guide or you may use the Cinder Volume Installer
,
presented below.
In case you want to avoid all the manual setup, you can use Cloudbase
Solutions’ installer. You can find it at
https://www.cloudbase.it/downloads/CinderVolumeSetup_Beta.msi. It installs an
independent Python environment, in order to avoid conflicts with existing
applications, dynamically generates a cinder.conf
file based on the
parameters provided by you.
cinder-volume
will be configured to run as a Windows Service, which can
be restarted using:
PS C:\> net stop cinder-volume ; net start cinder-volume
The installer can also be used in unattended mode. More details about how to use the installer and its features can be found at https://www.cloudbase.it.
The required service in order to run cinder-volume
on Windows is
wintarget
. This will require the iSCSI Target Server Windows feature
to be installed. You can install it by running the following command:
PS C:\> Add-WindowsFeature
FS-iSCSITarget-ServerAdd-WindowsFeatureFS-iSCSITarget-Server
Note
The Windows Server installation requires at least 16 GB of disk space. The volumes hosted by this node need the extra space.
For cinder-volume
to work properly, you must configure NTP as explained
in Configure NTP.
Next, install the requirements as described in Requirements.
Git can be used to download the necessary source code. The installer to run Git on Windows can be downloaded here:
https://git-for-windows.github.io/
Once installed, run the following to clone the OpenStack Block Storage code:
PS C:\> git.exe clone https://git.openstack.org/openstack/cinder
The cinder.conf
file may be placed in C:\etc\cinder
. Below is a
configuration sample for using the Windows iSCSI Driver:
[DEFAULT]
auth_strategy = keystone
volume_name_template = volume-%s
volume_driver = cinder.volume.drivers.windows.WindowsDriver
glance_api_servers = IP_ADDRESS:9292
rabbit_host = IP_ADDRESS
rabbit_port = 5672
sql_connection = mysql+pymysql://root:Passw0rd@IP_ADDRESS/cinder
windows_iscsi_lun_path = C:\iSCSIVirtualDisks
rabbit_password = Passw0rd
logdir = C:\OpenStack\Log\
image_conversion_dir = C:\ImageConversionDir
debug = True
The following table contains a reference to the only driver specific option that will be used by the Block Storage Windows driver:
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
windows_iscsi_lun_path = C:\iSCSIVirtualDisks |
(String) Path to store VHD backed volumes |
After configuring cinder-volume
using the cinder.conf
file, you may
use the following commands to install and run the service (note that you
must replace the variables with the proper paths):
PS C:\> python $CinderClonePath\setup.py install
PS C:\> cmd /c C:\python27\python.exe c:\python27\Scripts\cinder-volume" --config-file $CinderConfPath
Network time services must be configured to ensure proper operation of the OpenStack nodes. To set network time on your Windows host you must run the following commands:
C:\>net stop w32time
C:\>w32tm /config /manualpeerlist:pool.ntp.org,0x8 /syncfromflags:MANUAL
C:\>net start w32time
Keep in mind that the node will have to be time synchronized with the other nodes of your OpenStack environment, so it is important to use the same NTP server. Note that in case of an Active Directory environment, you may do this only for the AD Domain Controller.
Python 2.7 32bit must be installed as most of the libraries are not working properly on the 64bit version.
Setting up Python prerequisites
Download and install Python 2.7 using the MSI installer from here:
PS C:\> $src = "https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi"
PS C:\> $dest = "$env:temp\python-2.7.3.msi"
PS C:\> Invoke-WebRequest –Uri $src –OutFile $dest
PS C:\> Unblock-File $dest
PS C:\> Start-Process $dest
Make sure that the Python
and Python\Scripts
paths are set up
in the PATH
environment variable.
PS C:\> $oldPath = [System.Environment]::GetEnvironmentVariable("Path")
PS C:\> $newPath = $oldPath + ";C:\python27\;C:\python27\Scripts\"
PS C:\> [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User
The following packages need to be downloaded and manually installed:
The following packages must be installed with pip:
PS C:\> pip install ecdsa
PS C:\> pip install amqp
PS C:\> pip install wmi
qemu-img
is required for some of the image related operations.
You can get it from here: http://qemu.weilnetz.de/.
You must make sure that the qemu-img
path is set in the
PATH environment variable.
Some Python packages need to be compiled, so you may use MinGW or
Visual Studio. You can get MinGW from here:
http://sourceforge.net/projects/mingw/.
You must configure which compiler is to be used for this purpose by using the
distutils.cfg
file in $Python27\Lib\distutils
, which can contain:
[build]
compiler = mingw32
As a last step for setting up MinGW, make sure that the MinGW binaries’ directories are set up in PATH.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.