Dell XC Series 2.0: Product Architectures

Following our launch of the new 13G-based XC series platform, I present our product architectures for the VDI-specific use cases. Of the platforms available, this use case is focused on the extremely powerful 1U XC630 with Haswell CPUs and 2133MHz RAM. We offer these appliances on both Server 2012 R2 Hyper-V and vSphere 5.5 U2 with Citrix XenDesktop, VMware Horizon View, or Dell vWorkspace.  All platform architectures have been optimized, configured for best performance and documented.
dn

Platforms

We have three platforms to choose from optimized around cost and performance, all being ultimately flexible should specific parameters need to change. The A5 model is the most cost effective leveraging 8-core CPUs, 256GB RAM 2 x 200GB SSDs for performance and 4 x 1TB HDDs for capacity.  For POCs, small deployments or light application virtualization, this platform is well suited. The B5 model steps up the performance by adding four cores per socket, increasing the RAM density to 384GB and doubling the performance tier to 2 x 400GB SSDs. This platform will provide the best bang for the buck on medium density deployments of light or medium level workloads. The B7 is the top of the line offering 16-core CPUs and a higher capacity tier of 6 x 1TB HDDs. For deployments requiring maximum density of knowledge or power user workloads, this is the platform for you.
image
At 1U with dual CPUs, 24 DIMM slots and 10 drive bays…loads of potential and flexibility!
image

Solution Architecture

Utilizing 3 platform hardware configurations, we are offering 3 VDI solutions on 2 hypervisors. Lots of flexibility and many options. 3 node cluster minimum is required with every node containing a Nutanix Controller VM (CVM) to handle all IO. The SATADOM is present for boot responsibilities to host the hypervisor as well as initial setup of the Nutanix Home area. The SSDs and NL SAS disks are passed through directly to each CVM which straddle the hypervisor and hardware. Every CVM contributes its directly-attached disks to the storage pool which is stretched across all nodes in the Nutanix Distributed File System (NDFS) cluster. NDFS is not dependent on the hypervisor for HA or clustering. Hyper-V cluster storage pools will present SMB version 3 to the hosts and vSphere clusters will be presented with NFS. Containers can be created within the storage pool to logically separate VMs based on function. These containers also provide isolation of configurable storage characteristics in the form of dedupe and compression. In other words, you can enable compression on your management VMs within their dedicated container, but not on your VDI desktops, also within their own container. The namespace is presented to the cluster in the form of \\NDFS_Cluster_name\container_name.
The first solution I’ll cover is Dell’s Wyse vWorkspace which supports either 2012 R2 Hyper-V or vSphere 5.5. For small deployments or POCs we offer this solution in a “floating mgmt” architecture which combines the vWorkspace infrastructure management roles and VDI desktops or shared session VMs. vWorkspace and Hyper-V enables a special technology for non-persistent/ shared image desktops called Hyper-V Catalyst which includes 2 components: HyperCache and HyperDeploy. Hyper-V Catalyst provides some incredible performance boosts and requires that the vWorkspace infrastructure components communicate directly with the hyper-V hypervisor. This also means that vWorkspace does not require SCVMM to perform provisioning tasks for non-persistent desktops!

  • HyperCache – Provides virtual desktop performance enhancement by caching parent VHDs in host RAM. Read requests are satisfied from cache including requests from all subsequent child VMs.
  • HyperDeploy – Provides instant cloning of parent VHDs massively diminishing virtual desktop pool deployment times.

You’ll notice the HyperCache components included on the Hyper-V architectures below. 3 to 6 hosts in the floating management model, depicted below with management, desktops and RDSH VMs logically separated only from a storage container perspective by function. The recommendation of 3-7 RDSH VMs is based our work optimizing around NUMA boundaries. I’ll dive deeper into that in an upcoming post. The B7 platform is used in the architectures below.
image
Above ~1000 users we recommend the traditional distributed management architecture to enable more predictable scaling and performance of both the compute and management hosts. The same basic architecture is the same and scales to the full extent supported by the hypervisor, is this case Hyper-V which supports up to 64 hosts. NDFS does not have a scaling limitation so several hypervisor clusters can be built within a single contiguous NDFS namespace. Our recommendation is to then build independent Failover Clusters for compute and management discretely so they can scale up or out independently.
The architecture below depicts a B7 build on Hyper-V applicable to Citrix XenDesktop or Wyse vWorkspace.
image

This architecture is relatively similar for Wyse vWorkspace or VMware Horizon View on vSphere 5.5 U2 but fewer total compute hosts per HA cluster, 32 total. For vWorkspace, Hyper-V Catalyst is not present in this scenario so vCenter is required to perform desktop provisioning tasks.
image
For the storage containers, the best practice of less is more still stands. If you don’t need a particular feature don’t enable it, as it will consume additional resources. Deduplication is always recommended on the performance tier since the primary OpLog lives on SSD and will always benefit. Dedupe or compression on the capacity tier is not recommended, of course you absolutely need it. And if you do prepare to increase each CVM RAM allocation to 32GB.

Container Purpose Replication Factor Perf Tier Deduplication Capacity Tier Deduplication Compression
Ds_compute Desktop VMs 2 Enabled Disabled Disabled
Ds_mgmt Mgmt Infra VMs 2 Enabled Disabled Disabled
Ds_rdsh RDSH Server VMs 2 Enabled Disabled Disabled

Network Architecture

As a hyperconverged appliance, the network architecture leverages the converged model. A pair of 10Gb NICs minimum in  each node handle all traffic for the hypervisor, guests and storage operations between CVMs. Remember that the storage of all VMs is kept local to the host to which the VM resides, so the only traffic that will traverse the network is LAN and replication. There is no need to isolate storage protocol traffic when using Nutanix. 
Hyper-V and vSphere are functionally similar. For Hyper-V there are 2 vSwitches per host, 1 external that aggregates all of the services of the host management OS as well as the vNICs for the connected VMs. The 10Gb NICs are connected to a LBFO team configured in Dynamic Mode. The CVM alone connects to a private internal vSwitch so it can communicate with the hypervisor.
image
In vSphere it’s the same story but with the concept of Port Groups and vMotion.
image
We have tested the various configurations per our standard processes and documented the performance results which can be found in the link below. These docs will be updated as we validate additional configurations.

Product Architectures for 13G XC launch:

Resources:

About Wyse vWorkspace HyperCache
About Wyse vWorkspace HyperDeploy
SJbWUYl4LRCwFNcatHuG

Dell XC Series Web-scale Converged Appliance 2.0

I am pleased to present the Dell XC 2.0 series of web-scale appliances based on the award-winning 13G PowerEdge server line from Dell. There’s lots more in store for the XC so just focusing on this part of the launch we are introducing the XC630 and the XC730xd appliances.

Flexibility and performance are key tenets of this launch providing not only a choice in 1U or 2U form factors, but an assortment of CPU and disk options. From a solution perspective, specifically around VDI, we are releasing three optimized and validated platforms with accompanied Product Architectures to help you plan and size your Dell XC deployments.

The basic architecture of the Dell XC powered by Nutanix remains the same. Every node is outfitted with a Nutanix Controller VM (CVM) that connects to a mix of SSD and HDD to contribute to a distributed storage pool that has no inherent scaling limitation. Three nodes minimum required and either VMware vSphere or Microsoft Windows Server 2012 R2 Hyper-V are supported hypervisors. Let’s take a look at the new models.

image

XC630

The XC630 is a 1U dual-socket platform that supports 6-core to 16-core CPUs and up to 24 x 2133MHz 16GB RDIMMs or 32GB LRDIMMs. The XC630 can be configured using all flash or using two tiers of storage which can consist of 2 to 4 x SSDs (200GB, 400GB or 800GB) and 4 to 8 x 1TB HDDs (2TB HDDs coming soon). Flexible! All flash nodes must have a minimum of 6 x SSDs while nodes with two storage tiers must have a minimum of two SSDs and four HDDs. All nodes have a minimum of 2 x 1Gb plus 2 x 10Gb SFP+ or BaseT Ethernet that can be augmented via an additional card.

New to the XC 2.0 series is a 64GB SATADOM that is used to boot each node. Each node is also outfitted with a 16GB SD card used for the purposes of initial deployment and recovery. The SSDs and HDDs that comprise the Nutanix Distributed File System (NDFS) storage pool are presented to each CVM via an on-board 1GB PERC H730 set in pass-through mode. Simple, powerful, flexible.

image

 

XC730xd

For deployments requiring a greater amount of cold tier data capacity, the XC730xd can provide up to 32TB raw per node. The XC730xd is a 2U dual-socket platform that supports 6-core to 16-core CPUs and up to 24 x 2133MHz 16GB RDIMMs or 32GB LRDIMMs. The XC730xd is provided with two chassis options: 24 x 2.5” disks or 12 x 3.5” disks. The 24-drive model requires the use of two tiers of storage which can consist of 2 to 4 x SSDs (200GB, 400GB or 800GB) and 4 to 22 x 1TB HDDs .The 12-drive model also requires two tiers of storage consisting of 2 to 4 x SSDs (200, 400GB or 800GB) and up to 10 x 4TB HDDs. All nodes have a minimum of 2 x 1Gb plus 2 x 10Gb SFP+ or BaseT Ethernet that can be augmented via an additional card.

The XC730xd platforms are also outfitted with a 64GB SATADOM that is used to boot the nodes. The 16GB SD card used for the purposes of initial deployment and recovery is present on these models as well. The SSDs and HDDs that comprise the Nutanix Distributed File System (NDFS) storage pool are presented to each CVM via an on-board 1GB PERC H730 set in pass-through mode. Simple, powerful, flexible.

12 drive option, hopefully the overlaps in the image below make sense:

image

 

24 drive option:

image

 

Nutanix Software Editions

All editions of the Nutanix software platform are available with variable lengths for support and maintenance.

image

This is just the beginning. Keep an eye out for additional platforms and offerings from the Dell + Nutanix partnership! Next up is the VDI product architectures based on the XC630. Stay tuned!!

http://www.dell.com/us/business/p/dell-xc-series/pd

Clustering Server 2012 R2 with iSCSI Storage

Yay, last post of 2014! Haven’t invested in the hyperconverged Software Defined Storage model yet? No problem, there’s still time. In the meanwhile, here is how to cluster Server 2012 R2 using tried and true EqualLogic iSCSI shared storage.

EQL Group Manager

First, prepare your storage array(s), by logging into EQL Group Manager. This post assumes that your basic array IP, access and security settings are in place.  Set up your local CHAP account to be used later. Your organization’s security access policies or requirements might dictate a different standard here.

SNAGHTML3b62e029

Create and assign an Access Policy to the VDS/VSS in Group Manager otherwise this volume will not be accessible. This will make subsequent steps easier when it’s time to configure ASM.image

Create some volumes in Group Manager now so you can connect your initiators easily in the next step. It’s a good idea to create your cluster quorum LUN now as well.

image

 

Host Network Configuration

First configure the interfaces you intend to use for iSCSI on your cluster nodes. Best practice says that you should limit your iSCSI traffic to a private Layer2 segment, not routed and only connecting to the devices that will participate in the fabric. This is no different from Fiber Channel in that regard, unless you are using a converged methodology and sharing your higher bandwidth NICs. If using Broadcom NICs you can choose Jumbo Frames or hardware offload, the larger frames will likely net a greater performance impact. Each host NIC used to access your storage targets should have a unique IP address able to access the network of those targets within the same private Layer2 segment. While these NICs can technically be teamed using the native Windows LBFO mechanism, best practice says that you shouldn’t, especially if you plan to use MPIO to load balance traffic. If your NICs will be shared (not dedicated to iSCSI alone) then LBFO teaming is supported in that configuration. To keep things clean and simple I’ll be using 4 NICs, 2 dedicated to LAN, 2 dedicated to iSCSI SAN. Both LAN and SAN connections are physically separated to their own switching fabrics as well, this is also a best practice.

image

MPIO – the manual method

First, start the MS iSCSI service, which you will be prompted to do, and check its status in PowerShell using get-service –name msiscsi.

image

Next, install MPIO using Install-WindowsFeature Multipath-IO

Once installed and your server has been rebooted, you can set additional options in PowerShell or via the MPIO dialog under  File and Storage Services—> Tools.

image

Open the MPIO settings and tick “add support for iSCSI devices” under Discover Multi-Paths. Reboot again. Any change you make here will ask you to reboot. Make all changes once so you only have to do this one time.

image

The easier way to do this from the onset is using the EqualLogic Host Integration Tools (HIT Kit) on your hosts. If you don’t want to use HIT for some reason, you can skip from here down to the “Connect to iSCSI Storage” section.

Install EQL HIT Kit (The Easier Method)

The EqualLogic HIT Kit will make it much easier to connect to your storage array as well as configure the MPIO DSM for the EQL arrays. Better integration, easier to optimize performance, better analytics. If there is a HIT Kit available for your chosen OS, you should absolutely install and use it. Fortunately there is indeed a HIT Kit available for Server 2012 R2.

image

Configure MPIO and PS group access via the links in the resulting dialog.

image

In ASM (launched via the “configure…” links above), add the PS group and configure its access. Connect to the VSS volume using the CHAP account and password specified previously. If the VDS/VSS volume is not accessible on your EQL array, this step will fail!

image

Connect to iSCSI targets

Once your server is back up from the last reboot, launch the iSCSI Initiator tool and you should see any discovered targets, assuming they are configured and online. If you used the HIT Kit you will already be connected to the VSS control volume and will see the Dell EQL MPIO tab.

image

Choose an inactive target in the discovered targets list and click connect, be sure to enable multi-path in the pop-up that follows, then click Advanced.

image

Enable CHAP log on, specify the user/pw set up previously:

image

If your configuration is good the status of your target will change to Connected immediately. Once your targets are connected, the raw disks will be visible in Disk Manager and can be brought online by Windows.

image

When you create new volumes on these disks, save yourself some pain down the road and give them the same label as what you assigned in Group Manager! The following information can be pulled out of the ASM tool for each volume:

image

Failover Clustering

With all the storage pre-requisites in place you can now build your cluster. Setting up a Failover Cluster has never been easier, assuming all your ducks are in a row. Create your new cluster using the Failover Cluster Manager tool and let it run all compatibility checks.

image

Make sure your patches and software levels are identical between cluster nodes or you’ll likely fail the clustering pre-check with differing DSM versions:

image

Once the cluster is built, you can manipulate your cluster disks and bring any online as required. Cluster disks will not be able to be brought online until all nodes in the cluster can access the disk.

image

Next add your cluster disks to Cluster Shared Volumes to enable multi-host read/write and HA.

image

The new status will be reflected once this change is made.

image

Configure your Quorum to use the disk witness volume you created earlier. This disk does not need to be a CSV.

image

Check your cluster networks and make sure that iSCSI is set to not allow cluster network communication. Make sure that your cluster network is setup to allow cluster network communication as well as allowing client connections. This can of course be further segregated if desired using additional NICs to separate cluster and client communication.

image

Now your cluster is complete and you can begin adding HA VMs, if using Hyper-V, SQL, File or other roles as required.

References:

http://blogs.technet.com/b/keithmayer/archive/2013/03/12/speaking-iscsi-with-windows-server-2012-and-hyper-v.aspx

http://blogs.technet.com/b/askpfeplat/archive/2013/03/18/is-nic-teaming-in-windows-server-2012-supported-for-iscsi-or-not-supported-for-iscsi-that-is-the-question.aspx

Dell XC Series – Product Architectures

Hyperconverged Web-scale Software Defined Storage (SDS) solutions are white hot right now and Nutanix is leading the pack with their ability to support all major hypervisors (vSphere, Hyper-V and KVM) while providing nearly unlimited scale. Dell partnering with Nutanix was an obvious mutually beneficial choice for the reasons above plus supplying a much more robust server platform. Dell also provides a global reach for services and support as well as solving other challenges such as hypervisors installed in the factory.

Nutanix operates below the hypervisor layer so as a result requires a lot of tightly coupled interaction with the hardware directly. Many competing platforms in this space sit above the hypervisor so require vSphere, for example, to provide access to storage and HA but they are also limited by the hypervisor’s limitations (scale).  Nutanix uses its own algorithm for clustering and doesn’t rely on a common transactional database which can cause additional challenges when building solutions that span multiple sites. Because of this the Nutanix Distributed Filesystem (NDFS) supports no known limits of scale. There are current Nutanix installations in the thousands of nodes across a contiguous namespace and now you can build them on Dell hardware.

Along with the Dell XC720xd appliances, we have released a number of complementary workload Product Architectures to help customers and partners build solutions using these new platforms. I’ll discuss the primary architectural elements below.

Wyse Datacenter Appliance Architecture for Citrix

Wyse Datacenter Appliance Architecture for VMware

Wyse Datacenter Appliance Architecture for vWorkspace

 

Nutanix Architecture

Three nodes minimum are required for NDFS to achieve quorum so that is the minimum solution buy in, then storage and compute capacity can be increased incrementally beyond by adding one or more nodes to an existing cluster. The Nutanix architecture uses a Controller VM (CVM) on each host which participates in the NDFS cluster and manages the hard disks local to its own host. Each host requires two tiers of storage: high performance/ SSD and capacity/ HDD. The CVM manages the reads/writes on each host and automatically tiers the IO across these disks. A key value proposition of the Nutanix model is data locality which means that the data for a given VM running on a given host is stored locally on that host as apposed to having reads and writes crossing the network. This model scales indefinitely in a linear block manner where you simply buy and add capacity as you need it. Nutanix creates a storage pool that is distributed across all hosts in the cluster and presents this pool back to the hypervisor as NFS or SMB.

You can see from the figure below that the CVM engages directly with the SCSI controller through which it accesses the disks local to the host it resides. Since Nutanix sits below the hypervisor and handles its own clustering and data HA, it is not dependent upon the hypervisor to provide any features nor is it limited by any related limitations.

image

From a storage management and feature perspective, Nutanix provides two tiers of optional deduplication performed locally on each host (SSD and HDD individually), compression, tunable replication (number of copies of each write spread across disparate nodes in the cluster) and data locality (keeps data local to the node the VM lives on). Within a storage pool, containers are created to logically group VMs stored within the namespace and enable specific storage features such as replication factor and dedupe. Best practice says that a single storage pool spread across all disks is sufficient but multiple containers can be used. The image below shows an example large scale XC-based cluster with a single storage pool and multiple containers.

image

While the Nutanix architecture can theoretically scale indefinitely, practicality might dictate that you design your clusters around the boundaries of the hypervisors, 32 nodes for vSphere, 64 nodes for Hyper-v. The decision to do this will be more financially impactful if you separate your resources along the lines of compute and management in distinct SDS clusters. You could also, optionally, install many maximum node hypervisor clusters within a single very large, contiguous Nutanix namespace, which is fully supported. I’ll discuss the former option below as part of our recommended pod architecture.

Dell XC720xd platforms

For our phase 1 launch we have five platforms to offer that vary in CPU, RAM and size/ quantity of disks. Each appliance is 2U, based on the 3.5” 12-gen PowerEdge R720XD and supports from 5 to 12 total disks, each a mix of SSD and HDD. The A5 platform is the smallest with a pair of 6-core CPUs, 200GB SSDs and a recommended 256GB RAM. The B5 and B7 models are almost identical except for the 8-core CPU on the B5 and the 10-core CPU on the B7. The C5 and C7 boast a slightly higher clocked 10-core CPU with doubled SSD densities and 4-5x more in the capacity tier. The suggested workloads are specific with the first three targeted at VDI customers. If greater capacity is required, the C5 and C7 models work very well for this purpose too.

image

For workload to platform sizing guidance, we make the following recommendations:

Platform

Workload

Special Considerations

A5

Basic/ light task users, app virt

Be mindful of limited CPU cores and RAM densities

B5

Medium knowledge workers

Additional 4 cores and greater RAM to host more VMs or sessions

B7

Heavy power users

20 cores per node + a recommended 512GB RAM to minimize

oversubscription

C5 Heavy power users Higher density SSDs + 20TB in the capacity tier for large VMs or amount of user data
C7 Heavy power users Increased number of SSDs with larger capacity for greater amount of T1 performance

Here is a view of the 12G-based platform representing the A5-B7 models. The C5 and C7 would add additional disks in the second disk bay. The two disks in the rear flexbay are 160GB SSDs configured in RAID1 via PERC used to host the hypervisor and CVM, these disks do not participate in the storage pool. The six disks in front are controlled by the CVM directly via the LSI controller and contribute to the distributed storage pool across all nodes.

image

Dell XC Pod Architecture

This being a 10Gb hyperconverged architecture, the leaf/ spine network model is recommended. We do recommend a 1Gb switch stack for iDRAC/ IPMI traffic and build the leaf layer from 10Gb Force10 parts. The S4810 is shown in the graphic below which is recommended for SFP+ based platforms or the S4820T can be used for 10GBase-T.

image

In our XC series product architecture, the compute, management and storage layers, typically all separated, are combined here into a single appliance. For solutions based on vWorkspace under 10 nodes, we recommend a “floating management” architecture which allows the server infrastructure VMs to move between hosts also being used for desktop VMs or RDSH sessions. You’ll notice in the graphics below that compute and management are combined into a single hypervisor cluster which hosts both of these functions.

Hyper-V is shown below which means the CVMs present the SMBv3 protocol to the storage pool. We recommend three basic containers to separate infrastructure mgmt, desktop VMs and RDSH VMs. We recommend the following feature attributes based on these three containers (It is not supported to enable compression and deduplication on the same container):

Container

Purpose

Replication Factor

Perf Tier Deduplication

Capacity Tier Deduplication

Compression

Ds_compute

Desktop VMs

2

Enabled

Enabled

Disabled

Ds_mgmt

Mgmt Infra VMs

2

Enabled

Disabled

Disabled

Ds_rdsh

RDSH Server VMs

2

Enabled

Enabled

Disabled

You’ll notice that I’ve included the resource requirements for the Nutanix CVMs (8 x vCPUs, 32GB vRAM). The vRAM allocation can vary depending on the features you enable within your SDS cluster. 32GB is required, for example, if you intend to enable both SSD and HDD deduplication. If you only require SSD deduplication and leave the HDD tier turned off, you can reduce your CVM vRAM allocation to 16GB. We highly recommend that you disable any features that you do not need or do not intend to use!

image

For vWorkspace solutions over 1000 users or solutions based on VMware Horizon or Citrix XenDesktop, we recommend separating the infrastructure management in all cases. This allows management infrastructure to run in its own dedicated hypervisor cluster while providing very clear and predictable compute capacity for the compute cluster. The graphic below depicts a 1000-6000 user architecture based on vWorkspace on Hyper-V. Notice that the SMB namespace is stretched across both of the discrete compute and management infrastructure clusters, each scaling independently. You could optionally build dedicated SDS clusters for compute and management if you desire, but remember the three node minimum, which would raise your minimum build to 6 nodes in this scenario.

image

XenDesktop on vSphere, up to 32 nodes max per cluster, supporting around 2500 users in this architecture:

image

Horizon View on vSphere, up to 32 nodes max per cluster. supporting around 1700 users in this architecture:

image

Network Architecture

Following the leaf/ spine model, each node should connect 2 x 10Gb ports to a leaf switch which are then fully mesh connected to an upstream set of spine switches.

image

On each host there are two virtual switches: one for external access to the LAN and internode communication and one private internal vSwitch used for the CVM alone. On Hyper-V the two NICs are configured in a LBFO team on each host with all management OS vNICs connected to it.

image

vSphere follows the same basic model except for port groups configured for the VM type and VMKernel ports configured for host functions:

image

Performance results

The tables below summarize the user densities observed for each platform during our testing. Please refer to the product architectures linked at the beginning of this post for the detailed performance results for each solution.

image

image

Resources:

http://en.community.dell.com/dell-blogs/direct2dell/b/direct2dell/archive/2014/11/05/dell-world-two-questions-cloud-client-computing

http://blogs.citrix.com/2014/11/07/dell-launches-new-appliance-solution-for-desktop-virtualization/

http://blogs.citrix.com/2014/11/10/xendesktop-technologies-introduced-as-a-new-dell-wyse-datacenter-appliance-architecture/

http://blogs.vmware.com/euc/2014/11/vmware-horizon-6-dell-xc-delivering-new-economics-simplicity-desktop-application-virtualization.html

http://stevenpoitras.com/the-nutanix-bible/

http://www.dell.com/us/business/p/dell-xc-series/pd

Dell XC Web Scale Converged Appliance

That’s a mouthful! Here’s a quick taste of the new Dell + Nutanix appliance we’ve been working on.  Our full solution offering will be released soon, stay tuned. In the meantime, the Dell marketing folks put together a very sexy video:

Fun with Storage Spaces in Windows Server 2012 R2

image

Previously I took at look at a small three disk Storage Spaces configuration on Windows 8.1 for my Plex media server build. Looking at the performance of the individual disks, I grew curious so set out to explore Spaces performance in Server 2012 R2 with one extra disk. Windows 8.1 and Server 2012 R2 are cut from the same cloth with the Server product adding performance tiering, deduplication and means for larger scale.  At its core, Storage Spaces is essentially the same between the products and accomplishes a singular goal: take several raw disks and create a pool with adjustable performance and resiliency characteristics. The execution of this however, is very different between the products.

For my test bed I used a single Dell PowerEdge R610 which has 6 local 15K SAS disks attached to a PERC H700 RAID controller with 1GB battery-backed cache. Two disks in RAID 1 for the OS (Windows Server 2012 R2) and four disks left for Spaces. Spaces is a very capable storage aggregation tool that can be used with large external JBODs and clustered across physical server nodes, but for this exercise I want to look only at local disks and compare performance between three and four disk configurations.

Questions I’m looking to answer:

  • Do 2 columns outperform 1? (To learn about columns in Spaces, read this great article)
  • Do 4-disk Spaces greatly outperform 3-disk Spaces?
  • What advantage, if any, does controller cache bring to the table?
  • Are there any other advantages in Spaces for Server 2012 R2 that outperform the Windows 8.1 variant (aside from SSD tiering, dedupe and scale)?

No RAID

The first rule of Storage Spaces is: thou shalt have no RAID in between the disks and the Windows OS. Spaces handles the striping and resiliency manipulation itself so can’t have hardware or software RAID in the way. The simplest way to accomplish this is via the use of a pass-through SAS HBA but if you only have RAID controller at your disposal, it can work by setting all disks to RAID 0. For Dell servers, in the OpenManage Server Administrator (OMSA) console, create a new Virtual Disk for every physical disk you want to include, and set its layout to RAID-0. *NOTE – There are two uses of the term “virtual disk” in this scenario. Virtual Disk in the Dell storage sense is not to be confused with virtual disk in the Windows sense, although both are ultimately used to create a logical disk from a physical resource.

image

To test the native capability of Spaces with no PERC hardware cache assist, I set the following policy on each Virtual Disk:

image

Make some Spaces!

Windows will now see these local drives as assignable disks to a Storage Pool. From the File and Storage Services tab in Server Manager, launch the New Storage Pool Wizard. This is where creating Spaces in Windows 8.1 and Server 2012 R2 divest in a major way. What took just a few clicks on a single management pane in Win8.1 takes several screens and multiple wizards in Server 2012 R2. Also, all of this can be done in PowerShell using the new-storagepool and new-virtualdisk cmdlets. First name the new storage pool:

image

Add physical disks to the pool, confirm and commit.

image

You will now see your new pool created under the Storage Spaces section. Next create new virtual disks within the pool by right-clicking and selecting “New Virtual Disk”.

image

Select the pool to create the Virtual Disk within and name it. You’ll notice that this is where you would enable performance tiering if you had the proper disks in place using at least one SDD and one HDD.

image

Choose the Storage Layout (called resiliency in Win8.1 and in PowerShell). I previously determined that Mirror Spaces are the best way to go so will be sticking with that layout for these investigations.

image

Choices are good, but we want to save committed capacity, choose Thin Provisioning:

image

Specify the size:

image

Confirm and commit:

image

Now we have a pool (Storage Space) and a Virtual Disk, now we need to create a volume. Honestly I don’t know why Microsoft didn’t combine this next step with the previous Virtual Disk creation dialogs, as a Virtual Disk with no file system or drive letter is utterly useless.

image

Next select the size of the volume you want to create (smaller than or equal to the vDisk size specified previously), assign a drive letter and file system. It is recommended to use ReFS whenever possible. Confirm and commit.

image

Finally, a usable Storage Space presented to the OS as a drive letter!

Performance Baseline

First, to set a baseline I created a 4-disk RAID10 set using the integrated PERC H700 with 1GB cache (enabled). I copied a 6GB file back and forth between the C:\ and M:\ drives to test 100% read and 100% write operations. Write IO was fairly poor not even breaking 20 IOPS, the RAID10 double write penalty in full effect. Reads were much better, as expected, nearing 300 IOPS at peak.

image

3-Disk Mirror Space Performance

To force the server to go to disk for all IO operations (since I simply moved the same 6GB file between volumes), I used a little utility called Flush Windows Cache File by DelphiTools. This very simple CLI tool flushes the file cache and memory working sets along with the modified and purged memory standby lists.

Test constants: 3-disk Mirror space, PERC caching disabled, single column (default for 3 disks), 6GB file used to simulate a 100% read operation and a 100% write operation:image

image

Here are a few write operations followed by a read operation to demonstrate the disk performance capabilities. Write IOPS spike ~30 with read IOPS ~170. Interestingly, the write performance is better than RAID10 on the PERC here with read performance at almost half.

image

Turning the PERC caching back on doesn’t help performance at all, for reads or writes.

image

4-Disk Space, 1 Column Performance

Test constants: 4-disk Mirror space, PERC caching enabled, single column, 6GB file used to simulate a 100% read operation and a 100% write operation:

When adding a 4th disk to a 3-disk Space, the column layout has already been determined to be singular, so this does not change. To use a two column layout with four disks, the space would need to be destroyed and recreated. Let’s see how four disks perform with one column.

image

You’ll notice in the vDisk output that the Allocated size is larger now with the 4th disk, but the number of columns is unchanged at 1.

image

Adding the 4th disk to the existing 3-disk Space doesn’t appear to have helped performance at all. Even with PERC caching enabled, there is no discernable difference in performance between 3 disks or 4 using a single column, so the extra spindle adds nothing here. Disabling PERC cache appears to make no difference so I’ll skip that test here.

image

4-Disk Space, 2 Column Performance

Test constants: 4-disk Mirror space, PERC caching enabled, two columns, 6GB file used to simulate a 100% read operation and a 100% write operation.

Using 4 disks by default will create Virtual Disks with 2 columns as confirmed in PowerShell, this is also the minimum number of disks required to use two columns:

image

WOW! Huge performance difference with four disks and two columns. The read performance is consistently high (over 700 IOPS) with the writes performing in a wider arc upwards of 300 IOPS. This is a 1000% performance increase for writes and 300% increase for reads. Literally off the chart! Spaces is allowing each of these participating disks to exhibit their full performance potential individually.

image

Thinking this is too good to be true, I disabled the PERC cache and ran the test again. This is no fluke, I got very close to the same results the second time with all disks participating. Incredible.

image

Plex Performance

Since I began this whole adventure with Plex in mind, fitting that I should end it there too. Streaming a compatible file across the network yielded the following results. Skipping around in the file, all four disks were read from at some point during the stream, half spiking ~110 IOPS, the other two ~80 IOPS. This is twice the amount of observed performance on my home 3-disk 7.2k SATA-based HTPC.

image

Conclusions:

Using 15K SAS disks here, which are theoretically capable of ~200 IOPS each, performance is very good overall and seems to mitigate much of the overhead typically seen in a traditional RAID configuration. Spaces provides the resilient protection of a RAID configuration while allowing each disk in the set to maximize its own performance characteristics. The 3-disk one column Spaces configuration works but is very low performing. Four disks with one column don’t perform any better, so there is significant value in running a configuration that supports two or more columns. Columns are what drive the performance differential and the cool thing about Spaces is that they are tunable. Four disks with a two column configuration should be your minimum consideration for Spaces, as the performance increase adding that second column is substantial. Starting with three disks and adding a fourth will persist your single column configuration so is not advised. Best to just start with at least four disks. PERC caching showed to neither add nor detract from performance when used in conjunction with Spaces, so you could essentially ignore it altogether. Save your money and invest in SAS pass-through modules instead. The common theme that sticks out here is that the number of columns absolutely matters when it comes to performance in Spaces. The column-to-disk correlation ratio for a two-way mirror is 1:2, so you have to have a minimum of four disks to use two columns. Three disks and one column work fine for Plex but if you can start with four, do that.

Resources:

Storage Spaces FAQs

Storage Spaces – Designing for Performance

This post originated at Exit.the.Fast.Lane | Weestro.blogspot.com

Nutanix Node Removed from MetaData Store

image

My team at Dell is working feverishly to bring the new Dell and Nutanix partnership to fruition through new and exciting hardware platforms and solutions. Part of the process is learning and playing…a LOT.  A few weeks ago there was a very bad storm in Austin that knocked my team’s datacenter offline. Our four-node Nutanix cluster, along with everything else, went down hard. Fortunately three nodes came back up without issue, the 4th only partially. At this point we’re just doing POC work and functionality testing so there is no alerting configured. We had a failed Controller VM (CVM) on one of our nodes and didn’t know it. This is probably an extraordinary situation which is why I want to document it.

This cluster is running Server 2012 R2 Hyper-V with an SMB3 storage pool. The architecture is simple, all nodes and their disks participate in two layers of clustering: one private cluster controlled by and run for Nutanix, the other a failover cluster for the Hyper-V hypervisors. SMB resources cannot be owned by a cluster in Hyper-V anyway as there are no disks to add to the cluster, this is simply a namespace that you utilize via UNC pathing. The two clusters operate completely independent from one another. The physical disks are owned by the Nutanix CVMs and are completely obscured from Hyper-V. So even though our 4th node was fine from a Hyper-V perspective, able to run and host VMs, the CVM living on that node was caput as were its local disks, from a Nutanix cluster perspective.

In Prism, it was plain to see that this node was having trouble and the easy remediation steps didn’t work. Rebooting the CVM, rebooting the host, enabling the metadata store, all had no effect, neither did trying to start the cluster services manually. I removed the host from the cluster via Prism hoping I would be easily able to add it back. 

image

Once the disks had been completely removed in Prism, the remaining nodes could see that this CVM and it’s physical resources were gone. Unfortunately, I was unable to expand the cluster and easily add this node back into the mix. I could not open the prism console nor the cluster init page on this CVM. To clean up the metadata and “factory reset” this CVM I ran the following command in the CVM’s console:

cluster –f –s 127.0.0.1 destroy

Once complete, I tried to expand the cluster again in Prism and this time the CVM was discovered. Woot!

SNAGHTML91ec7e23

Cluster expanded successfully and all is well in the world again, right? Not quite. The disks of the 4th node never joined the pool even though Prism now saw four nodes in my cluster. Hmm. Running a “cluster status” on the CVM revealed this:

image

We’re not out of the woods yet. Enter the Nutanix CLI to check the disk tombstone entries. Both of my SSDs and three of my SATA disks had been tombstoned as part of the previous configuration, so were being prevented from being assigned now.

image

One by one these entries needed to be removed so that the CVM and these disk resources could again be free to join the pool.

image

Now, perform a “cluster start” to start the services on this CVM and voila, back in business.

image

Check the current activities in Prism which reflect the node getting added (for real this time). 

image

All disk resources are now present and accounted for.

SNAGHTML9202dae3

Pretty simple fix for what should be a fairly irregular situation. If you ever run into this issue this is what solved it for us. Big shout to Mike Tao and Rob Tribe at Nutanix for the assist!

HTPC for Plex with Windows Storage Spaces – Part 3

image5_thumb_thumb

HTPC build for Plex three part series:

  1. Hardware build and Storage Spaces
  2. Plex server and clients
  3. Performance

I’ve had a single disk Home Theater PC (HTPC) running Plex for a while now but with my ReadyNas nearing the end of its useful life, I decided to kill two birds with one stone: build an updated HTPC with drive redundancy to also take over the functions of my aging NAS. My HTPC stays on 24/7 anyway so this makes perfect sense. My design goals for this were to build a small, quiet, low power, data redundant and sufficiently performing box that I can stuff into my TV cabinet. The extent of the duties for this HTPC will be video streaming and file sharing/ backup, no gaming. This series details my build, Plex server, Plex clients, Windows Storage Spaces, as well as the performance of the storage subsystem.

Performance

In these performance tests I want to focus on the main activities my HTPC will be undertaking: file read/ write operations and streaming. I tested using both Parity and Mirror Spaces to demonstrate the capabilities of each.

WD Red Baseline (Control)

First to set a baseline for WD Red 3TB HDD, here is the observed write performance with a single 40GB file write operation (from C:\ to Z:\). The copy took around 4.5 minutes and the drive topped out around 145 IOPS. Subsequent read performance tests top out around the same level. Considering these disks have been reported to spin at 5400 RPMs, frankly that’s really not too bad.

image

Windows reported ~142MB/s transfer speed:

image

These drives produce absolutely ZERO audible noise. No clicking, no head seeking noise, no rotational noise…nothing. With the cover off of this box, all that is audible is the 3 spinning fans (case, CPU, PSU). Under the TV cabinet, my build is dead silent.

File copy between Mirror and Parity Space

Test constants:

C:\ = SSD
N:\ = Mirror space
M:\ = Parity space

This test demonstrates the performance capabilities of a Parity Space using the WD Red disks. Disk performance copying multiple files from a mirror space (N:\) to a parity space (M:\) was fairly poor, averaging 33 write IOPS on the parity space. Observed read performance on the source 2-way mirror space was low at 25 IOPS on average, but that’s all it was being asked to do. This is somewhat expected however, as one of the caveats with parity resiliency is reduced write performance.

image

Once again, the Windows file copy dialog tracks very closely to the observed maximum write performance in Perfmon.

image

Power consumption of the system under test varied between 50 to 75 watts. Very good!!

2014-07-20 16.39.46

Write performance of Mirror and Parity Spaces:

Test constants:

C:\ = SSD
D:\ = Mirror space
M:\ = Parity space

Here you can clearly see the write performance disparity between a two-way mirror and parity space. Copying a 4.5GB file from SSD (with very high read performance) to my two-way mirror space yielded very reasonable write performance according to the Windows file copy dialog. The overhead of the mirror operation appears to be costing around 20 IOPS.

image

The write activity of the physical disks participating in the mirror.

image

That same 4.5GB file written from SSD to my parity space (M:\) yielded significantly lower results (almost 3.5x lower):

image

Here is a more detailed view of the write performance against the parity space:

image

Read performance of Mirror and Parity Spaces:

Test constants:

C:\ = SSD
D:\ = Mirror space
M:\ = Parity space

Copying the same 4.5GB file from each space back to the SSD yielded better results overall. The read performance of the parity space during this operation is better but still below what the mirror space or even native drive are capable of:

image

image

Copying the file from the mirror space to the SSD was higher performing than the parity space and on par with native disk read performance, but the gap isn’t as wide here.

image

Plex Streaming Performance: Single File

Test constants:

-Physical disk 1 and 2 comprise a mirror Space
-Plex clients in use: Roku
-Media in use: single file, highly compatible, 1080p

Streaming being a highly sequential mostly read operation, there isn’t a great tax put upon the system resources. Multiple streams and transcoding complicate this a bit. The following chart shows the performance of a single video stream from my HTPC using a mirror Space to my Roku client. Interesting to note that the C:\ drive is busier than both disks in the mirror space, but all reads are sourced from a single disk.

image

Plex Streaming Performance: Single File, skipping around

Test constants:

-Physical disk 1, 2 and 3 comprise a mirror Space
-Plex clients in use: Chromecast
-Media in use: single file, highly compatible, 720p

Trying to force spaces to utilize all disks within a vDisk, I manually skipped around four times within a sample media file. Here you can see that with every color change within the performance chart is where I jumped to a different time within the media file. Almost every time I did this, Spaces offered up a different disk to be read from. The one exception is during the period between 7:40 and 7:43 where I performed a jump but the same disk was used. Otherwise, all three disks in  my mirror Space were used to read the file.

htpc.stream.3.disks

Plex Streaming Performance: Multiple Streams from One File

Test constants:

-Physical disk 1 and 2 comprise a mirror Space
-Plex clients in use: Roku, Chromecast, PS3 (DLNA)
-Media in use: single file, highly compatible, 1080p

To satisfy my curiosity, regardless of how infrequently this situation might actually occur, I wanted to see what the impacts were if I kicked off multiple streams of the the same file. I chose a mostly compatible file so we get the benefits of Direct Play here. Three simultaneous streams requiring transcoding would probably not work so well. There is a CPU spike when the third stream is launched and minor spikes on disk 2 for each stream event. You’ll note here that all reads are coming from disk 2. Looking at each TV screen individually and subjectively, the playback was completely normal.

image

Plex Streaming Performance: Multiple Streams from One File, 3 Disk Mirror

Test constants:

-Physical disk 1, 2 and 3 comprise a mirror Space
-Plex clients in use: Roku, Chromecast, PS3 (DLNA)
-Media in use: single file, highly compatible, 1080p

Just to see if there is any impact to performance, I ran this same test again but with three physical disks in my mirror Space. I would have expected my reads to be coming from at least two disks but as evident here, disk 1 is doing almost all of the work. Interesting to note that overall spikes are much lower now with read performance hovering around 1 IOPS. The takeaway here is that this third disk in my two-way mirror Space doesn’t add much from a performance perspective.

image

Plex Streaming Performance: Multiple Streams from Multiple Files

Test constants:

-Physical disk 1 and 2 comprise a mirror Space
-Plex clients in use: Roku
-Media in use: three files, one incompatible requiring transcoding, 1080p

The following chart shows the effects when additional streams are added using three different media files, one requiring transcoding. You can see that system resource usage is relatively low with the first two streams, things change dramatically with the introduction of the third file. Transcoding means heavy CPU usage as evident here. Disk activity with 3 different files being accessed simultaneously jumps up quite a bit too. 

image

Zooming in here looking at the disk IO, you can see once again that almost all read requests are satisfied from a single disk. Hmm, where’s my striping performance??!

image

Here is the Plex transcoder in action:

image

Network Performance

Network performance of the Plex server with a single HD media stream is very reasonable. There are spikes north of 11Mbps but for most of the duration the  transmitting bandwidth stayed around 2Mbps.

plex.network.stream

Conclusions:

  • The WD Red HDDs are a very quiet, very low power option that yield decent disk performance. Performance is more than acceptable for an HTPC that doubles as a NAS.
  • Two-way mirror Spaces are the highest performing option in Storage Spaces but come with the highest disk cost as well (2x). Read performance is on par to that of a native disk with Spaces adding no discernable overhead, writes cost ~20 IOPS in overhead. If you have HDD capacity to spare, this is the resiliency option you want!
    • While writes clearly hit all disks in a mirror Space, observed read operations from streams are satisfied from a single disk in the Spaces pool. Jumping around within a media file does force reads from all disks in a Space.
    • 3 disks in a Storage Space really doesn’t buy you much other than additional capacity. With a 1-column two-way mirror you still only have two copies of data, on two physical disks. Read and write performance is not increased here.
  • Parity spaces will work fine for Plex and video streaming in general, as video streaming is sequential and read performance is acceptable. Parity spaces suffer massively in reduced write performance so copying files to or moving files around on your HTPC will be much slower. The trade off for poorer write performance in a parity space is more overall usable capacity (1.5x consumed in a parity space vs 2x in a mirror space).
  • Plex makes excellent use of system resources and can handle just about anything you can throw at it. The Plex server doesn’t even break a sweat with highly compatible media types, even with multiple streams. Transcoding is CPU intensive and should work fine for a single stream, multiple streams may tax your system and degrade the viewing experience.

This post originated at Exit | the | Fast | Lane – weestro.blogspot.com

HTPC for Plex with Windows Storage Spaces – Part 2

image5_thumb

HTPC build for Plex three part series:

  1. Hardware build and Storage Spaces
  2. Plex server and clients (You are Here)
  3. Performance

I’ve had a single disk Home Theater PC (HTPC) running Plex for a while now but with my ReadyNas nearing the end of its useful life, I decided to kill two birds with one stone: build an updated HTPC with drive redundancy to also take over the functions of my aging NAS. My HTPC stays on 24/7 anyway so this makes perfect sense. My design goals for this were to build a small, quiet, low power, data redundant and sufficiently performing box that I can stuff into my TV cabinet. The extent of the duties for this HTPC will be video streaming and file sharing/ backup, no gaming. This series details my build, Plex server, Plex clients, Windows Storage Spaces, as well as the performance of the storage subsystem.

Plex

So what is Plex and why do we need it? Plex is a very simple, very powerful media center server that can stream videos, music and photos to almost any device…most importantly TVs. Plex can be installed on many NAS devices as well as Windows/Mac/Linux based PCs. Without Plex, DLNA is available to watch supported content from network accessible locations and works fairly well most of the time, but this is simply a list of content. Plex can also talk DLNA but the media server greatly enhances the overall experience by providing art, posters, synopsis, which media has been watched/ which hasn’t, the ability to resume where you left off, remote streaming and transcoding. Plex also supports many file containers (AVI, MKV, MP4, etc), codecs and subtitles. I personally used the DLNA method for years before seeing the light on Plex and no way would I go back. I love Plex and you will too!!

First, create an account on http://plex.tv, you’ll need this later for remote access and it will make management much simpler. Setup is simple: install the Plex media server on the supported platform of your choosing, open the Plex console in a web browser and point Plex at the locations of your media by adding libraries. Media is best categorized by type which will make browsing, searching and updating content much easier. Plex makes this process very easy for you:

image37_thumb

I use the following categories and will add one for photos soon:

image28_thumbPlex will then automatically connect to a variety of online sources, such as Freebase or The Movie Database, to download media information and art.  Once complete all of you media will be organized and accessible in the Plex console with full posters and even background music, if you want it.

image21_thumb

Plex content can be browsed via normal folder structures if you like or you can use the Plex Dashboard where you will find “On Deck” and “Recently Added”. The latter should be self explanatory, On Deck is where you will find movies that you started and stopped or the next episode of a TV show in a series. This is Plex helping to keep your place in your media universe and it is incredibly useful. 

image68_thumb

Plex provides three primary methods for playing content: Direct Play, Direct Stream and Transcoding. Bottom line is that Plex will play your media one way or another, you don’t have to worry about it, but this is how it does it.

  • Direct Play is the best and exists in the ideal scenario. 100% file compatibility with very little resources consumed on the media server itself. The file is sent to the Plex client as-is, easy breezy.
  • Direct Stream is used when a media file is mostly compatible but some element within is not and requires transcoding. The example Plex uses is a media file where compatible audio/video codecs are streamed direct and the non-compatible container is transcoded.
  • Transcoding is used when either the audio or video format isn’t compatible and has to be converted into a compatible format. Audio transcoding is not very CPU intensive but video transcoding is.

Recommended Tweaks

Overall, you could change almost nothing post install and Plex will work fine right out of the box. Here are a few tweaks that I recommend to enhance your experience.

In the server settings, click Connect on the left, make sure to log into Plex (your online account) as this will allow you to connect to and stream media to any device anywhere you are. This is honestly one of the coolest features of Plex and you do not need a Plex Pass to do this! Once signed in on your server, you can now connect to your Plex environment from any smart phone, tablet or PC anywhere you have internet connectivity by using the IOS/ Android Plex app or by logging into Plex.tv. Traveling? As long as you have internet connectivity, you can browse and watch anything from your library. No USB thumb drives required!

image32_thumb

To maximize ease of use when you add content, make sure the following settings are enabled. This will ensure that Plex will automatically scan your library when files are added vs having to run a manual or timed scan. Plex will see that you’ve added a file and will automatically add it to the library for playback and download related art.

image36_thumb

Under the Web settings, click Player on the left, you can control the streaming quality based on where you will be streaming to. 1080p for local streaming and a lower setting for remote streaming, for example. I have found that setting the local quality to 4Mbps/ 720p greatly increases local streaming responsiveness and makes it easier to skip around in a given media file.

image41_thumb

Further customization at this point is highly preferential and you’ll figure it out by clicking through the available options. Plex has made this all VERY easy. In Windows, Plex runs as a process launched by an interactive user so does require that a user account is logged into the desktop. There is no Windows service offering yet but there are ways to work around this. I have an account set to login automatically after a reboot then the screen locks after 1 minute for security. In lieu of a Windows service starting with the OS, this works fine.

Plex Clients

With the HTPC built and Plex installed, let’s talk about client connectivity. There are a number of ways to go here which is another benefit of Plex: extreme flexibility. The methods below are my top 3 in order by preference.

Smart TV app

If you own an internet connected Samsung Smart TV then you already have access to the best free Plex client available. Nothing is required externally, just install the Plex app from the Samsung app store on your TV, launch and it should find your Plex server on the network. Your TV remote will navigate the Plex menus and this will provide the richest experience you can get while navigating Plex on your TV screen. Sadly, if you own a Panasonic TV you will have to use an external client. There is no and will be no native Plex app in the foreseeable future.

Google Chromecast

Chromecast is a very simple and very cheap option that I personally use on my Panasonic plasma. $35 gets you an HDMI-connected dongle that simply casts or displays content on your TV via wifi. This is an important distinction to make when considering the Chromecast. There are no on-screen menus to navigate and there is no integration with your all-in-one remote. Your PC, tablet, or phone is your remote and where you select the content you want to display on your TV. This does require that you purchase the Plex app for IOS/ Android ($5) or if you choose to pay for PlexPass, you’ll get the app for free. Chromecast for Plex works great, the downside is the other services currently supported are a bit limited compared to Roku and the like (if you care). Chromecast is powered via a USB port on your TV or from a wall adapter.

Chromecast setup is very simple and pretty neat in what they do. Initially the Chromecast turns itself into a wifi Access Point (AP) by broadcasting a SSID that you connect to for configuration using the Chromecast app on your device. Once the local wifi network SSID and password are selected, Chromecast will disable its own AP and connect to yours.

Once Chromecast is configured, launch the Plex app on the device of your choosing and navigate to the content you want to watch. Connect Plex to the Chromecast by pushing the “Cast” button in the top right corner and select the Chromecast, this will also automatically change the input on your TV to the correct HDMI slot. Press play on the chosen content. This method is definitely different than the more traditional on-screen navigation approach but having used it for going on a year now, I really like the experience this solution provides. Your more technically challenged family members may not like or fully understand this method without some training.

image73_thumb

Roku Streamstick

Roku is a favorite of many home theater aficionados and provides several client options with varying price points. The Roku Streamstick is the Roku answer to the minimalist HDMI dongle but with the majority of the value that Roku provides. I use this client on my older Samsung plasma that doesn’t have built-in wifi support. Roku Streamstick is powered via a USB port on your TV or from a wall adapter. Setup is simple and handled via the specialized Roku remote included. Connect Roku to your home wifi and you are good to go.

Roku uses the more traditional on-screen navigation approach and has an impressive catalog of connectable services you can use. One of the neat things Roku provides is an impressive search function that gives you multiple options as to where you can find/ buy/ play the content you’re looking for. Roku works using a concept of “channels” which are really apps that you add to your client. Plex, Netflix, Amazon, etc. Plex is one of those channels and costs $5 just like the IOS/ Android version. PlexPass members get this app for free as well. Unlike the Smart TV or Chromecast methods, Plex on Roku is a very minimalist affair that provides a very basic visual experience.

image76_thumb

While Roku does ultimately provide the essentials for Plex, it is my least preferred method and comes with the following caveats:

  • Separate non-IR Roku remote required to control on-screen navigation. No integration into traditional IR all-in-one remotes possible.
  • Very slow boot up compared to Chromecast and takes a very long time to get to a point you can actually use it.
  • $50 vs $35 for the Chromecast
  • Least rich experience of the 3 options with a very basic user interface.

Please also see part one of this series which details the hardware build and part three which discusses performance.

References:

https://plex.tv/

Converting ISO, Video_TS and other disk image formats

HTPC for Plex with Windows Storage Spaces – Part 1

image5

HTPC build for Plex three part series:

  1. Hardware build and Storage Spaces
  2. Plex server and clients
  3. Performance

I’ve had a single disk Home Theater PC (HTPC) running Plex for a while now but with my ReadyNas nearing the end of its useful life, I decided to kill two birds with one stone: build an updated HTPC with drive redundancy to also take over the functions of my aging NAS. My HTPC stays on 24/7 anyway so this makes perfect sense. My design goals for this were to build a small, quiet, low power, data redundant and sufficiently performing box that I can stuff into my TV cabinet. The extent of the duties for this HTPC will be video streaming and file sharing/ backup, no gaming. This post details my build, Plex server, Plex clients, Windows Storage Spaces, as well as the performance of the storage subsystem.

HTPC Build

Trying to keep my costs in line while building in performance where it mattered, I decided to go with an AMD-based mini-ITX (m-ITX) form factor system running Windows 8.1 x64. The motherboard and CPU were sourced a year ago but still provide more than adequate performance for my purposes. I went a little higher on the CPU than I really needed to but since video transcoding is very CPU intensive, more horsepower there is certainly not wasted. All parts were sourced from Amazon, who has officially conquered the PC parts space, New Egg can no longer compete (price or return policy). A decent 2-bay ReadyNas or Synology NAS will set you back at least this much, plus this way I get a full featured box without compromises. 

  • CPU – AMD A4-5300 FM2, dual core, 3.4GHz, 65w, $50
  • MOBO – MSI FM2-A75IA-E53, $100
  • Case – Cooler Master Elite 130, $50
  • RAM – Corsair 8GB DDR3/1333 Memory, $60
  • PSU – Silverstone SFX 450w, $70
  • Disk – 1 x Crucial M500 120GB SSD (OS), $72
            – 3 x WD Red 3TB (spaces),
    $122 each

Total: $768

This A-series 65w AMD APU (Trinity) includes a robust dual-core clocked at 3.6GHz with on-die Radeon HD 7480D for graphics. The RAM isn’t anything special, just trusty Corsair 4GB DIMMs clocked at 1333MHz. The MSI main board provides all the connections I need and pairs nicely with the Cooler Master case. 4 x SATA ports, 2 x DIMM slots, and a PCIe slot should I ever choose to drop in a full length GPU.

image62

I had originally spec’d this build using the WD GP-AV disks which are purpose built for DVRs, security systems and 24/7 streaming operation. This was the disk I used originally a year ago which has served me faithfully and quietly. Online benchmarks show this drive to perform higher than the Green and Red drives from WD. Due to a parts sourcing issue I was forced to look for alternatives and landed on the WD Red disks, which are actually a bit cheaper. Low noise, low power consumption, built for 24/7 NAS duty… these drives are very favorably reviewed. The WD Reds are no where near the highest performing HDDs on the market, with a rotational speed of ~5400 RPM, but for the purposes of an HTPC/ NAS, their performance is perfectly sufficient.

image

Quality SSDs are cheaper than ever now and make a great choice for your OS disk when you separate your data (as you always should).  These disks are capable of thousands of IOPS and make install, boot up and OS operations lightning quick.

image63

For power I once again turned to Silverstone who have a 450w 80 PLUS bronze efficient unit in SFX form factor. Plenty of power with a very minimal foot-print which is ideal when working with m-ITX. This non-modular PSU has only 3 SATA connectors on a single string so I used a Molex to SATA power connector for my 4th drive. This PSU provides plenty of juice for these power sipping components and doesn’t block the CPU fan.

image64

Finding the “perfect” case for whatever project can prove challenging. For this project I wanted a small m-ITX case that can house 3 x 3.5” HDDs + a 2.5” SSD and Cooler Master had the answer. Well ventilated with plenty of working room, support for a full length GPU and full size PSU. You can mount a BD-ROM if you like or use that space for a 3.5” HDD. The finish is matte black inside and out with all rounded corners and edges. My only gripe is the included front case fan which, although extremely quiet, has no protection grill on its backside. You have to be very careful with you wires as there is nothing to stop them from direct contact with the fan blades. With the one-piece cover removed there is loads of working room in this case. With four SATA connections, cabling gets a bit tight on the rear side but it’s completely manageable.

image65

With the Elite 130 case loaded you can see the three WD Red drives, one on the floor, one on the wall and one on the top in the 5.25 bay. The SSD is mounted below the 5.25 bay, you can see the grey-beige rear of its case.

2014-07-20-15.47.034

The SFX PSU sticks out the back of the case a few inches which provides even greater clearance for the CPU fan. With this case it did require using the ATX bracket to fit perfectly. Both the CPU and PSU fans are completely unobstructed with fresh air brought in by the 120mm front fan. This case comes with an 80x15mm fan mounted on the side by the SATA ports. I found this fan to be noisy and in the way, so removed it.

2014-07-17-21.33.154

When all was said and done, power consumption for this build is at 29w idle and up around 75w under load. Awesome!!! See the performance section at the bottom for more details.

Storage Spaces

First debuted in Windows 8/ Server 2012, Storage Spaces provides a new very interesting method for controlling storage. Part of the “software defined” market segment, Spaces supplants traditional software and hardware RAID by providing the same data protection capability with a ton of additional flexibility. The biggest value propositions for Spaces in Windows 8.1 is the ability to thin provision (create drives with more space than you actually have or need), use disparate drive media (create a pool from several different disks, internal and external USB) and choose from a few different resiliency methods to control performance or provide greater redundancy. Server 2012 R2 adds a few additional features to Spaces, namely the ability to provide performance tiering between SSDs and HDDs and post-process deduplication which can have a dramatic reduction on consumed capacity. At the end of this exercise I will have two Spaces called Docs and Media both with 2-way mirror resiliency.

Setting up Spaces in Windows 8.1 is a trivial affair once the drives have been physical added to your build. One of the only restrictions is that the disk where the OS is installed cannot be used in a Spaces pool. First open the Spaces management console by pressing Windows Key + Q and typing spaces.

image79

Click create a new pool and select the unformatted disks you want to include. Additional disks can be easily added later.

image82

Storage Spaces (aka virtual disks) can now be created within the physical disk pool and will be presented back to the OS as logical drives with drive letters. Give the new Space a name (for me I have functionally separated Spaces for Docs and Media), choose a drive letter and select a file system. Resiliency type will open an additional file system option called ReFS for mirrored Spaces which is the recommended file system for these Spaces types. NTFS will be the only option for all others. ReFS builds on NFTS by providing greater data integrity including self healing, prioritized data availability, high scalability and app compatibility.  Here is a quick breakdown of the available resiliency types:

  • Simple (no resiliency) – just like it says, only one copy of your data so offers no protection. This is akin to RAID0 and can be useful if you simply want to thin provisioning a large logical drive with no data protection.
  • Two-way mirror – writes two copies of your data on different physical disks thus protecting from a single disk failure. This requires a minimum of two disks.
  • Three-way mirror – writes three copies of your data on different physical disks thus protecting you from two simultaneous disk failures. This requires a minimum of five disks.
  • Parity – writes your data with additional parity information for recovery, similar to RAID5. This protects from a single disk failure and requires a minimum of three drives. Parity Spaces will give you more available capacity but at the cost of reduced IO performance. See the performance section at the end for more details.

The images below show the capacity impact of resiliency using a two-way mirror vs parity. The two-way mirror mode will consume 2x of the stated capacity for every file stored (50% reduction of available capacity). All spaces can be thin provisioned and adjusted later if need be. As you can see below, a 2TB logical Space requires 4TB of actual storage should it fill completely.

image

Parity will consume 1.5x of the stated capacity for every file stored. Based on the 2TB logical Space shown below, if that volume were to fill completely it would consume 3TB of total available capacity.

image

Once a Space has been created only the size and drive letter can be changed. If you wish to change resiliency type for a space, you’ll have to create a new Space and migrate your data to it.

New drives can be added later to an existing pool very easily and with no down time. Note that adding a drive to an existing Storage Space will destroy any data currently on that drive.

image

Once configured, you will have a view of your logical Spaces, consumption stats as well as the physical disks backing them in the pool. Here you can see my three disk pool and two Spaces, each with a two-way mirror. Notice that the actual data consumed on the physical disks is evenly spread across all three. Having tried both Parity and two-way mirror resiliency, I decided to take the capacity hit and use the mirror method on both since it performs much better than Parity. Once finalized, I moved all of my pictures and videos into the new M drive.

This is reflected in Windows File Explorer with the two new logical drives and their individual space consumption levels.

image

Slabs and Columns

Underneath it all Microsoft has a few interesting concepts, some customizable which can be used to achieve certain results. I’ve linked to many good information sources in my references section at the bottom if you’d like more info on these concepts. Data that is mirrored is done so in 256MB slabs which is what is actually copied to each physical disk in a two-way mirror. Half of each slab is allocated to two separate disks. In the event of a disk failure, Spaces will self heal by identifying all affected slabs that were on the failed disk and reallocate them to any suitable remaining disk in the pool. You can take a peek under the covers if you’re curious by running the optimize-volume –verbose command in PowerShell:

image

Another important concept in Storage Spaces is that of columns which define the number of underlying physical disks across which one stripe of data for a virtual disk is written. This takes a minute to wrap the head around. By default, Spaces creates each virtual disk with one column when there are two disks present. So one column means one stripe on two disks. The interleave value dictates how much data is written to a single column per stripe, by default 256KB. For larger JBODs with dozens of disks the column count can go as high as eight. In my case only having three disks, one column is fine. Two columns makes sense if you have four disks, for example. Generally speaking, more columns means higher performance. The downside of more columns is that this controls how you will scale out later. A two column virtual disk will require you to expand your storage pool by two physical disks at a time. Creating a virtual disk with more columns or a different interleave is done so in PowerShell using the New-VirtualDisk cmdlet.  You can use the get-virtual disk cmdlet to view the lay of the land for your Spaces:

image

In the end I have met all my initial goals around cost, size, noise, performance and power consumption. I’m very pleased with this mix of hardware, especially my alternate WD Red HDD choice. Spaces provides a robust and flexible subsystem which is a great alternative to legacy hardware/ software RAID. For more information about the inner workings of Spaces and additional design considerations please see the references section below. Please see parts two and three of this series for more information on Plex and the performance of this build.

References:

http://social.technet.microsoft.com/wiki/contents/articles/15200.storage-spaces-designing-for-performance.aspx

http://technet.microsoft.com/en-us/library/hh831739.aspx

http://blogs.msdn.com/b/b8/archive/2012/01/05/virtualizing-storage-for-scale-resiliency-and-efficiency.aspx

ReFS

Columns in Storage Spaces