Sql-server – vSphere Datastore for specific datatypes: NFS or iSCSI

iscsinetappsql servervmware-esxivmware-vsphere

I am looking into improving performance in my vSphere environment.
We are using a NetApp appliance with all VMs stored in Datastores that are mounted via NFS.

It was suggested to me that, for some specific workloads (like SQL data or a file server), it may be better for disk IO performance to use iSCSI for the data vHD.

In my example, the boot disk would be a normal VMDK stored in the NFS-attached datastore. The D drive (the disk where the SQL data or the fileserver data resides) would be a iSCSI-attached volume.

C: - VMDK disk container -> VMFS datastore -> NFS -> NetApp
D: - iSCSI -> NetApp

I am also pondering: iSCSI initiated from the vSphere level or directly from Windows?

Does anyone have any experience or thoughts with this?

Best Answer

First and foremost, before to mangle with storage, you should be 100% sure that your bottleneck is really related to disk/IO configuration.

It this is the case, an iSCSI share can be faster than a NFS one, but in specific scenario only (small random read/write packets). SQL servers can be one of these scenarios, so if you are sure that your problem is storage performance, you can try with an iSCSI share.

Deciding how to configure it depend on your specific needs. For maximum performance, you should use a fully-preallocated RAW volume, directly attached to the guest OS. This has the added advantage to make the guest configuration "self-contained", in the sense that migrating that guest to another virtualizer (even based on different tech), will not require to reconfigure the iSCSI share. (or, at most, the reconfiguration will be very limited).

On the other side, managing guest-attached, block-based virtual disk is surely more complex that use ESX to accomplish the same goal, so you should not use this setup if not really needed.

I suggest you to do some tests, benchmarking each configuration, before going into production.