With the release of Windows Server 2012, Microsoft extended the capability of its flagship operating system by including a number of new storage features that enable Windows to provide the capabilities of a fully functioning storage array.
In particular, Microsoft has extended the functionality of its file sharing protocol, SMB (Server Message Block), to bring it up to the standard required for enterprise-class storage deployments in SMB 3.0.
As a result, users can now deploy Windows Server 2012 as a storage and application server to support Microsoft SQL Server and Hyper-V using shared storage presented over SMB.
In this article we review the origins of the SMB protocol and the enhancements in SMB 3.0 that enable it to deliver enterprise-class storage solutions.
But first, a word about the broader benefits of SMB 3.0 for virtual machine storage.
Storage and Windows Server 2012
The new features added to Windows Server 2012 via SMB 3.0 deliver significant benefits for virtualised environments. Hyper-V deployments can now take advantage of SMB file shares for storing data with all the resiliency and scalability of traditional storage solutions.
Users can choose to use Windows Server 2012 itself as a storage server or look to storage array makers such as NetApp and EMC which have already started to support SMB 3.0 in their products.
The use of file-based protocols for storing virtual machines has practical benefits over block-based devices, as virtual machines are files themselves and so are easier to manage on file shares.
In many respects, SMB 3.0 with Hyper-V is a better storage solution for virtualisation than NFS with vSphere, where, for example, NFS version 3 used by vSphere ESXi provides no in-flight data encryption.
SMB and CIFS
SMB was originally developed by IBM and integrated by Microsoft into its LAN Manager product in the mid-1990s. SMB 1.0 was subsequently modified and submitted by Microsoft to the Internet Engineering Task Force (IETF) and renamed CIFS (Common Internet File System), although the standards were never ratified and have since expired.
More on Microsoft SMB 3.0
- Microsoft's SMB 3.0 for virtualization
- An admin's guide to SMB 3.0
- SMB 3.0 brings fault tolerant features, more speed
- Hyper-V's Server Message Block (SMB) 3.0 support can cut storage costs, complexity
- Configuring and provisioning production-ready SMB 3.0 storage
- Advantages of storing a VM on an SMB file share
Unfortunately, the original implementation of SMB/CIFS had a number of issues that made it unsuitable for anything other than managing files for end user computing. Performance over distance, or where significant latency existed between client and server, was not good, due to the “chatty” nature of the protocol. Performance was limited, as CIFS could not make efficient use of the network; only broadcasting data in fixed 64Kb chunks.
Microsoft worked hard to improve SMB, releasing version 2.0 with Windows Vista in 2006, and 2.1 with Windows 7 and Windows Server 2008. Version 2.0 (from which point the term CIFS became redundant, as it only applied to the 1.0 derivative) introduced a series of performance improvements.
These included features such as TCP window scaling and WAN acceleration. Microsoft also introduced opportunistic locking, which allowed the client to cache file content, and a feature known as "pipelining" to enable multiple requests to be queued at the same time. This is analogous to the idea of buffer credits in Fibre Channel, which allows for concurrent operations.
To improve performance, data sizes were extended from 16-bit to 32-bit and 64-bit, allowing a block size greater than 64Kb and thus improving large file transfers. Durable file handles improved the reliability of unreliable networks (especially wireless connections), allowing clients to transparently reconnect to servers.
The improvements in SMB 2.1 focused mainly on performance, especially for networks using 10-gigabit Ethernet (10GbE), with an improved opportunistic lock model, supports for large network maximum transmission units (MTU) and improved energy efficiency for client machines allowing them to go into a sleep power state in certain conditions with active SMB connections.
The latest improvements to SMB, branded as version 2.2, were released in Windows Server 2012 and Windows 8. But Microsoft reviewed this and decided the changes were significant enough to treat the enhancements as a version upgrade. And so these new features have, quite rightly, been classified as version 3.0.
SMB 3.0 introduced the ability to support server-based workloads, including Microsoft Hyper-V virtual machines and SQL Server databases. Hyper-V for SMB, introduced with Windows Server 2012, allows the location of a virtual machine to be specified as a Universal Naming Convention (UNC) path rather than a drive letter and directory. This improves scalability (as limited drive letters don’t need to reserved for file shares), but also allows the location to be mapped to a service name rather than a physical server.
To provide enterprise-level functionality, SMB 3.0 addresses the issues of resilience, performance, scalability, security and management with new features
To provide enterprise-level functionality, SMB 3.0 addresses the issues of resilience, performance, scalability, security and management with new features.
SMB Transparent Failover enables clients to connect to a clustered file server implementation of Windows Server 2012 and manage either automated server failover for maintenance or transparent failover in the event of a cluster failure. This feature effectively extends the resilience and availability of Windows Server 2012 when using it as an application and file server as it allows both components to be clustered for high availability. This feature is similar to the functionality provided by multipath I/O (MPIO) for iSCSI and Fibre Channel networks.
SMB Multichannel aggregates the bandwidth from multiple network adaptors between SMB 3.0 clients and SMB 3.0 servers. This provides two benefits; it aggregates the bandwidth available on multiple links for increased throughput, and at the same time provides network fault tolerance by managing the failure of any individual network path. The resilience feature is analogous to MPIO for iSCSI and Fibre Channel networks.
SMB Direct is a feature that supports network adaptors with remote data memory access (RDMA) capability. RDMA enables low-latency, high-throughput traffic such as that provided by Infiniband connections. This feature is more likely to be useful with environments using solid-state disks that need to get the best performance out of Windows Server 2012 acting as a storage server.
SMB Scale Out uses Cluster Shared Volumes (CSV) to provide simultaneous access to files across all nodes in a multi-node cluster. This improves performance and scalability by allowing all nodes to participate in delivering file services and is complementary to the features of Transparent Failover and Multichannel.
SMB Performance Counters provides the management reporting required to track file share utilisation, including throughput, latency and IOPS. The counters (managed through the Performance Monitor tool) cover client and server, allowing analysis of both ends of the SMB 3.0 connection, which is useful for troubleshooting performance issues.
SMB Encryption allows data travelling between client and server to be encrypted across the network. This feature only works for both SMB 3.0 clients and server, disabling access from older SMB 2.0 and SMB 1.0 clients. Encrypting data in flight has obvious benefits where either the network isn’t physically segmented or logically partitioned with VLANs.
Improvements with R2
With the release of Windows Server 2012 R2, Microsoft added a number of performance enhancements. SMB Direct was improved for small I/O and higher-bandwidth devices. SMB bandwidth can now be managed by traffic type, including live migrations and virtual machines, ensuring that during a Hyper-V live migration (supported with the R2 release), sufficient bandwidth remains for virtual machine I/O.
Finally, R2 disables support for SMB 1.0 by default, which improves security;with more than 100 commands, SMB 1.0 had a large attack vector. Although SMB 1.0 can be re-enabled if required, it is likely that most deployments will have no requirement to retain legacy SMB 1.0 support.