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. Configure DNS and Active Directory... 18
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 12. Conclusion... 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/servercloud/windows-server/2012-trial.aspx SQL Server 2012 Evaluation (provided as an ISO file). Download from http://www.microsoft.com/sqlserver/en/us/get-sqlserver/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. 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 SQLService@DEMO.TEST ` -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 : SQLService@DEMO.TEST 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 1 st LUN with the file at C:\LUN0.VHD, 1GB in size, description LUN0. Create the 2 nd and 3 rd 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
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.
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. Right click the two selected disks and click on Add to Cluster Shared Volumes
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.
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.
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. 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. 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 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. 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: 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. 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.