Share via


Windows Server 2012 Scale-Out File Server for SQL Server 2012 - Step-by-step Installation

Outline

1. Introduction
1.1. Overview
1.2. Hardware
1.3. Software
1.4. Notes and disclaimers

2. Install Windows Server 2012
2.1. Preparations
2.2. Install the OS
2.3. Rename the computer
2.4. Enable Remote Desktop

3. Configure the Hyper-V Host
3.1. Install the Hyper-V role to the server
3.2. Create the VM switches
3.3. Rename the network adapters
3.4. Assign static IP addresses for the Hyper-V host

4. Create the Base VM
4.1. Preparations
4.2. Create a Base VM
4.3. Install Windows Server 2012 on the VM
4.4. Sysprep the VM
4.5. Remove the base VM

5. Configure the 4 VMs
5.1. Create 4 new differencing VHDs using the Base VHD
5.2. Create 4 similarly configured VMs
5.3. Start the 4 VMs
5.4. Complete the mini-setup for the 4 VMs
5.5. Change the computer name for each VM
5.6. For each VM, configure the networks
5.7. Review VM name and network configuration

6. Configure DNS and Active Directory
6.1. Install DNS and Active Directory Domain Services
6.2. Configure Active Directory
6.3. Join the other VMs to the domain
6.4. Create the SQL Service account

7. Configure iSCSI
7.1. Add the iSCSI Software Target
7.2. Create the LUNs and Target
7.3. Configure the iSCSI Initiators
7.4. Configure the disks

8. Configure the File Server
8.1 Install the required roles and features
8.2. Validate the Failover Cluster Configuration
8.3. Create a Failover Cluster
8.4. Configure the Cluster Networks
8.6. Create the Scale-Out File Server
8.7. Create the folders and shares

9. Configure the SQL Server
9.1. Mount the SQL Server ISO file
9.2. Run SQL Server Setup
9.3. Create a database using the clustered file share

10. Verify SMB features
10.1. Verify that SMB Multichannel is working
10.2. Query the SMB Sessions and Open Files
10.3. Planned move of a file server node
10.4. Unplanned failure of a file server node
10.5. Surviving the loss of a client NIC

11. Shut down, startup and install final notes

12. Conclusion


1. Introduction

1.1. Overview

In this document, I am sharing all the steps I used to create a Windows Server 2012 File Server demo or test environment, so you can experiment with some of the new technologies yourself. You only need a single computer (the specs are provided below) and the ISO file with the Windows Server 2012 evaluation version available as a free download. For the SQL part, you will need the SQL Server 2012 evaluation version, which is also available as a free download.

The demo setup includes 4 virtual machines: one domain controller and iSCSI target, two file servers and a SQL server. You need the iSCSI target and two file servers because we’re using Failover Clustering to showcase SMB Transparent Failover and SMB Scale-Out. We’ll also use multiple Hyper-V virtual networks, so we can showcase SMB Multichannel.

image

This will probably require a few hours of work end-to-end, but it is a great way to experiment with a large set of Microsoft technologies in Windows Server 2012, including:

  • Hyper-V
  • Networking
  • Domain Name Services (DNS)
  • Active Directory Domain Services (AD-DS)
  • iSCSI Target
  • iSCSI Initiator
  • Failover Clustering
  • File Servers
  • PowerShell

Follow the steps and let me know how it goes in the comment section. If you run into any issues or found anything particularly interesting, don’t forget to mention the number of the step.

1.2. Hardware

You will need the following hardware to perform the steps described here:

  • Computer capable of running Windows Server 2012 and Hyper-V (64-bit, virtualization technology) with at least 8GB of RAM
  • An 8GB USB stick, if you’re installing Windows Server from USB and copying the downloaded software around (you can also burn the software to a DVD)
  • Internet connection for downloading software and updates (DHCP enabled)

1.3. Software

You will need the following software to perform the steps described here:

1.4. Notes and disclaimers

  • The text for each step also focuses on the specific actions that deviate from the default or where a clear default is not provided. If you are asked a question or required to perform an action that you do not see described in these steps, go with the default option.
  • Obviously, a single-computer solution can never be tolerant to the failure of that computer. So, the configuration described here is not really continuously available. It’s just a simulation.
  • The configuration described here is for demo, testing or learning. You would definitely need a different configuration for a production deployment.
  • A certain familiarity with Windows administration and configuration is assumed. If you're new to Windows, this document is not for you. Sorry...
  • There are usually several ways to perform a specific configuration or administration task. What I describe here is one of those many ways. It's not necessarily the best way, just the one I personally like best at the moment.
  • In theory, you could run this demo on a host computer with only 4GB of RAM, but you would need to configure each VM to run with only 512MB of RAM, which is the bare minimum required. It works, but it will run slower.
  • This blog post is an update on a previous blog post that provided similar steps for Windows Server 2012 Beta. This post supersedes the old one.

2. Install Windows Server 2012

2.1. Preparations

  • Format a USB disk using Windows 8 or Windows Server 2012.
  • Copy the contents of the Windows Server 2012 ISO file to the USB disk.
  • To read the files from within the ISO file using Windows 8 or Windows Server 2012, just double click the ISO file to mount it.
  • Make sure the computer BIOS is configured for Virtualization. Each computer BIOS is different, so you need to find the right settings.

2.2. Install the OS

  • Use your computer’s BIOS option to boot from the USB disk.
  • After “Windows Setup” starts from the USB disk, enter the required information to install the OS:
  • Select language, time and currency format and keyboard. Then click “Next”.
  • Click “Install Now”.
  • Select the “Windows Server Datacenter - Server with a GUI” option and click “Next”.  
  • Accept the license agreement and click “Next”.
  • Select the “Custom: Install Windows only” option.
  • Select the install location for Windows Server and click “Next”.
  • Wait for the installation to complete. This will take a few minutes.
  • After the installation is completed, the OS will boot.
  • Type the administrator password twice, then click on “Finish”.

2.3. Rename the computer

  • Login to the computer using the Administrator password and rename the computer.

2.3.PS. Using PowerShell

Rename-Computer DEMO-HV0 -Restart

2.3.GUI. Using Server Manager

  • In Server Manager, click on “Local Server” on the list on left.
  • Click on the default name next to “Computer Name”.
  • Click on “Change”.
  • Enter “DEMO-HV0” as the new Computer Name and click “OK”.
  • Accept the option to restart the computer.

2.4. Enable Remote Desktop

  • Log in using the Administrator account and enable Remote Desktop.
  • After completing this step, you will be able work from a Remote Desktop connection.

2.4.PS. Using SCONFIG.EXE

  • Use a command prompt to start SCONFIG.EXE
  • Use option 7 in SCONFIG to enable remote desktop

2.4.GUI. Using Server Manager

  • In Server Manager, click on “Local Server” on the list on left.
  • Click on the “Disabled” item next to “Remote Desktop”.
  • Select the option to “Allow connections from computers running any version…”
  • Click “OK” multiple times until you’re back to the “Local Server” screen.

3. Configure the Hyper-V Host

3.1. Install the Hyper-V role to the server

  • Install the Hyper-V role and the required management tools. The computer will restart.

3.1.PS. Using PowerShell

Install-WindowsFeature Hyper-V, Hyper-V-PowerShell, Hyper-V-Tools -Restart

3.2.OUT. Sample output

PS C:\> Get-WindowsFeature *Hyper*

Display Name Name Install State
------------ ---- -------------
[X] Hyper-V Hyper-V Installed
[X] Hyper-V Management Tools RSAT-Hyper-V-Tools Installed
[X] Hyper-V GUI Management Tools Hyper-V-Tools Installed
[X] Hyper-V Module for Windows PowerShell Hyper-V-PowerShell Installed

3.1.GUI. Using Server Manager

  • In Server Manager, click on “Dashboard” on the list on left.
  • Click on the “Add Roles and Features”, which is option 2 under “Configure this local server”.
  • On the “Before You Begin” page, just click “Next”.
  • On the “Installation Type” page, click “Role-base or feature-based installation” and click “Next”.
  • On the “Server Selection” page, select your server and click “Next”.
  • On the “Server Role” page, select “Hyper-V”.
  • On the “Add features that are required for Hyper-V” dialog, click “Add features”, then click “Next”.  
  • On the “Features” page, just click “Next”.
  • On the “Hyper-V” page, just click “Next”.
  • On the “Create Virtual Switches” page, just click “Next”.
  • On the “Virtual Machine Migration” page, just click “Next”.
  • On the “Default Stores” page, just click “Next”.
  • On the “Confirmation” page, click “Restart target machine automatically if needed”, click “Yes” to confirm and then click “Install”.
  • The role will be installed and the computer will restart in the end.

3.2. Create the VM switches

  • Create one external virtual network (VM switch that is connected to the external network interface).
  • Create three internal virtual networks (VM switches used just to communicate between the VMs).

3.2.PS. Using PowerShell

Get-NetAdapter
Rename-NetAdapter –InterfaceDescription *Gigabit* -NewName External
New-VMSwitch –Name External -NetAdapterName External
1..3 | % { New-VMSwitch -Name Internal$_ -SwitchType Internal }
Get-VMSwitch
Get-NetAdapter

  • Note: If you’re connected via “Remote Desktop” to the server, you might temporarily lose the connection when you create the External VMSwitch.
    If using DHCP on that interface, you will be able to reconnect. If you’re using static IP addresses, you should run this step locally, not via “Remote Desktop”.

3.2.GUI. Using Hyper-V Manager

  • In Server Manager, click on “Tools” in the upper left and select “Hyper-V Manager”
  • In Hyper-V Manager, click on the server name (DEMO-HV0) on the pane on the left
  • On the task pane on the right, click on the “Virtual Switch Manager”  
  • Use the “New virtual switch” option to add 1 network named “External”, select “External” for type and select your physical NIC. Click “Apply” to confirm.
  • Use the “New virtual switch” option to add 3 networks named “Internal1”, “Internal2” and “Internal3”, each of type “Internal”. 
  • After creating the four new NICs, you should see the four new NICs in Server Manager, under Local Server
     

3.3. Rename the network adapters

  • You should now configure the 4 virtual network interfaces on the parent.
  • This includes renaming them to the names of the switches and configuring static IP addresses for the 3 internal NICs (the external NIC should be DHCP enabled, so it does not need IP address configuration).

3.3.PS. Using PowerShell

1..3 | % {Rename-NetAdapter *Internal$_* -NewName ParentInternal$_}
Rename-NetAdapter "vEthernet (External)" -NewName ParentExternal
Get-NetAdapter

3.3.OUT. Sample Output

PS C:\> Get-NetAdapter

Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
ParentInternal3 Hyper-V Virtual Ethernet Adapter #5 45 Up 00-15-5D-B5-AE-07 10 Gbps
ParentInternal2 Hyper-V Virtual Ethernet Adapter #4 36 Up 00-15-5D-B5-AE-06 10 Gbps
ParentInternal1 Hyper-V Virtual Ethernet Adapter #3 20 Up 00-15-5D-B5-AE-05 10 Gbps
ParentExternal Hyper-V Virtual Ethernet Adapter #2 16 Up 00-21-9B-31-BA-15 10 Gbps
External Intel(R) 82566DM-2 Gigabit Network C... 12 Up 00-21-9B-31-BA-15 1 Gbps

3.3.GUI. Using Server Manager

  • In Server Manager, click on “Local Server” on the list on left.
  • In the properties pane on the right, scroll to see the list of “Wired Internet Connections” (there will be 4 of them, as we showed in the previous Server Manager screenshot).
  • Click on the “Ipv4 address…” link next to one of the interfaces, the “Network Connections” window will show.
  • Select the interface that shows as “Enabled” and click on “Rename this connection” to rename it to “External”.
  • Rename the 3 interfaces on an “Unidentified network” to “Internal1”, “Internal2” and “Internal3”  
  • Close the “Network Connections” and refresh the “Local Server” view. 
     

3.4. Assign static IP addresses for the Hyper-V host

  • In this step, you will assign a static IP address to the 3 internal virtual NICs on the parent partition.
  • These NICs initially use the default setting (DHCP), but there is no DHCP server for the internal network.
  • The table below shows the desired configuration for each interface.

Machine

Parent External

Parent Internal1

Parent Internal2

Parent Internal3

Parent

DHCP

192.168.101.100

192.168.102.100

192.168.103.100

  • Note 1: The ParentExternal network does not need any further configuration, since the default is already to use DHCP.
  • Note 2: The preferred DNS IP address for all 3 internal interfaces should be set to 192.168.101.1 (that will be the IP address of the DNS server we will configure later).

3.4.PS. Using PowerShell

1..3 | % {
Set-NetIPInterface –InterfaceAlias ParentInternal$_ -DHCP Disabled
Remove-NetIPAddress –InterfaceAlias ParentInternal$_ -AddressFamily IPv4 -Confirm:$false
New-NetIPAddress –InterfaceAlias ParentInternal$_  -IPAddress "192.168.10$_.100" -PrefixLength 24 -Type Unicast
Set-DnsClientServerAddress –InterfaceAlias ParentInternal$_ -ServerAddresses 192.168.101.1
}

Get-NetIPAddress –AddressFamily Ipv4 | FT

3.4.OUT. Sample Output

PS C:\> Get-NetIPAddress –AddressFamily Ipv4 | Format-Table

ifIndex IPAddress PrefixLength PrefixOrigin SuffixOrigin AddressState PolicyStore
------- --------- ------------ ------------ ------------ ------------ -----------
45 192.168.103.100 24 Manual Manual Preferred ActiveStore
36 192.168.102.100 24 Manual Manual Preferred ActiveStore
20 192.168.101.100 24 Manual Manual Preferred ActiveStore
16 10.123.181.174 23 Dhcp Dhcp Preferred ActiveStore
1 127.0.0.1 8 WellKnown WellKnown Preferred ActiveStore

3.4.GUI. Using Server Manager

  • In Server Manager, click on “Local Server” on the list on left.
  • In the properties pane on the right, scroll to see the list of Ethernet interfaces (there will be 4 of them)
  • Click on the “Ipv4 address…” link next to one of the interfaces, the “Network Connections” window will show
  • On the list of network connections, right click the Internal1 interface and click “Properties”
  • On the “ParentInternal1 Properties” window, select “Internet Protocol Version 4 (TCP/IPv4)” and click “Properties”.
  • On TCP/IPv4 Properties window, select the option to “Use the following IP address”.
  • Enter the IP address 192.168.101.100 and the subnet mask 255.255.255.0 (as shown below).
  • Select the option “Use the following DNS server address”, enter 192.168.101.1 and click “OK”
  • Repeat this for the Internal2 and Internal3 networks, making sure to use the correct IP address (see table shown in item 3.4) and use the same Preferred DNS server IP address.
  • Close the “Network Connections” and refresh the “Local Server” view.

4. Create the Base VM

4.1. Preparations

  • Create a folder for your ISO files at C:\ISO and a folder for your VMs at C:\VMS
  • Copy the Windows Server 2012 ISO file to C:\ISO (I renamed the file to WindowsServer2012.ISO)

4.2. Create a Base VM

  • Create a new VM that will be used as the base image for our 4 VMs.
  • Store it in the C:\VMS folder and attach the Windows Server 2012 ISO file to it.

4.2.PS. Using PowerShell

MD C:\VMS
New-VHD -Path C:\VMS\BASE.VHDX -Dynamic -SizeBytes 127GB
New-VM -Name Base -VHDPath C:\VMS\BASE.VHDX -SwitchName External -Memory 1GB
Set-VMDvdDrive –VMName Base -Path C:\ISO\WindowsServer2012.ISO
Start-VM Base

4.2.OUT. Sample Output

PS C:\> Get-VM

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
Base Running 2 1024 00:01:49 Operating normally

4.2.GUI. Using Hyper-V Manager

  • In Windows Explorer, create a new C:\VMS folder.
  • In Server Manager, click on “Tools” in the upper left and select “Hyper-V Manager”.
  • In Hyper-V Manager, click on the server name on the pane on the left.
  • On the task pane on the right, click on “New”, then click on “Virtual Machine…”.
  • On the “Before you begin” page, just click “Next”.
  • On the “Specify Name and Location” page, use “Base” for the name, and “C:\VMS” for location. Click “Next”.  
  • On the “Assign Memory” page, use “1024” MB and click “Next”.
  • On the “Configure Networking” page, use “External”.
  • On the “Connect Virtual Disk” page, select the option to “Create a virtual hard disk”.
  • Use “Base.vhdx” for name, “C:\VMS” for location and “127” GB for size. Click “Next”. 
  • On the “Installation Options” page, select the option to install from DVD, select the option to use an ISO file and enter the path to the Windows Server 2012 ISO file on your C:\ISO folder. Click “Finish”.  
  • In Hyper-V Manager, right-click the VM and select “Start”

4.3. Install Windows Server 2012 on the VM

  • In Server Manager, click on “Tools” in the upper left and select “Hyper-V Manager”.
  • In Hyper-V Manager, click on the server name on the pane on the left.
  • On the list of VMs, right-click the VM called “Base” and click on “Connect…”
  • Follow the instructions on the screen, as you did in item 2.2.
  • Set a password, but don’t install any roles.
  • Don’t bother renaming the computer, since we’re sysprep’ing the VM anyway.

4.4. Sysprep the VM

  • After you have the OS installed on the VM, sign in and run C:\Windows\System32\Sysprep\Sysprep.exe
  • Select the options to run the OOBE, generalize and shutdown 
  • After Sysprep completes, the VM will be shut down.

4.5. Remove the base VM

  • Remove the BASE VM, leaving just the BASE.VHDX.
  • You should have a new base VHD ready to use at C:\VMS\BASE.VHD. Its size should be around 9GB.

4.5.PS. Using PowerShell

Remove-VM Base

4.5.GUI. Using Hyper-V Manager

  • In Hyper-V Manager, click on the server name on the pane on the left
  • On the list of VMs, right-click the VM called “Base” and click on “Delete”

5. Configure the 4 VMs

5.1. Create 4 new differencing VHDs using the Base VHD

5.1.PS. Using PowerShell

1..4 | % { New-VHD -ParentPath C:\VMS\BASE.VHDX –Path C:\VMS\VM$_.VHDX }

5.1.OUT. Sample Output

PS C:\> Dir C:\VMS

Directory: C:\VMS

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/17/2012 10:00 AM 9634316288 BASE.VHDX
-a--- 8/17/2012 10:01 AM 4194304 VM1.VHDX
-a--- 8/17/2012 10:01 AM 4194304 VM2.VHDX
-a--- 8/17/2012 10:01 AM 4194304 VM3.VHDX
-a--- 8/17/2012 10:01 AM 4194304 VM4.VHDX

5.1.GUI. Using Hyper-V Manager

  • In Hyper-V Manager, click on the server name on the pane on the left.
  • On the task pane on the right, click on “New”, then click on “Hard disk…”
  • On the “Before you begin” page, just click “Next”.
  • On the “Choose disk format” page, select “VHDX” and click “Next”.
  • On the “Choose disk type” page, select “Differencing”.  
  • On the “Specify Name and Location” page, use “VM1.VHDX” for name and “C:\VMS” for location. Click “Next”.
  • On the “Configure disk” page, use “C:\VMS\BASE.VHDX” for the location of the parent VHD.
  • After this, you will have a new differencing VHD at VM1.VHD that’s 4MB in size.
  • Since we’re creating 4 VMS, copy that file into VM2.VHD, VM3.VHD and VM4.VHD.  

5.2. Create 4 similarly configured VMs

  • You should create five VMs as follows:

VM

Role

Computer Name

External 

Internal 1

Internal 2

Internal 3

VM1

DNS, DC, iSCSI Target

DEMO-DC.DEMO.TEST

DHCP

192.168.101.1

N/A

N/A

VM2

File Server 1

DEMO-F1.DEMO.TEST

DHCP

192.168.101.3

192.168.102.3

192.168.103.3

VM3

File Server 2

DEMO-F2.DEMO.TEST

DHCP

192.168.101.4

192.168.102.4

192.168.103.4

VM4

SQL Server

DEMO-DB.DEMO.TEST

DHCP

192.168.101.5

192.168.102.5

192.168.103.5

  • Note 1: Each VM will use one of the VHD files we created in the previous step.
  • Note 2: Each VM will use 1GB of memory.

5.2.PS. Using PowerShell

1..4 | % { New-VM -Name VM$_ -VHDPath C:\VMS\VM$_.VHDX -Memory 1GB -SwitchName External}
1..4 | % { Add-VMNetworkAdapter VM$_ –SwitchName Internal1 }
2..4 | % { Add-VMNetworkAdapter VM$_ –SwitchName Internal2 }
2..4 | % { Add-VMNetworkAdapter VM$_ –SwitchName Internal3 }

5.2.OUT. Sample Output

PS C:\> Get-VM | % { $_ ; $_ | Get-VMNetworkAdapter | FT }

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VM1 Off 0 0 00:00:00 Operating normally

Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False VM1 External 000000000000 {}
Network Adapter False VM1 Internal1 000000000000 {}

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VM2 Off 0 0 00:00:00 Operating normally

Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False VM2 External 000000000000 {}
Network Adapter False VM2 Internal1 000000000000 {}
Network Adapter False VM2 Internal2 000000000000 {}
Network Adapter False VM2 Internal3 000000000000 {}

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VM3 Off 0 0 00:00:00 Operating normally

Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False VM3 External 000000000000 {}
Network Adapter False VM3 Internal1 000000000000 {}
Network Adapter False VM3 Internal2 000000000000 {}
Network Adapter False VM3 Internal3 000000000000 {}

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VM4 Off 0 0 00:00:00 Operating normally

Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False VM4 External 000000000000 {}
Network Adapter False VM4 Internal1 000000000000 {}
Network Adapter False VM4 Internal2 000000000000 {}
Network Adapter False VM4 Internal3 000000000000 {}

5.2.GUI. Using Hyper-V Manager

  • In Hyper-V Manager, click on the server name on the pane on the left.
  • On the task pane on the right, click on “New”, then click on “Virtual Machine…”
  • On the “Before you begin” page, just click “Next”.
  • On the “Specify Name and Location” page, use “VM1” for the name, and “C:\VMS” for location. Click “Next”.
  • On the “Assign Memory” page, use “1024” MB and click “Next”.
  • On the “Configure Networking” page, use “External”.
  • On the “Connect Virtual Disk” page, select the option to “Use an existing virtual hard disk”.
  • Use “C:\VMS\VM1.vhdx” for name. Click on “Finish”.
  • In Hyper-V Manager, click on the server name on the pane on the left.
  • On the list of VMs, right-click the VM you just created (VM1) and click on “Settings…”
  • On the “Settings for VM1” window, select “Add Hardware”, then “Network Adapter”.
  • Select the “Internal1” interface and click OK.
  • Repeat the process for VMs 2 to 4.
  • For VMs 2 to 4, make sure to add networks Internal2 and Internal3 as well Internal1.

5.3. Start the 4 VMs

5.3.PS. Using PowerShell

Start-VM VM*

5.3.GUI. Using Hyper-V Manager

  • In Hyper-V Manager, click on the server name on the pane on the left
  • In Hyper-V Manager, multi-select VMs 1 to 5, right click them and click on “Start”

5.4. Complete the mini-setup for the 4 VMs

  • Using Hyper-V manager, multi-select VMs 1 to 4, right click them and click on “Connect…”
  • Let the mini-setup complete, and configure each of the five VMs.
  • You will be prompted for the usual items, like license agreement, clock/language/region settings and a password.

5.5. Change the computer name for each VM

  • Change the computer name for each VM, using the names defined in item 5.2
  • The examples below are for VM1 (the DNS and Domain Controller).
  • You should repeat this for each of the 4 VMs.
  • At this point, you can also use this opportunity to enable Remote Desktop for each VM.
  • This would be done for each VM as you did for the host in item 2.4, if you want to access the VMs remotely.

5.5.PS. Using PowerShell (for VM1, for instance)

Rename-Computer DEMO-DC -Restart

5.5.GUI. Using Server Manager (for VM1, for instance)

  • In Server Manager, click on “Local Server” on the list on left.
  • Click on the default name next to “Computer Name”.
  • Click on “Change”.
  • Enter the new computer name as “DEMO-DC”.
  • Click “OK” accept the changes.
  • Click “OK” to acknowledge that you need to restart to apply changes.
  • Click “Restart Now”.

5.6. For each VM, configure the networks

  • In this step you will configure the network for each VM as shown on the table in item 5.2
  • We first rename the Network Connections in each guest for easy identification.
  • The External network is identified as being the only one with a DHCP address.
  • The remaining networks are renamed to Internal1, Internal2 and Internal3.
  • For internal networks static IPs are configured, with mask 255.255.255.0 and DNS set to 192.168.101.1.
  • The Internal 1 network will be used for DNS, Active Directory and the iSCSI Target.
  • The External network is useful for downloading from the Internet and remotely connecting to the 4 VMs.
  • You could configure a DHCP server for the internal interfaces.
  • However, due to the risk of accidentally creating a rogue DHCP server in your network, fixed IPs are used.

5.6.PS. Using PowerShell (for VM1, for instance)

## External NIC is the only one with a DHCP server
 
Get-NetIPAddress -PrefixOrigin DHCP | % { 
     Rename-NetAdapter -InterfaceAlias $_.InterfaceAlias –NewName External
}
 
## $IC – Internal Count – Number of Internal networks
 
$IC=0
Get-NetAdapter Ethernet* | Sort MacAddress | % {
   $IC++
   Rename-NetAdapter -InterfaceAlias $_.InterfaceAlias –NewName Internal$IC
}
 
## $VM is the VM Number, between 1 and 4. Used as the last portion of the IP address.
 
$VM=1
1..$IC | % {
   Set-NetIPInterface –InterfaceAlias Internal$_ -DHCP Disabled
   Remove-NetIPAddress –InterfaceAlias Internal$_ -AddressFamily IPv4 –Confirm:$false
   New-NetIPAddress –InterfaceAlias Internal$_ -IPAddress "192.168.10$_.$VM" -PrefixLength 24 -Type Unicast 
   Set-DnsClientServerAddress –InterfaceAlias Internal$_ -ServerAddresses 192.168.101.1
}

5.6.GUI. Using Server Manager (For VM1, for instance)

  • This step is similar to step 3.4, but this time performed on the 4 VM.
  • Inside the VM, in Server Manager, click on “Local Server” on the list on left.
  • In the properties pane on the right, Click on the “Ipv4 address…” link next to one of the interfaces.
  • The “Network Connections” window will show.
  • As you did with the Hyper-V host, rename the NIC with the DHCP connection to “External”.
    This NIC needs no further configuration.
  • Rename the remaining NIC to “Internal1”. (Other VMs will also have Internal2 and Internal3).
  • For each internal NIC, right click the Internal1 interface and click “Properties”.
  • On the “Internal1 Properties” window, select “Internet Protocol Version 4 (TCP/IPv4)” and click “Properties”.
  • On TCP/IPv4 Properties window, select the option to “Use the following IP address”.
  • Enter the corresponding IP address (see table on item 5.2) and the subnet mask 255.255.255.0.
  • Select the option “Use the following DNS server address”, enter 192.168.101.1 and click “OK”.
  • Repeat this for the Internal2 and Internal3 networks using the corresponding IP address and the DNS above.
  • Close the “Network Connections” and refresh the “Local Server” view.

 

  • Note: If you can’t tell which Internal network is which inside the VMs with multiple Internal networks, you can temporarily set one of the adapters to “Not Connected” in the VM Settings and verify which one shows as “Network cable unplugged”.

5.7. Review VM name and network configuration

  • After renaming the computer, renaming the network and configuring IP addresses, review the configuration on each VM to make sure you did not miss any step. Examples are shown below for VM1 and VM2.

5.7.PS. Using PowerShell

Get-WmiObject Win32_ComputerSystem
Get-NetAdapter
Get-NetIPAddress -AddressFamily IPv4 | Sort IfIndex | FT

5.7.OUT. Sample Output (for VM2, a.k.a. DEMO-F1)

PS C:\> Get-WmiObject Win32_ComputerSystem

Domain : WORKGROUP
Manufacturer : Microsoft Corporation
Model : Virtual Machine
Name : DEMO-F1
PrimaryOwnerName : Windows User
TotalPhysicalMemory : 1072799744

PS C:\> Get-NetAdapter

Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
External Microsoft Hyper-V Network Adapter #4 15 Up 00-15-5D-B5-AE-12 10 Gbps
Internal3 Microsoft Hyper-V Network Adapter #3 14 Up 00-15-5D-B5-AE-15 10 Gbps
Internal1 Microsoft Hyper-V Network Adapter 12 Up 00-15-5D-B5-AE-13 10 Gbps
Internal2 Microsoft Hyper-V Network Adapter #2 13 Up 00-15-5D-B5-AE-14 10 Gbps

PS C:\> Get-NetIPAddress -AddressFamily IPv4 | Sort IfIndex | FT

ifIndex IPAddress PrefixLength PrefixOrigin SuffixOrigin AddressState PolicyStore
------- --------- ------------ ------------ ------------ ------------ -----------
1 127.0.0.1 8 WellKnown WellKnown Preferred ActiveStore
12 192.168.101.2 24 Manual Manual Preferred ActiveStore
13 192.168.102.2 24 Manual Manual Preferred ActiveStore
14 192.168.103.2 24 Manual Manual Preferred ActiveStore
15 10.123.181.211 23 Dhcp Dhcp Preferred ActiveStore

5.7.GUI. Using Server Manager

  • In Server Manager, click on “Local Server” on the list on left.
  • Verify the network configuration.

6. Configure DNS and Active Directory

6.1. Install DNS and Active Directory Domain Services

  • Install the required DNS and Active Directory Domain Services roles to VM1 (DEMO-DC)

6.1.PS. Using PowerShell

Install-WindowsFeature DNS, AD-Domain-Services, RSAT-AD-PowerShell, RSAT-ADDS-Tools

6.1.GUI. Using Server Manager

  • In Server Manager, click on “Dashboard” on the list on left.
  • Click on the “Add Roles and Features”, which is option 2 under “Configure this local server”.
  • On the “Before You Begin” page, just click “Next”.
  • On the “Installation Type” page, click “Role-base or feature-based installation” and click “Next”.
  • On the “Server Selection” page, select your server and click “Next”.
  • On the “Server Role” page, select “Active Directory Domain Services”.
  • On the dialog about adding required services, click “Add Features”.
  • On the “Server Role” page, select “DNS Server” and click “Next”.
  • On the dialog about adding required services, click “Add Features”.   
  • On the “Feature” page, just click “Next”.
  • On the “Active Directory Domain Services” page, just click “Next”.
  • On the “DNS Server” page, just click “Next”.
  • On the “Confirmation” page, click “Install”.
  • The roles will be installed.

6.2. Configure Active Directory

  • Create a new domain and forest for the DEMO.TEST domain.

6.2.PS. Using PowerShell

Import-Module ADDSDeployment
Install-ADDSForest `
-CreateDNSDelegation:$false `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "Win2008R2" `
-DomainName "DEMO.TEST" `
-DomainNetBIOSName "DEMO" `
-ForestMode "Win2008R2" `
-InstallDNS:$true `
-LogPath "C:\Windows\NTDS" `
-SafeModeAdministratorPassword (Read-Host -AsSecureString -Prompt "Enter Password") `
-SYSVOLPath "C:\Windows\SYSVOL"

6.2.GUI. Using Server Manager

  • Open Server Manager and click on the “AD DS” option on the right.
  • On the yellow band showing “Configuration Required for Active Directory...” click “More…”
  • On the “All Server Task Details”, click on the action to “Promote this server…”
  • The “Active Directory Domain Services Configuration Wizard” will start.
  • On the “Deployment Configuration” page, select “Add a new forest”.
  • Enter “DEMO.TEST” as the root domain name and click “Next”.
  • On the “Domain Controller Option”, enter the password twice and click “Next”.
  • On the “DNS Options” page, click “Next”.
  • On the “Additional Options” page, click “Next”. (NETBIOS name check takes a while)
  • On the “Paths” page, click “Next”.
  • On the “Review Options” page, click “Next”.
  • On the “Pre-requisites” page, click “Next”. (Pre-requisite checks takes a while)
  • Click “Install”.

6.3. Join the other VMs to the domain

  • After the Domain Controller reboots, for every one of the other 3 VMs, join the domain
  • You will need to provide the domain name (DEMO.TEST) and the Administrator credentials
  • From now on, always log on to any of the VMs using the domain credentials: DEMO.TEST\Administrator

6.3.PS. Using PowerShell (for VM2 to VM4)

Add-Computer -DomainName DEMO.TEST -Restart

6.4. Create the SQL Service account

  • In the Domain Controller, use Active Directory Users and Computers to create a new user account for SQL.
  • The account should be called SQLService and should not require change in the next logon.
  • Set a password for the SQLService account.

6.4.PS. Using PowerShell

New-ADUser -Name SQLService –Enabled $True -UserPrincipalName [email protected] `
-DisplayName SQLService -ChangePasswordAtLogon $False -PasswordNeverExpires $True `
-AccountPassword (Read-Host -AsSecureString "Enter password")

6.4.OUT. Sample Output

PS C:\> Get-ADUser -Filter {Name -like "SQL*"}

DistinguishedName : CN=SQLService,CN=Users,DC=DEMO,DC=TEST
Enabled : True
GivenName :
Name : SQLService
ObjectClass : user
ObjectGUID : 7a02941d-10c7-45f8-b986-1b67a08ddd06
SamAccountName : SQLService
SID : S-1-5-21-3876617879-1076079722-1647216889-1107
Surname :
UserPrincipalName : [email protected]

6.4.GUI. Using Server Manager

  • Open Server Manager
  • In the Tools menu on the upper right, select “Active Directory Users and Computers”
  • Right click the “Users” container on the tree on the left, then select “New”, then “User”
  • Enter “SQLService” as Full Name and User Logon Name, then click “Next”
  • Enter the password twice as required
  • Uncheck “user must change password at next logon” and check “Password never expires”
  • Click “Next”, then click “Finish”

7. Configure iSCSI

  • We’ll create a single Target with 3 Devices (LUNs or VHD files) and used by 2 initiators (DEMO-F1 and DEMO-F2).
  • The devices will include a 1GB VHD for the Cluster Witness volume and two 20GB VHDs for the data volumes.
  • We’ll then configure the initiators and volumes from the File Server side.

7.1. Add the iSCSI Software Target

  • Add the iSCSI Software Target role service to VM2 (DEMO-IT.DEMO.TEST)

7.1.PS. Using PowerShell

Install-WindowsFeature FS-iSCSITarget-Server

7.1.GUI. Using Server Manager

  • In Server Manager, click on “Dashboard” on the list on left
  • Click on the “Add Roles and Features”, which is option 2 under “Configure this local server”
  • On the “Before You Begin” page, just click “Next”
  • On the “Installation Type” page, click “Role-base or feature-based installation” and click “Next”
  • On the “Server Selection” page, expand “File and Storage Services”, then “File Services”
  • Select the “iSCSI Target Server”
  • On the dialog about adding required services, click “Add Features”   
  • Click “Next”
  • On the “Feature” page, just click “Next”
  • On the “Confirmation” page, click “Install”
  • The role will be installed

7.2. Create the LUNs and Target

  • Create the 1st LUN with the file at C:\LUN0.VHD, 1GB in size, description “LUN0”.
  • Create the 2nd and 3rd LUNs at C:\LUN1.VHD and C:\LUN2.VHD, both with 20GB.
  • Add those to a single target, exposed to two initiators by IP address (192.168.101.3 and 192.168.101.4)

7.2.PS. Using PowerShell

New-IscsiServerTarget -TargetName FileCluster -InitiatorID IPAddress:192.168.101.2, IPAddress:192.168.101.3
New-IscsiVirtualDisk -DevicePath C:\LUN0.VHD -Size 1GB
1..2 | % {New-IscsiVirtualDisk -DevicePath C:\LUN$_.VHD -Size 20GB}
0..2 | % {Add-iSCSIVirtualDiskTargetMapping -TargetName FileCluster -DevicePath C:\LUN$_.VHD}

7.2.OUT. Sample output

PS C:\> Get-IscsiServerTarget

ChapUserName :
ClusterGroupName :
ComputerName : DEMO-DC.DEMO.TEST
Description :
EnableChap : False
EnableReverseChap : False
EnforceIdleTimeoutDetection : True
FirstBurstLength : 65536
IdleDuration : 00:00:21
InitiatorIds : {IPAddress:192.168.101.2, IPAddress:192.168.101.3}
LastLogin :
LunMappings : {TargetName:FileCluster;VHD:"C:\LUN0.VHD";LUN:0,
TargetName:FileCluster;VHD:"C:\LUN1.VHD";LUN:1,
TargetName:FileCluster;VHD:"C:\LUN2.VHD";LUN:2}
MaxBurstLength : 262144
MaxReceiveDataSegmentLength : 65536
ReceiveBufferCount : 10
ReverseChapUserName :
Sessions : {}
Status : NotConnected
TargetIqn : iqn.1991-05.com.microsoft:demo-dc-filecluster-target
TargetName : FileCluster

PS C:\> Get-IscsiVirtualDisk

ClusterGroupName :
ComputerName : DEMO-DC.DEMO.TEST
Description :
DiskType : Fixed
HostVolumeId : {C4A5E065-E88F-11E1-93EB-806E6F6E6963}
LocalMountDeviceId :
OriginalPath :
ParentPath :
Path : C:\LUN0.VHD
SerialNumber : 3FDD6603-2F45-4E95-8C0F-0B6A574DA84A
Size : 1073741824
SnapshotIds :
Status : NotConnected
VirtualDiskIndex : 119718233

ClusterGroupName :
ComputerName : DEMO-DC.DEMO.TEST
Description :
DiskType : Fixed
HostVolumeId : {C4A5E065-E88F-11E1-93EB-806E6F6E6963}
LocalMountDeviceId :
OriginalPath :
ParentPath :
Path : C:\LUN2.VHD
SerialNumber : 981545EA-32FF-4BA4-856D-C6F464FEC82F
Size : 21474836480
SnapshotIds :
Status : NotConnected
VirtualDiskIndex : 1469988013

ClusterGroupName :
ComputerName : DEMO-DC.DEMO.TEST
Description :
DiskType : Fixed
HostVolumeId : {C4A5E065-E88F-11E1-93EB-806E6F6E6963}
LocalMountDeviceId :
OriginalPath :
ParentPath :
Path : C:\LUN1.VHD
SerialNumber : BBCB273F-74EF-4E50-AA07-EDCD2E955A3B
Size : 21474836480
SnapshotIds :
Status : NotConnected
VirtualDiskIndex : 1581769191

7.2.GUI. Using Server Manager

  • In Server Manager, click on “File and Storage Services” on the list on left
  • Click on “iSCSI Virtual Disks”
  • On the “Tasks” menu on the right, select “New Virtual Disk…”
  • The “New iSCSI Virtual Disk Wizard” will start
  • On the “Virtual Disk Location” page, with the DEMO-IT server and “C:” volume selected, click “Next”
  • On the “Virtual Disk Name” page, enter “LUN0” as the Name, then click “Next”
  • On the “Virtual Disk Size” page, enter 1GB as the size, then click “Next”
  • On the “iSCSI Target” page, with the “New iSCSI target” option selected, click “Next”
  • On the “iSCSI Target Name” page, enter “FileCluster” as the name, then click “Next”
  • On the “Access Servers” page, click on “Add…”
  • Select “Enter a value...”, select “IP Address”, enter “192.168.101.3”, then click “OK”
  • On the “Access Servers” page, click on “Add…” again
  • Select “Enter a value...”, select “IP Address”, enter “192.168.101.4”, then click “OK”
  • With the two iSCSI Initiators specified, click “Next”
  • On the “Enable Authentication” page, click “Next”
  • On the “Confirmation” page, click “Create”
  • When the wizard is done, click “Close”.
  • On the “Tasks” menu on the right, select “New Virtual Disk…”
  • The “New iSCSI Virtual Disk Wizard” will start
  • On the “Virtual Disk Location” page, with the DEMO-IT server and “C:” volume selected, click “Next”
  • On the “Virtual Disk Name” page, enter “LUN1” as the Name, then click “Next”
  • On the “Virtual Disk Size” page, enter 20GB as the size, then click “Next”
  • On the “iSCSI Target” page, with the “Select Existing iSCSI target” option selected, click “Next”
  • On the “Confirmation” page, click “Create”
  • When the wizard is done, click “Close”.
  • Repeat the steps above to create a LUN2 with 20GB and add to the same target.

7.3. Configure the iSCSI Initiators

  • Now we shift to the two File Servers, which will run the iSCSI Initiator.
  • We’ll do this on VM2 and VM3 (or DEMO-F1 and DEMO-F2).
  • Make sure to log on using the domain administrator (DEMO\Administrator), not the local Administrator.
  • You will then start the iSCSI Initiator, configuring the service to start automatically.
  • You will then connect the initiator to the iSCSI Target we just configured on DEMO-IT

7.3.PS. Using PowerShell

Set-Service MSiSCSI -StartupType automatic
Start-Service MSiSCSI
New-iSCSITargetPortal -TargetPortalAddress 192.168.101.1
Get-iSCSITarget | Connect-iSCSITarget
Get-iSCSISession | Register-iSCSISession

7.3.OUT. Sample output

PS C:\> Get-IscsiTargetPortal

InitiatorInstanceName :
InitiatorPortalAddress :
IsDataDigest : False
IsHeaderDigest : False
TargetPortalAddress : 192.168.101.1
TargetPortalPortNumber : 3260
PSComputerName :

PS C:\> Get-IscsiTarget | Format-List

IsConnected : True
NodeAddress : iqn.1991-05.com.microsoft:demo-dc-filecluster-target
PSComputerName :

PS C:\> Get-IscsiConnection

ConnectionIdentifier : fffffa8002d12020-3
InitiatorAddress : 0.0.0.0
InitiatorPortNumber : 37119
TargetAddress : 192.168.101.1
TargetPortNumber : 3260
PSComputerName :

PS C:\> Get-Disk

Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 127 GB MBR
1 MSFT Virtual HD SCSI Disk Device Offline 1 GB RAW
2 MSFT Virtual HD SCSI Disk Device Offline 20 GB RAW
3 MSFT Virtual HD SCSI Disk Device Offline 20 GB RAW

7.3.GUI. Using Server Manager

  • Open Server Manager
  • In the Tools menu on the upper right, select “iSCSI Initator”
  • Click on “Yes” on the prompt about automatically starting the iSCSI Initiator.
  • Enter “192.168.101.2” on the Target field and click the “Quick Connect…” button next to it.
  • Verify the status shows as “Connect” and click on “Done”
  • Click on the “Volume and Devices” tab and click on the “Auto Configure” button.
  • Verify that three volumes show up on the Volume List.
  • Click “OK” to close the iSCSI Initiator.

7.4. Configure the disks

  • Execute this task only on the first of the two file server (VM2, a.k.a. DEMO-F1).
  • This will configure the three disks exposed by the iSCSI Target (the iSCSI LUNs).
  • They first need to be onlined, initialized and partitioned (we’re using MBR partitions, since the disks are small).
  • Then you will format them and assign each one a driver letter (W:, X: and Y:).
  • Drive W: will be the used as witness disks, while X: and Y: will be data disks for the file server cluster.

7.4.PS. Using PowerShell

1..3 | % {
$d = “-WXY”[$_]
Set-Disk -Number $_ -IsReadOnly 0
Set-Disk -Number $_ -IsOffline 0
Initialize-Disk -Number $_ -PartitionStyle MBR
New-Partition -DiskNumber $_ -DriveLetter $d –UseMaximumSize
Initialize-Volume -DriveLetter $d -FileSystem NTFS -Confirm:$false
}

7.4.OUT. Sample output

PS C:\> Get-Disk

Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 127 GB MBR
1 MSFT Virtual HD SCSI Disk Device Online 1 GB MBR
2 MSFT Virtual HD SCSI Disk Device Online 20 GB MBR
3 MSFT Virtual HD SCSI Disk Device Online 20 GB MBR

PS C:\> Get-Volume | Sort DriveLetter

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus SizeRemaining Size
----------- --------------- ---------- --------- ------------ ------------- ----
System Reserved NTFS Fixed Healthy 108.7 MB 350 MB
A Removable Healthy 0 B 0 B
C NTFS Fixed Healthy 118.29 GB 126.66 GB
D CD-ROM Healthy 0 B 0 B
W NTFS Fixed Healthy 981.06 MB 1022.93 MB
X NTFS Fixed Healthy 19.9 GB 20 GB
Y NTFS Fixed Healthy 19.9 GB 20 GB

7.4.GUI. Using Server Manager

  • Open the Disk Management tool
  • Online all three offline disks (the iSCSI LUNs)
  • Initialize them (you can use MBR partitions, since they are small)
  • Create a new Simple Volume on each one using all the disk space on the LUN
  • Quick-format them with NTFS as the file system
  • Assign each one a drive letter (W:, X: and Y:)

8. Configure the File Server

8.1 Install the required roles and features

  • Now we need to configure VM2 and VM3 as file servers and cluster nodes

8.1.PS. Using PowerShell (from both VM2 and VM3)

Install-WindowsFeature File-Services, FS-FileServer, Failover-Clustering
Install-WindowsFeature RSAT-Clustering -IncludeAllSubFeature
Install-WindowsFeature RSAT-File-Services -IncludeAllSubFeature

8.1.OUT. Sample output

PS C:\> Get-WindowsFeature *File*, *Cluster*

Display Name Name Install State
------------ ---- -------------
[X] File And Storage Services FileAndStorage-Services Installed
[X] File and iSCSI Services File-Services Installed
[X] File Server FS-FileServer Installed
[X] Failover Clustering Failover-Clustering Installed
[X] Failover Clustering Tools RSAT-Clustering Installed
[X] Failover Cluster Management Tools RSAT-Clustering-Mgmt Installed
[X] Failover Cluster Module for Windows ... RSAT-Clustering-Powe... Installed
[X] Failover Cluster Automation Server RSAT-Clustering-Auto... Installed
[X] Failover Cluster Command Interface RSAT-Clustering-CmdI... Installed
[X] File Services Tools RSAT-File-Services Installed
[X] Share and Storage Management Tool RSAT-CoreFile-Mgmt Installed

8.1.GUI. Using Server Manager

  • For both DEMO-F1 and DEMO-F2, from Server Manager, select Add Role and check File and Storage Services.
  • Next, select Add Feature and check Failover Clustering

8.2. Validate the Failover Cluster Configuration

8.2.PS. Using PowerShell (From VM2, DEMO-F1)

Test-Cluster -Node DEMO-F1, DEMO-F2

8.2.OUT. Sample output

image

8.2.GUI. Using Server Manager

  • On VM2 (DEMO-F1), open Server Manager.
  • On the Tools menu on the upper right, select “Failover Cluster Manager”
  • In Failover Cluster Manager and click on the option to “Validate a Configuration…”
  • The “Validate a Configuration Wizard” will start. Click “Next”
  • Add the two file servers: DEMO-F1 and DEMO-F2. Then click “Next”
  • Select the option to “Run all tests”. Click “Next”. Click “Next” again to confirm.
  • Let the validation process run. It will take a few minutes to complete.
  • Validation should not return any errors.
  • If it does, review the previous steps and make sure to address any issues listed in the validation report.

8.3. Create a Failover Cluster

8.3.PS. Using PowerShell (From VM2, DEMO-F1)

New-Cluster –Name DEMO-FC -Node DEMO-F1, DEMO-F2

8.3.GUI. Using Server Manager

  • On VM2 (DEMO-F1), open Server Manager.
  • On the Tools menu on the upper right, select “Failover Cluster Manager”
  • In Failover Cluster Manager and click on the option to “Create a Cluster…”
  • The “Create a Cluster Wizard” will start. Click “Next”
  • Add the two file servers: DEMO-F1 and DEMO-F2. Then click “Next”
  • Enter the Cluster Name: DEMO-FC. Then click “Next”
  • Click “Next” again to confirm.
  • Click “Finish” after the cluster is created.

image

8.4. Configure the Cluster Networks

  • For consistency, you should rename the Cluster networks to match the names used previously.
  • You should also configure the Internal networks to be used by cluster, but not the External one.

8.4.PS. Using PowerShell (From VM2, DEMO-F1)

(Get-ClusterNetwork | ? Address -like 192.168.101.* ).Name = "Internal1"
(Get-ClusterNetwork | ? Address -like 192.168.102.* ).Name = "Internal2”
(Get-ClusterNetwork | ? Address -like 192.168.103.* ).Name = "Internal3”
(Get-ClusterNetwork | ? Name -notlike Internal* ).Name = "External"
(Get-ClusterNetwork Internal1).Role = 3
(Get-ClusterNetwork Internal2).Role = 3
(Get-ClusterNetwork Internal3).Role = 3
(Get-ClusterNetwork External).Role = 1

8.4.OUT. Sample Output

PS C:\> Get-ClusterNetwork | Select *

Cluster : DEMO-FC
State : Up
Name : External
Ipv6Addresses : {2001:4898:2a:3::, 2001:4898:0:fff:0:5efe:10.123.180.0}
Ipv6PrefixLengths : {64, 119}
Ipv4Addresses : {10.123.180.0}
Ipv4PrefixLengths : {23}
Address : 10.123.180.0
AddressMask : 255.255.254.0
Description :
Role : 1
AutoMetric : True
Metric : 30240
Id : 14cab1e8-c16c-46fa-bf01-afc808d29368

Cluster : DEMO-FC
State : Up
Name : Internal1
Ipv6Addresses : {}
Ipv6PrefixLengths : {}
Ipv4Addresses : {192.168.101.0}
Ipv4PrefixLengths : {24}
Address : 192.168.101.0
AddressMask : 255.255.255.0
Description :
Role : 3
AutoMetric : True
Metric : 70242
Id : 16603183-5639-44a0-8e5e-3934280866cd

Cluster : DEMO-FC
State : Up
Name : Internal2
Ipv6Addresses : {}
Ipv6PrefixLengths : {}
Ipv4Addresses : {192.168.102.0}
Ipv4PrefixLengths : {24}
Address : 192.168.102.0
AddressMask : 255.255.255.0
Description :
Role : 3
AutoMetric : True
Metric : 70241
Id : 528c89bc-8704-4d1a-aa80-65bd5c25e3e5

Cluster : DEMO-FC
State : Up
Name : Internal3
Ipv6Addresses : {}
Ipv6PrefixLengths : {}
Ipv4Addresses : {192.168.103.0}
Ipv4PrefixLengths : {24}
Address : 192.168.103.0
AddressMask : 255.255.255.0
Description :
Role : 3
AutoMetric : True
Metric : 70243
Id : 0f59076d-5536-4d69-af43-271cc4f76723

8.4.GUI. Using Server Manager

  • In Failover Cluster Manager, expand the nodes until you find the “Networks” node.
  • For each network, right-click the name and click “Properties”.
  • Enter the name Internal1, Internal2, Internal3 or External, according to their IP addresses.
  • For the External network, make sure “Allow cluster…” is selected and “Allow clients…” is *not* checked.
  • For all Internal networks, select “Allow cluster…” and check the “Allow clients…” checkbox.

image

8.5. Add data disks to Cluster Shared Volumes (CSV)

  • Add the disks to the list of Cluster Shared Volumes.

8.5.PS. Using PowerShell (From VM2, DEMO-F1)

Get-ClusterResource | ? OwnerGroup -like Available* | Add-ClusterSharedVolume

8.5.GUI. Sample Output

PS C:\> Get-ClusterResource

Name State OwnerGroup ResourceType
---- ----- ---------- ------------
Cluster Disk 3 Online Cluster Group Physical Disk
Cluster IP Address Online Cluster Group IP Address
Cluster IP Address 2001:48... Online Cluster Group IPv6 Address
Cluster Name Online Cluster Group Network Name

PS C:\> Get-ClusterSharedVolume

Name State Node
---- ----- ----
Cluster Disk 1 Online DEMO-F1
Cluster Disk 2 Online DEMO-F2

8.5.GUI. Using Server Manager

  • In Failover Cluster Manager, expand the nodes until you find the “Storage” node.
  • Select the two disks currently assigned to “Available Storage”.
  • Right click the two selected disks and click on “Add to Cluster Shared Volumes”

image

8.6. Create the Scale-Out File Server

  • Create a Scale-Out File Server.

8.6.PS. Using PowerShell (From VM2, DEMO-F1)

Add-ClusterScaleOutFileServerRole -Name DEMO-FS

8.6.OUT. Sample Output

PS C:\> Get-ClusterGroup DEMO-FS

Name OwnerNode State
---- --------- -----
DEMO-FS DEMO-F1 Online

PS C:\> Get-ClusterGroup DEMO-FS | Get-ClusterResource

Name State OwnerGroup ResourceType
---- ----- ---------- ------------
DEMO-FS Online DEMO-FS Distributed Network Name
Scale-Out File Server (\\D... Online DEMO-FS Scale Out File Server

8.6.GUI. Using Server Manager

  • On the Failover Cluster Manager, select the main node on the tree (with the cluster name)
  • On the actions menu on the right, select “Configure Role…”
  • The “High Availability Wizard” will start. Click “Next”
  • On the “Select Role” page, select “File Server” and click “Next”
  • On the “File Server Type” page, select “File Server for scale-out application data” and click “Next”
  • On the “Client Access Point” page, specify the name of the service as DEMO-FS
  • On the “Confirmation” page, click “Next”.
  • Click “Finish” after the configuration is completed.

image

8.7. Create the folders and shares

  • In this step, you will create two shares: one for database files and one for log files

8.7.PS. Using PowerShell (From VM2, DEMO-F1)

MD C:\ClusterStorage\Volume1\DATA
New-SmbShare -Name DATA -Path C:\ClusterStorage\Volume1\DATA -FullAccess DEMO.TEST\Administrator, DEMO.TEST\SQLService
(Get-SmbShare DATA).PresetPathAcl | Set-Acl

MD C:\ClusterStorage\Volume2\LOG
New-SmbShare -Name LOG -Path C:\ClusterStorage\Volume2\LOG -FullAccess DEMO.TEST\Administrator, DEMO.TEST\SQLService
(Get-SmbShare LOG).PresetPathAcl | Set-Acl

8.7.OUT. Sample Output

PS C:\> Get-SmbShare Data, Log

Name ScopeName Path Description
---- --------- ---- -----------
DATA DEMO-FS C:\ClusterStorage\Volume1\...
LOG DEMO-FS C:\ClusterStorage\Volume2\LOG

PS C:\> Get-SmbShare Data, Log | Select *

PresetPathAcl : System.Security.AccessControl.DirectorySecurity
ShareState : Online
AvailabilityType : ScaleOut
ShareType : FileSystemDirectory
FolderEnumerationMode : Unrestricted
CachingMode : Manual
CATimeout : 0
ConcurrentUserLimit : 0
ContinuouslyAvailable : True
CurrentUsers : 0
Description :
EncryptData : False
Name : DATA
Path : C:\ClusterStorage\Volume1\DATA
Scoped : True
ScopeName : DEMO-FS
SecurityDescriptor : O:BAG:DUD:(A;;FA;;;S-1-5-21-3876617879-1076079722-1647216889-500)(A;;FA;;;S-1-5-21-3876617879-1
076079722-1647216889-1107)
ShadowCopy : False
Special : False
Temporary : False
Volume : \\?\Volume{4789973e-1f33-4d27-9bf1-2e9ec6da13a0}\
PSComputerName :
CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbShare
CimInstanceProperties : {AvailabilityType, CachingMode, CATimeout, ConcurrentUserLimit...}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties

PresetPathAcl : System.Security.AccessControl.DirectorySecurity
ShareState : Online
AvailabilityType : ScaleOut
ShareType : FileSystemDirectory
FolderEnumerationMode : Unrestricted
CachingMode : Manual
CATimeout : 0
ConcurrentUserLimit : 0
ContinuouslyAvailable : True
CurrentUsers : 0
Description :
EncryptData : False
Name : LOG
Path : C:\ClusterStorage\Volume2\LOG
Scoped : True
ScopeName : DEMO-FS
SecurityDescriptor : O:BAG:DUD:(A;;FA;;;S-1-5-21-3876617879-1076079722-1647216889-500)(A;;FA;;;S-1-5-21-3876617879-1
076079722-1647216889-1107)
ShadowCopy : False
Special : False
Temporary : False
Volume : \\?\Volume{888f5e8c-c91c-4bcf-b4b2-cc4e427ee54c}\
PSComputerName :
CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbShare
CimInstanceProperties : {AvailabilityType, CachingMode, CATimeout, ConcurrentUserLimit...}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties

8.7.GUI. Using Server Manager

  • On the Failover Cluster Manager, select the Roles node on the tree on the left.
  • Click on the DEMO-FS role and then click on “Add Shared Folder” on the actions menu on the right.
  • The “New Share Wizard” will start.
  • On the “Select Profile” page, select “SMB Share – Server Application” and click “Next”
  • On the “Share Location” page, select “C:\ClusterStorage\Volume1” as the location. Click “Next”.
  • On the “Share Name” page, enter “Data” as the share name, click “Next”.
  • On the “Other Settings” page, just click “Next”
  • On the “Permissions” page, click on “Customize permissions…”
  • Click on “Add”, then click on “Select a Principal”.
  • Enter “DEMO\Administrator”, click on “Check Names” and then click “OK”.
  • Click “Full Control” and click “OK”.
  • Click on “Add”, then click on “Select a Principal”.
  • Enter “DEMO\SQLService”, click on “Check Names” and then click “OK”.
  • Click “Full Control” and click “OK”.
  • Click “OK”, then click on “Next”, then click on “Create”
  • Click on “Close” after the wizard finishes creating the share.
  • Repeat the process for a share called “LOG” on Volume2.

image


9. Configure the SQL Server

9.1. Mount the SQL Server ISO file

  • Copy the SQL Server 2012 ISO file to the C:\ISO folder.
  • Mount that in the DVD for VM4, DEMO-DB.

9.1.PS. Using PowerShell

Set-VMDvdDrive –VMName VM4 -Path C:\ISO\SQLFULL_ENU.iso

9.1.GUI. Using Hyper-V Manager

  • In Server Manager, click on “Tools” in the upper left and select “Hyper-V Manager”
  • In Hyper-V Manager, click on the server name on the pane on the left
  • Right-click VM4 and click on “Connect…”
  • In the “Media” menu, select “DVD Drive” and then “Insert Disk…”
  • Point to the SQL Server 2012 ISO file under the C:\ISO folder.

9.2. Run SQL Server Setup

  • From VM4 (DEMO-DB), run SQL Server 2012 setup from the DVD.
  • In the “SQL Server Installation Center”, click on “Installation”, then select “New SQL Server stand-alone…”
  • Let it verify the SQL Server Setup Support Rules pass and click “OK”
  • Select “Evaluation” under “Specify a free edition” and click “Next”
  • Review the licensing terms and click “Next”
  • “SQL Server 2012 Setup” will start. Let it verify Setup Support Rules pass and click “Next”.
  • In the “Setup Role” page, select “SQL Server Feature Installation” and click “Next”.
  • In the “Feature selection” page, select only the “Database Engine Services” and the “Management Tools”.
  • Use the default directories. Click “Next”.
  • In the “Installation Rules” page, click “Next”.
  • In the “Instance Configuration” page, click “Next”
  • In the “Disk Space Requirements” page, click “Next”.
  • In the “Server Configuration” page, enter “DEMO.TEST\SQLService” as the account name for the SQL Server Database Engine and the SQL Server Agent, set them both to start automatically. Click “Next”
     
    clip_image024
     
  • In the “Database Engine Configuration” page, click on “Add Current User”.
  • Click on the “Data Directories” tab. Enter “\\DEMO-FS\DATA” as the “Data Root Directory”.
  • Fix the two path for Log directories to use “\\DEMO-FS\LOG” instead of the data folder.
     
    clip_image025
     
  • You will be prompted to confirm the right permissions are assigned on the share. Click “Yes”.
     
    clip_image026
     
  • On the “Error reporting” page, click “Next”
  • On the “Installation Configuration Rules” page, click “Next”
  • On the “Ready to Install” page, click “Install”
  • The installation will complete.

9.3. Create a database using the clustered file share

  • On the SQL Server VM, open SQL Server Management Studio.
  • On the “Connect to Server” window, accept the default server name and authentication. Click “Connect”.
  • Right click the main node, select Properties and click on the “Database Settings”.
  • Verify that that the “Database default locations” point to the file shares entered earlier.
     
    clip_image027
     
  • Click “OK” to close the “Server Properties”.
  • Expand the tree on the left to find the Databases node.
  • Right-click “Databases” and select “New Database…”
  • Enter “Orders” as the database name and note the path pointing to the clustered file share.
  • Scroll the bar to the right to see the Path column:
     
    clip_image028
     
  • Click “OK” to create the database.

10. Verify SMB features

10.1. Verify that SMB Multichannel is working

  • Use PowerShell to verify that SMB is indeed using multiple interfaces.

10.1.PS. Using PowerShell (from VM4, DEMO-DB)

Get-SmbConnection
Get-SmbMultichannelConnection

10.1.OUT. Sample output

PS C:\> Get-SmbConnection

ServerName ShareName UserName Credential Dialect NumOpens
---------- --------- -------- ---------- ------- --------
DEMO-FS Data DEMO\SQLService DEMO.TEST\SQLSer... 3.00 11
DEMO-FS Log DEMO\SQLService DEMO.TEST\SQLSer... 3.00 2

PS C:\> Get-SmbMultichannelConnection

Server Name Selected Client IP Server IP Client Server Client RSS Client RDMA
Interface Interface Capable Capable
Index Index
----------- -------- --------- --------- -------------- -------------- -------------- --------------
DEMO-FS True 192.168.103.4 192.168.103.3 23 22 True False
DEMO-FS True 192.168.101.4 192.168.101.3 19 18 True False
DEMO-FS True 192.168.102.4 192.168.102.3 21 16 True False

10.2. Query the SMB Sessions and Open Files

  • Use PowerShell to verify sessions and open files.

10.2.PS. Using PowerShell (from VM2, DEMO-F1 or VM3, DEMO-F2)

Get-SmbSession
Get-SmbOpenFile | Sort Path
Get-SmbOpenFile | Sort Path | FT Path

10.2.OUT. Sample output

PS C:\> Get-SmbSession

SessionId ClientComputerName ClientUserName NumOpens
--------- ------------------ -------------- --------
154618822685 [fe80::a08a:1e3d:8e27:3288] DEMO\DEMO-F2$ 0
154618822681 [fe80::407e:dd35:3c1c:bec5] DEMO\DEMO-F1$ 0
8813272891477 192.168.101.4 DEMO\SQLService 13

PS C:\> Get-SmbOpenFile | Sort Path

FileId SessionId Path ShareRelativePath ClientComputerName ClientUserName
------ --------- ---- ----------------- ------------------ --------------
8813272893453 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893465 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893577 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893589 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893545 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893557 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893993 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893665 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893417 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893505 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893497 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272894041 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService
8813272893673 8813272891477 C:\ClusterStorag... MSSQL11.MSSQLSER... 192.168.101.4 DEMO\SQLService

PS C:\> Get-SmbOpenFile | Sort Path | FT Path

Path
----
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\model.mdf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\modellog.ldf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\Orders.mdf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\DATA\tempdb.mdf
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\Log\ERRORLOG
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\Log\log_1.trc
C:\ClusterStorage\Volume1\DATA\MSSQL11.MSSQLSERVER\MSSQL\Log\system_health_0_129897856369790000.xel
C:\ClusterStorage\Volume2\LOG\MSSQL11.MSSQLSERVER\MSSQL\Data\Orders_log.ldf
C:\ClusterStorage\Volume2\LOG\MSSQL11.MSSQLSERVER\MSSQL\Data\templog.ldf

10.3. Planned move of a file server node (with SMB Transparent Failover of SQL Client)

  • Use SMB Transparent Failover and Witness to move the SMB Client (SQL Server) between the two File Server cluster nodes.
  • Note: Moves can sometimes take a few seconds to complete, so you might need to repeat the command to see the witness.

10.3.PS. Using PowerShell (from VM2, DEMO-F1 or VM3, DEMO-F2)

Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName
Move-SmbWitnessClient -ClientName DEMO-DB -DestinationNode DEMO-F1
1..10 | % {Start-Sleep 5; Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName }

10.3.OUT. Sample output

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F1

PS C:\> Move-SmbWitnessClient -ClientName DEMO-DB -DestinationNode DEMO-F2

Confirm
Are you sure you want to perform this action?
Performing operation 'Move' on Target 'DEMO-DB'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F2

PS C:\> Move-SmbWitnessClient -ClientName DEMO-DB -DestinationNode DEMO-F1

Confirm
Are you sure you want to perform this action?
Performing operation 'Move' on Target 'DEMO-DB'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F2

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F1

10.4. Unplanned failure of a file server node (with SMB Transparent Failover of SQL Client)

  • Restart one of the servers to force an SMB Transparent Failover to move the SMB Client (SQL Server) between the two File Server cluster nodes.
  • Note: After the failover, the client moves to the surviving nodes transparently (in just a few seconds). However, there will be no witness servers available then. That’s fine, but during that time we’re running with a single surviving file server node, with no witness. After the file server restarts and becomes available again (which could take a minute or so) the client will reconnect to it as a witness and we are back in a two-file-server configuration.

10.4.PS. Using PowerShell (from VM2, DEMO-F1)

Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName
Restart-Computer –ComputerName DEMO-F2 –Force
1..100 | % { Start-Sleep 5; Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName }

10.4.OUT. Sample output

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F2

PS C:\> Restart-Computer -ComputerName DEMO-F2 -Force

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

PS C:\> Get-SmbWitnessClient | FT ClientName, NetworkName, FileServerNodeName

ClientName NetworkName FileServerNodeName
---------- ----------- ------------------
DEMO-DB DEMO-FS DEMO-F1

10.5. Surviving the loss of a client NIC

  • Observe that SMB Multichannel will protect the SQL Server from the failure of a NIC.

10.5.PS. Using PowerShell (from VM4, DEMO-DB)

Get-SmbMultichannelConnection
Disable-NetAdapter -InterfaceAlias Internal3 –Confirm:$false ; Start-Sleep 20

Get-SmbMultichannelConnection

Enable-NetAdapter -InterfaceAlias Internal3 ; Start-Sleep 20
Get-SmbMultichannelConnection

10.5.OUT. Sample output

PS C:\> Get-SmbMultichannelConnection

Server Name Selected Client IP Server IP Client Server Client RSS Client RDMA
Interface Interface Capable Capable
Index Index
----------- -------- --------- --------- -------------- -------------- -------------- --------------
DEMO-FS True 192.168.103.4 192.168.103.3 23 22 True False
DEMO-FS True 192.168.101.4 192.168.101.3 19 18 True False
DEMO-FS True 192.168.102.4 192.168.102.3 21 16 True False

PS C:\> Disable-NetAdapter -InterfaceAlias Internal3 –Confirm:$false ; Start-Sleep 20
PS C:\> Get-SmbMultichannelConnection

Server Name Selected Client IP Server IP Client Server Client RSS Client RDMA
Interface Interface Capable Capable
Index Index
----------- -------- --------- --------- -------------- -------------- -------------- --------------
DEMO-FS True 192.168.101.4 192.168.101.3 19 18 True False
DEMO-FS True 192.168.102.4 192.168.102.3 21 16 True False

PS C:\> Enable-NetAdapter -InterfaceAlias Internal3 ; Start-Sleep 20
PS C:\> Get-SmbMultichannelConnection

Server Name Selected Client IP Server IP Client Server Client RSS Client RDMA
Interface Interface Capable Capable
Index Index
----------- -------- --------- --------- -------------- -------------- -------------- --------------
DEMO-FS True 192.168.103.4 192.168.103.3 23 22 True False
DEMO-FS True 192.168.101.4 192.168.101.3 19 18 True False
DEMO-FS True 192.168.102.4 192.168.102.3 21 16 True False


11. Shut down, startup and install final notes

  • Keep in mind that there are dependencies between the services running on each VM.
  • To shut them down, start with VM4 and end with VM1, waiting for each one to go down completely before moving to the next one.
  • To bring the VMs up, go from VM1 to VM4, waiting for the previous one to be fully up (with low to no CPU usage) before starting the next one.
  • You might want to also take a snapshot of the VMs after you shut them down, just in case you want to bring them back to the original state after experimenting with them for a while.
  • If you do, you should always snapshot all of them, again due to dependencies between them. Just right-click the VM and select the “Snapshot” option.
  • As a last note, the total size of the VHDX files (base plus 4 diffs), after all the steps were performed, was around 19 GB. 

image


12. Conclusion

I hope you enjoyed these step-by-step instructions. I strongly encourage you to try them out and perform the entire installation yourself. It’s a good learning experience.

 

Note: If you want to print this post, I have attached a printer-friendly PDF version below. Thanks for the suggestion, Keith!

Windows Server 2012 Scale-Out File Server for SQL Server 2012.pdf

Comments

  • Anonymous
    January 01, 2003
    Many thanks for the excellent article. I will have to download the document and then send it to my team.-T.s
  • Anonymous
    August 23, 2012
    This is great! Thank Mr. Jose. You just made my day!
  • Anonymous
    September 02, 2012
    Loved the article, fantastic that you told the GUI and PowerShell solutions..
  • Anonymous
    January 31, 2017
    I Tried taking VSS Snapshots of one of the Scaled out Shares . Everytime I Get E_VSS_SNAPSHOT_IN_PROGRESS Error . Any Solutions .
  • Anonymous
    December 01, 2017
    It's a nice article but there are some limitations with SQL SERVER 2012 on SOFS w.r.t CHECKDB . If you can watch the below video from 19th minute you will get it :https://sqlbits.com/Sessions/Event12/Running_SQL_Server_2014_on_a_Scale_Out_File_ServerAny tips to overcome that problem ?????