How to create a Windows Server 2008 cluster from the command line?

Creating a cluster in Server 2008 using the cluster.exe command follows essentially the same process as creating a cluster by using the Microsoft Management Console (MMC) Failover Cluster Management snap-in. The process essentially consists of telling the Create Cluster Wizard the nodes that will be in the cluster and then the network name and static IP address (if dynamic IP isn’t used on the NICs).

Before you attempt to create a Server 2008 cluster, you need to install the Server 2008 Failover Clustering feature. If you’re running Server Core, you’d use the following command to install failover clustering:

start /w ocsetup FailoverCluster-Core

On a full Server 2008 installation, you can install failover clustering by running this command:

servermanagercmd -install Failover-Clustering

(Of course, you can also use the MMC Server Manager snap-in to install features, but here we’re concentrating on the command line.) To create a Server 2008 cluster from the command line, run cluster.exe using the following format:

cluster /cluster: /create /nodes:" " /ipaddress: /

Here’s a cluster.exe command example and its ouput:

C:\>cluster /cluster:savdalclusfs01 /create /nodes:"savdalclus01 savdalclus02" /ipaddress:192.168.1.105/255.255.255.0

4% Initializing Cluster savdalclusfs01.
9% Validating cluster state on node savdalclus01.
13% Searching the domain for computer object savdalclusfs01
18% Verifying computer object savdalclusfs01 in the domain
22% Configuring computer object savdalclusfs01 as cluster name object
27% Validating installation of the Microsoft Failover Cluster Virtual Adapter o
n node savdalclus01.
31% Validating installation of the Cluster Disk Driver on node savdalclus01.
36% Configuring Cluster Service on node savdalclus01.
40% Validating installation of the Microsoft Failover Cluster Virtual Adapter o
n node savdalclus02.
45% Validating installation of the Cluster Disk Driver on node savdalclus02.
50% Configuring Cluster Service on node savdalclus02.
54% Starting Cluster Service on node savdalclus01.
54% Starting Cluster Service on node savdalclus02.
59% Forming cluster savdalclusfs01.
63% Adding cluster common properties to savdalclusfs01.
68% Creating resource types on cluster savdalclusfs01.
72% Creating group 'Cluster Group'.
72% Creating group 'Available Storage'.
77% Creating IP Address resource 'Cluster IP Address'.
81% Creating Network Name resource 'savdalclusfs01'.
86% Searching the domain for computer object savdalclusfs01
90% Verifying computer object savdalclusfs01 in the domain
95% Configuring computer object savdalclusfs01 as cluster name object
100% Bringing resource group 'Cluster Group' online.

When you create a cluster at the command line, disk resources are not added automatically and Node Majority will be used as the quorum mode.

How to add disk resources to a Windows Server 2008 cluster from the command line?
To add a disk resource, you must first create a resource group for the disk, then add the disk into the new resource group. As you can see in the following sample command, which creates a resource group, I've called my resource Quorum Disk (you can name the new resource whatever you want), and I've added the resource to available storage group.

C:\>cluster res "Quorum Disk" /create /group:"Available Storage" /type:"Physical Disk"

Here’s the command’s output:
Creating resource 'Quorum Disk'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
Quorum Disk          Available Storage    savdalclus01    Offline

The next step is to add one or more disks. Before you do so, you’ll need the disk ID, which you can obtain by using the DiskPart tool, as follows:

C:\>diskpart

You’ll see the following command output and prompts to enter commands (list disk, select disk, and detail disk).

Microsoft DiskPart version 6.0.6001
Copyright (C) 1999-2007 Microsoft Corporation.
On computer: SAVDALCLUS01

DISKPART> list disk
Disk ### Status     Size    Free    Dyn Gpt
-------- ---------- ------- ------- --- ---
Disk 0   Online     127 GB  0       B
Disk 1   Offline    512 MB  0       B
Disk 2   Offline    20 GB   0       B

DISKPART> select disk 1
Disk 1 is now the selected disk.

DISKPART> detail disk

ROCKET IMAGEFILE SCSI Disk Device
Disk ID: DB2875A4
Type : iSCSI
Bus : 0
Target : 1
LUN ID : 0
Read-only : Yes
Boot Disk : No
Pagefile Disk : No
Hibernation File Disk : No
Crashdump Disk : No

There are no volumes.

You can now add a disk by running cluster.exe and specifying either the disk’s GUID (/priv DiskIDGuid) or its signature (/priv DiskSignature), then bring it online. The previous command output shows the signature—DB2875A4—in hexadecimal (a number means that it’s the signature that’s displayed and not the GUID). You’ll need to convert the hex value to a decimal value for use in the cluster.exe command, as follows:

C:\>cluster res "Quorum Disk" /priv DiskSignature=3676861860

Now, to bring the disk online, enter this:

C:\>cluster res "Quorum Disk" /on

You’ll see this output:  
Bringing resource 'Quorum Disk' online...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
Quorum Disk          Available Storage    savdalclus01    Online

The disk will now be available in the available storage area of the Microsoft Management Console (MMC) Failover Cluster Management snap-in and via the cluster res command.

How to change a Windows Server 2008 cluster quorum from the command line?
You can use the cluster.exe command to change a cluster’s quorum mode. To view the existing quorum mode for a cluster, you use the following command (in the format cluster cluster name /quorum), as follows:

C:\>cluster savdalclusfs01 /quorum

You’ll get this output:
Witness Resource Name Path                                       Type
--------------------- --------------------------------------------------
(Node Majority)
Majority


To change the quorum mode, you add a resource for the type of quorum mode you want—for example, a file-share witness—as follows. (Both the commands you enter and their output are shown.)

C:\>cluster /cluster:savdalclusfs01 res "File Share Witness" /create /group:"Cluster Group" /type:"File Share Witness" /priv SharePath=\\savdaldc02\fsw

Creating resource 'File Share Witness'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
File Share Witness   Cluster Group        savdalclus01    Offline


C:\>cluster /cluster:savdalclusfs01 res "File Share Witness" /online

Bringing resource 'File Share Witness' online...

Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
File Share Witness   Cluster Group        savdalclus01    Online

C:\>cluster savdalclusfs01 /quorum:"File Share Witness"

Witness Resource Name Path                                       Type
--------------------- --------------------------------------------------
File Share Witness
Majority

Notice we add the file share as a resource, bring the new resource online, then tell the cluster to use that resource for the quorum. Unlike the procedure for changing the cluster quorum via the Microsoft Management Console (MMC) Failover Cluster Management snap-in, you must give the cluster computer object, and not the administrator, full control on the share. That is, for my cluster I must add account savdalclusfs01$ with full control to the share fsw on server savdaldc02.

To change quorum to a disk witness, you need to move a disk resource into the cluster group, like this:

C:\>cluster res "Quorum Disk" /move:"Cluster Group"

Moving resource 'Quorum Disk' to group 'Cluster Group'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
Quorum Disk          Cluster Group        savdalclus01    Online

Now you need to tell the cluster to use the disk for the quorum:

C:\>cluster /quorum:"Quorum Disk"
Witness Resource Name Path                                          Type
--------------------- -----------------------------------------------------
Quorum Disk           F:\Cluster\
Majority

Note that if you add /disk to the end of the command, you tell the cluster to use disk only and not Node and Disk Majority (the normal mode).

C:\>cluster /quorum:"Quorum Disk" /disk

Quorum Resource Name Path                           Type
-------------------- ------------------------------ --------
Quorum Disk          F:\Cluster\                    No Majority--Disk
Only

You can switch to Node Majority only by running the following command:

C:\>cluster /quorum /node

Witness Resource Name Path                                       Type
--------------------- --------------------------------------------------
(Node Majority)
Majority


How
to move the default Cluster Group in Windows Server 2008?
Microsoft simplified Server 2008 clustering and removed certain features that it deemed nonessential for everyday cluster management, among them the Cluster Group. The Cluster Group should only have three resources in it: the cluster IP address, cluster name, and the witness resources; nothing else should ever be in this group, so it isn’t a feature that administrators typically use.

You can find the Cluster Group’s current location by using either the Microsoft Management Console (MMC) Failover Cluster Management snap-in or the cluster . group command); however, you can move the Cluster Group only by using the command, not the snap-in. In the following command example, I’m moving the group to the savdalclus02 node. Note that if you have only a two-node cluster, you can just use /move without a node name; in that case, the command will simply move the cluster group to the other node in the cluster. (I use the period to show that we’re modifying the local cluster.)

C:\>cluster . group "Cluster Group" /move:savdalclus02

Moving resource group 'Cluster Group'...

Group                Node            Status
-------------------- --------------- ------
Cluster Group        savdalclus02    Online

How to create a new Windows Server 2008 cluster resource group from the command line?
You should never add any resources to the default Cluster Group. Instead, you should create resource groups that you want to use to host resources. When you add a new resource group, at minimum it needs an IP address, a network name, and an instance of a resource type (e.g., file server). Let’s create a new group and a file server resource within it. Note that I use the period (.) to show that we’re modifying the local cluster.

C:\>cluster . group "file server" /create

Creating resource group 'file server'...
Group                Node            Status
-------------------- --------------- ------
file server          savdalclus01    Offline

C:\>cluster . res "File Server" /create /group:"file server" /type:"File Server"

Creating resource 'File Server'...

Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
File Server          file server          savdalclus01    Offline

You can use the cluster restype command to display a full list of resource types, as follows:

C:\>cluster restype

Listing all available resource types:

Display Name                         Resource Type Name
------------------------------------------------------------------------
DHCP Service                         DHCP Service
Distributed File System              Distributed File System
Distributed Transaction Coordinator  Distributed Transaction Coordinator
File Server                          File Server
File Share Quorum Witness            File Share Witness
Generic Application                  Generic Application
Generic Script                       Generic Script
Generic Service                      Generic Service
IP Address                           IP Address
IPv6 Address                         IPv6 Address
IPv6 Tunnel Address                  IPv6 Tunnel Address
iSNSClusRes                          Microsoft iSNS
(Resource Type Unavailable)          MSMQ
(Resource Type Unavailable)          MSMQTriggers
Network Name                         Network Name
NFS Share                            NFS Share
Physical Disk                        Physical Disk
Print Spooler                        Print Spooler
Volume Shadow Copy Service Task      Volume Shadow Copy Service Task
WINS Service                         WINS Service

Now you add the IP address and network name. Note that I created an IPv4 address, but you can also add an IPv6 address if you’re using IPv6.

C:\>cluster . res "FS IP Address" /create /group:"file server" /type:"IP Address" /priv address=192.168.1.106 subnetmask=255.255.255.0

Creating resource 'FS IP Address'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
FS IP Address        file server          savdalclus01    Offline

C:\>cluster . res "FS Name" /create /group:"file server" /type:"Network Name" /priv name="savdalclusfsfs01" dnsname="savdalclusfsfs01"

Creating resource 'FS Name'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
FS Name              file server          savdalclus01    Offline

Now you need to create a dependency between the IP address and the name, like this:

C:\>cluster . res "FS Name" /adddep:"FS IP Address"

Making resource 'FS Name' depend on resource 'FS IP Address'...

C:\>cluster . res "FS Name" /listdep

Listing resource dependency expression for 'FS Name':
----------------------------------------------------------------
([FS IP Address])

Listing resource dependencies for 'FS Name':

Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
FS IP Address        file server          savdalclus02    Online

We can now bring the resources online by using the cluster .res "resource name" /on command.

For most resource group types, you also need some shared storage to actually do anything useful. So let’s move some available storage into the new resource group:

C:\>cluster res "Data Disk" /move:"file server"

Moving resource 'Data Disk' to group 'file server'...
Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
Data Disk            file server          savdalclus01    Online

Now you set the network name and the storage as dependencies for the resource group to be online, like this:

C:\>cluster . res "file server" /adddep:"FS Name"

Making resource 'file server' depend on resource 'FS Name'...

C:\>cluster . res "file server" /adddep:"Data Disk"

Making resource 'file server' depend on resource 'Data Disk'...

C:\>cluster . res "file server" /listdep

Listing resource dependency expression for 'file server':

----------------------------------------------------------------

([Data Disk]) and ([FS Name])

Listing resource dependencies for 'file server':

Resource             Group                Node            Status
-------------------- -------------------- --------------- ------
Data Disk            file server          savdalclus01    Online
FS Name             file server          savdalclus01    Online

You can bring up the resource group by using the cluster .group group name /on command. Finally, you can actually add items to the resource group as you’d do with a share using typical methods, for example

net share data=e:\data /remark:"Data Share"v