Over the past few months, I’ve been working with the Airtop-S Fanless Server from Compulab. This is a compact device, about the size of a Small Form Factor PC. What’s cool about it is that it uses a Natural AirFlow technology that does not require fans or liquid to cool the CPU and PCIe Video Card. They’ve also used an external power supply, similar to what you’d use to power a docking station, freeing up all kinds of space internally for nice extras.
As the entire design has been customized with thermal considerations, CompuLab has also designed their own motherboard. When I received the unit, I was pleased with the wealth of connectivity options and redundant power capabilities.
I have an unboxing video where I show all the ports that come included with the unit. The front panel is customizable, and I opted to have it configured with an additional 4x1GbE NICs. As 1Gb is commonplace, I decided to start with this in my configuration along with some consumer-grade 850 Evo SSDs, to provide a functional (though not recommended) setup and establish some benchmarks.
With all my NICs plugged into an unmanageable switch, I was getting pretty poor performance on my Volume. But it did work, and it’ll provide me with a starting point as we optimize these units and integrate them with Azure
In subsequent posts we will look at maximizing the performance out of these little units with the minimum amount of cost. For now, here’s the PowerShell script that I’m using to build my S2D cluster. It’s a trimmed down version of the production-ready one you can find in the Master Storage Spaces Direct book on Amazon.
Get-WindowsFeature Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock {Get-WindowsFeature} #Role Installation Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock { Install-WindowsFeature -Name File-Services Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name Hyper-V -IncludeAllSubFeature -IncludeManagementTools -Restart } Install-WindowsFeature -Name File-Services Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name Hyper-V -IncludeAllSubFeature -IncludeManagementTools #Build Switch-Embedded Team New-VMSwitch -Name TeamedvSwitch -NetAdapterName "Ethernet 3", "Ethernet 4", "Ethernet 5", "Ethernet 6" -EnableEmbeddedTeaming $true Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock {New-VMSwitch -Name TeamedvSwitch -NetAdapterName "Ethernet 3", "Ethernet 4", "Ethernet 5", "Ethernet 6" -EnableEmbeddedTeaming $true} #Create vAdapters Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name SMB -ManagementOS Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name LM -ManagementOS Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name HB -ManagementOS Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock { Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name SMB -ManagementOS Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name LM -ManagementOS Add-VMNetworkAdapter -SwitchName TeamedvSwitch -Name HB -ManagementOS } #Configure IPs for Converged Network New-NetIPAddress -IPAddress 172.16.16.1 -PrefixLength 24 -InterfaceAlias "vEthernet (SMB)" New-NetIPAddress -IPAddress 172.16.17.1 -PrefixLength 24 -InterfaceAlias "vEthernet (HB)" New-NetIPAddress -IPAddress 172.16.18.1 -PrefixLength 24 -InterfaceAlias "vEthernet (LM)" Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock { New-NetIPAddress -IPAddress 172.16.16.2 -PrefixLength 24 -InterfaceAlias "vEthernet (SMB)" New-NetIPAddress -IPAddress 172.16.17.2 -PrefixLength 24 -InterfaceAlias "vEthernet (HB)" New-NetIPAddress -IPAddress 172.16.18.2 -PrefixLength 24 -InterfaceAlias "vEthernet (LM)" } #Get Status of NICs Get-SmbServerNetworkInterface | FT * Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock {Get-SmbServerNetworkInterface | FT *} #Build Cluster Test-Cluster -Node Cabot-Airtop1,Cabot-Airtop2 -Include "Cluster Configuration", "Hyper-V Configuration", "Storage Spaces Direct", "Inventory", "System Configuration", "Network" New-Cluster -Name S2DCluster -Node Cabot-Airtop1,Cabot-Airtop2 -NoStorage -StaticAddress 192.168.4.10 #Configure Cluster Cloud Witness Set-ClusterQuorum -CloudWitness -AccountName <AzureStorageAccountNameHere> -AccessKey <AccessKeyHere> -Endpoint core.windows.net #Validate cluster for S2D Get-StorageSubsystem Get-PhysicalDisk | ft Invoke-Command -Computername Cabot-Airtop2 -ScriptBlock { Get-StorageSubsystem Get-PhysicalDisk | ft } #Enable S2D Enable-ClusterS2D -PoolFriendlyName S2DPool -Confirm:$false #Provision Cluster Shared Volumes New-Volume -StoragePoolFriendlyName S2DPool -FriendlyName MirrorDisk1 -FileSystem CSVFS_REFS -Size 200GB -PhysicalDiskRedundancy 1 New-Volume -StoragePoolFriendlyName S2DPool -FriendlyName AWD -FileSystem CSVFS_REFS -Size 450GB -PhysicalDiskRedundancy 1
As soon as I get some time to add some Mellanox cards and some proper SSD drives, we’ll be rebuilding the S2D cluster with a production configuration and running a series of performance tests to benchmark the solution.
Hope this helps!
É