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