Smallest Azure Stack PoC Box w/o Hacking the Code

I know this is crazy. This is how I am crazy about the product "Azure Stack" we're building.

From time to time, I see people deploy Azure Stack on the mini size hardware for different reasons like use the existing home server, or be mobile for travelling around countries. As an example, here is the portable Azure Stack built by our MVP (https://www.itworld.com/article/3142708/microsoft-subnet/azure-stack-portable-the-enterprise-cloud-in-a-briefcase.html). Sure, you can always hack the code and install Azure Stack on a laptop or even a nested VM, which doesn't meet minimum requirements. But it's not recommended and you don't have extra resource to host PaaS services or try multi-VM deployment.

Here is the official hardware requirements (https://acom-prod-uswest-01.azurewebsites.net/en-us/documentation/articles/azure-stack-deploy/):

Hardware

Component Minimum Recommended
Disk drives: Operating System 1 OS disk with minimum of 200 GB available for system partition (SSD or HDD) 1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)
Disk drives: General Azure Stack POC Data 4 disks. Each disk provides a minimum of 140 GB of capacity (SSD or HDD). All available disks will be used. 4 disks. Each disk provides a minimum of 250 GB of capacity (SSD or HDD). All available disks will be used.
Compute: CPU Dual-Socket: 12 Physical Cores (total) Dual-Socket: 16 Physical Cores (total)
Compute: Memory 96 GB RAM 128 GB RAM
Compute: BIOS Hyper-V Enabled (with SLAT support) Hyper-V Enabled (with SLAT support)
Network: NIC Windows Server 2012 R2 Certification required for NIC; no specialized features required Windows Server 2012 R2 Certification required for NIC; no specialized features required
HW logo certification Certified for Windows Server 2012 R2 Certified for Windows Server 2012 R2

 

As you could see most of the desktop PC and laptop today couldn't meet the minimum requirement. They normally have up to 64GB memory. For laptop, number of disks is another issue. Although in the code, we only require 3 data disks, for most of laptops,  they don't have 4 hard drives (1 for OS and 3 for data). So I had to look at workstation or server. Inspired by Project Kepler-47  when I prepare my S2D session in Ignite China I found the SuperMicro's 5028D. (Pictures from https://tinkertry.com/)

0102

5028D can meet the majority of Azure Stack PoC hardware requirements. For example, it supports up to 128GB memory, It could have up to 6 hard drives (2 2.5" SSDs/HDDs and 4 3.5" HDDs). Unfortunately 5028D's mother board has a built-in Intel Xeon D-1541 CPU, which is 8 cores and 16 thread processor. Different from Azure Stack TP1, In TP2 the number of cores is hard requirement. The good is SuperMicro also provides the similar mother board but with more built-in cores. For example, X10SDV-12C-TLN4F and X10SDV-16C-TLN4F. Problem Solved!

 

Wait... Can it be smaller? The answer is yes. I found SuperMicro SYS-E300-8D. It's a 1U mini server. It's even smaller than most of laptops just a little bit thicker. Here are SYS-E300-8D and Surface Pro 3 side by side.

e300-and-surface

Dimensions:

  • Width 10" (254mm)
  • Height 1.7" (43mm)
  • Depth 8.9" (226mm)

 

Same as 5028D, it supports 128GB memory. As for CPU, I managed to replace the mother board with the 16C version X10SDV-7TP8F, which includes a 16 Core/32 Thread Intel Xeon D-1587 Processor. Now the challenge is # of disks. Although E300-8D comes with 1 M.2 slot and 1 mSATA slot and 4 SATA ports (the high end mother board even has additional 4 SAS3 ports), the problem is how to put 4 data disk into such small chassis.

 

The answer is leveraging the 2 PCIe slots in SYS-E300-8D and 1 M.2 slot on the motherboard.  I ordered two Amfeltec M.2 carrier boards.

With those boards I could install 3 M.2 NVMe drives in the mini Azure Stack. You may ask why not insert 4 mSATA drives. Actually deployment script only validates whether or not you have 3 or more data disks. I use SK Hynix PE3110 960GB Enterprise M.2 NVMe SSD because it has Power loss protection. As we all know Azure Stack is built on top of Storage Space Direct. According to Cosmos Darwin's blog below, consumer-grade solid-state drives (SSD) could not deliver the performance we expected on S2D.

https://blogs.technet.microsoft.com/filecab/2016/11/18/dont-do-it-consumer-ssd/

I use my old 512GB mSATA SSD as my system drive and boot drive. The motherboard also supports SATA-DOM. I even could have two SATA-DOM drives and configure them as RAID1 to provide better reliability.

 

Now the little monster perfectly matches the recommend hardware configuration:

Component Recommended SuperMicro SYS-E300-8D w/ X10SDV-7TP8F
Disk drives: Operating System 1 OS disk with minimum of 200 GB available for system partition (SSD or HDD) 1 OS disk: mSATA 512GB SSD
Disk drives: General Azure Stack POC Data 4 disks. Each disk provides a minimum of 250 GB of capacity (SSD or HDD). All available disks will be used. 3 960GB NVMe SSD
Compute: CPU Dual-Socket: 16 Physical Cores (total) Single-Socket: 16 Physical Cores (total)
Compute: Memory 128 GB RAM 128 GB RAM
Compute: BIOS Hyper-V Enabled (with SLAT support) Hyper-V Enabled (with SLAT support)
Network: NIC Windows Server 2012 R2 Certification required for NIC; no specialized features required Windows Server 2012 R2 Certification required for NIC; no specialized features required
HW logo certification Certified for Windows Server 2012 R2 Certified for Windows Server 2012 R2

 

Here is how it looks like eventually.

 

Before deployment, I could double check all of the 3 NVMe drives had already been recognized correctly.

 

Then I kick-off the deployment script. As we could see the system passed all the pre-checks.

After 3 hours and 40 minutes, the deployment (TP3 Refresh) completed successfully.

 


Last, I guess I didn't mention that I also replaced the original 84W power adapter w/ a larger power brick (216W) and add the third 13K rpm server fan in the front panel. The total cost is around 4700 USD.

5