Windows Server 2012 Scale-Out File Server for
SQL Server 2012 - Step-by-step Installation
By Jose Barreto. Originally posted at
http://smb3.info
Contents
1. Introduction ... 3
1.1. Overview ... 3
1.2. Hardware ... 4
1.3. Software... 4
1.4. Notes and disclaimers... 4
2. Install Windows Server 2012 ... 5
2.1. Preparations ... 5
2.2. Install the OS ... 5
2.3. Rename the computer ... 5
2.4. Enable Remote Desktop ... 6
3. Configure the Hyper-V Host ... 7
3.1. Install the Hyper-V role to the server ... 7
3.2. Create the VM switches ... 8
3.3. Rename the network adapters ... 9
3.4. Assign static IP addresses for the Hyper-V host ... 10
4. Create the Base VM ... 11
4.1. Preparations ... 11
4.2. Create a Base VM ... 11
4.3. Install Windows Server 2012 on the VM ... 11
4.4. Sysprep the VM ... 12
4.5. Remove the base VM ... 12
5. Configure the 4 VMs ... 13
5.1. Create 4 new differencing VHDs using the Base VHD ... 13
5.2. Create 4 similarly configured VMs ... 13
5.3. Start the 4 VMs ... 15
5.4. Complete the mini-setup for the 4 VMs... 15
5.5. Change the computer name for each VM ... 15
5.6. For each VM, configure the networks ... 15
5.7. Review VM name and network configuration ... 17
6.1. Install DNS and Active Directory Domain Services ... 18
6.2. Configure Active Directory ... 18
6.3. Join the other VMs to the domain ... 19
6.4. Create the SQL Service account ... 19
7. Configure iSCSI ... 20
7.1. Add the iSCSI Software Target ... 20
7.2. Create the LUNs and Target ... 20
7.3. Configure the iSCSI Initiators ... 22
7.4. Configure the disks ... 23
8. Configure the File Server ... 24
8.1 Install the required roles and features ... 24
8.2. Validate the Failover Cluster Configuration ... 24
8.3. Create a Failover Cluster ... 25
8.4. Configure the Cluster Networks ... 26
8.6. Create the Scale-Out File Server ... 28
8.7. Create the folders and shares ... 29
9. Configure the SQL Server... 31
9.1. Mount the SQL Serve ISO file ... 31
9.2. Run SQL Server Setup ... 31
9.3. Create a database using the clustered file share ... 33
10. Verify SMB features... 34
10.1. Verify that SMB Multichannel is working ... 34
10.2. Query the SMB Sessions and Open Files ... 34
10.3. Planned move of a file server node (with SMB Transparent Failover of SQL Client) ... 35
10.4. Unplanned failure of a file server node (with SMB Transparent Failover of SQL Client) ... 36
10.5. Surviving the loss of a client NIC ... 36
11. Shut down, startup and install final notes ... 38
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.
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:
Windows Server 2012 Evaluation (provided as an ISO file). Download from
http://www.microsoft.com/en-us/server-cloud/windows-server/2012-trial.aspx
SQL Server 2012 Evaluation (provided as an ISO file). Download from
http://www.microsoft.com/sqlserver/en/us/get-sql-server/try-it.aspx
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”.
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…”
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”.
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.
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.
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
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”.
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.
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.
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.
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”
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 “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
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
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.
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.
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”.
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”.
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.
9. Configure the SQL Server
9.1. Mount the SQL Serve 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”
In the “Database Engine Configuration” page, click on “Add Current User”.
Fix the two path for Log directories to use “\\DEMO-FS\LOG” instead of the data folder.
You will be prompted to confirm the right permissions are assigned on the share. Click “Yes”.
On the “Error reporting” page, click “Next”
On the “Installation Configuration Rules” page, click “Next”
On the “Ready to Install” page, click “Install”
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.
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:
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