There are countless SAN vendors out there that work very well for VMware shared storage, there are also many linux distributions that provide iSCSI and NFS options for shared storage… So why use Windows Storage Server you might ask ? Well maybe you aren’t comfortable with Linux… maybe you don’t have the budget for a hardware SAN solution? There could be a number of reasons why, so lets just jump in and explain what Windows Storage Server has to offer as a shared storage platform.
- Windows Management Interface for GUI administration
- iSCSI (with MultiPathing)
Windows storage server is available from the MSDN site for download, but otherwise it is only available from OEM providers. Also because Windows installs are pretty much universal I wont go into detail on how to actually install Windows Storage Server. I will however note that if you do install from the MSDN media like I did you may be wondering why you weren’t asked for for a password. Well for some reason they decided that they were going to make a default password on WSS… that password is wSS2008!
Some hardware vendors that offer solutions for those without an MSDN account include the following:
After you have a Windows Storage Server up and running you will need to get the iSCSI target tools CD. By default iSCSI support is not installed with the base operating system. To install the iSCSI target simply insert the CD and run the installer.
The installation is pretty simple, just your typical Agree to the EULA and hit next a few times.
After installing you can right click on “Computer” and go to the Manage option. Under Storage there is a new option that you won’t find in a normal Windows installation called “Microsoft iSCSI Software Target”
So for those who aren’t familiar with iSCSI or SAN’s here is a little background information. In order for VMware (or any other iSCSI initiator(client)) to see “storage” you need a target(server). Targets can then consist of one or more LUN’s (or virtual drives). Therefore the first step we should do is create a new target by right clicking on “iSCSI Targets” and selecting “Create iSCSI Target”
A wizard will appear and ask you to enter what you would like to call this target as well as enter one of the initiators IQN name. The IQN name is a unique name to the initiator that you are trying to connect to the target. If you open the initiator software a prefab IQN sequence is usually there. Just copy that into the identifier field. There isn’t a specific format that you must maintain for the IQN, just make sure it is something meaningful to you. Almost all initiators can be changed.
After clicking Next and then Finish you have your iSCSI Target. In most cases you will only need one target, the only reason that I can think of that would cause the need for two targets in a VMware environment is if you have certain hosts that need certain LUN’s and other hosts that should not see them. This is because all LUN’s in a target are either shared to a host or masked from it… depending on if you allow its IQN name.
The next thing we should do is start to create LUN’s. Windows storage server creates LUN’s by presenting a VHD file to the initiator. So we right click on our iSCSI Target we just created and select “Create Virtual Disk for iSCSI Target”. The first question that you are asked is where you want the VHD to be located and what you want it to be called. You must type the full file name including the extension .VHD.
After clicking next we need to determine how big we want the VHD to be. Remember that this is in Mega Bytes.
Click Next and Finish and we are done…. Yes it is really that easy. The only thing else that I would recommend is that you turn off your Windows Firewall on the storage server. I suppose if you go through all the settings and find all the ports that iSCSI will be using you could leave it on, but if your VMware hosts are unable to see any targets and LUNs try turning off the firewall and rescan your HBA.
If you have more then one VMware ESX or ESXi server you will need to add it to the list of approved IQN names for this target otherwise you wont see it from that server. To do this right click on the iSCSI target name and go to Properties. After doing that navigate to the iSCSI Initiators tab and click Add. Put in the other servers IQN name and repeat for each server that needs access.
You can also add another iSCSI Target and add the same storage to each target. This allows you to monitor each targets connectivity from the Windows storage mangement screen
On the VMware ESX side all that we need to do is add the IP addresses from the windows storage server to the iSCSI Targets tab inside of the software initiator, then rescan the HBA… that’s it we are done. iSCSI storage from a windows storage server presented to VMware so that we can leverage features like vMotion and HA.
If you want to add some redundancy and some extra speed to your windows storage server that is sharing iSCSI targets you will probably want to add Multipathing. The process for adding multipathing is pretty simple.
- add a second network card to each of your VMware servers and to your windows storage server
- configure an ip address and subnet on the second network cards (this needs to be a new subnet that is not currently in use on your network, no gateway or dns or anything is needed in this subnet)
- add the new windows storage server ip address to the list of iSCSI targets in the VMware ESX/ESXi initiator properties.
- rescan the iSCSI HBA on your VMware hosts.
what you should see is that instead of having 1 path to your LUNs you will now have 2 paths to each LUN.
After you have multiple paths to each LUN and you have created a datastore from the new LUN’s you can right click on each of the LUN’s and change the Path Selection method from the default to the Round Robin method and click OK. You should now see “Active (I/O)” for each path now.
In order to bind multiple VMKernel NIC’s to the iSCSI software initiator you do need to run some commands from the esx/esxi command line. Please refer to the HP P4000 with VMware document in order to find the explanation on these commands.
If you have any questions leave a comment and I will try to address whatever they are. Thanks for reading.