![]() |
|
|
By: Edwin Sarmiento | Read Comments (4) | Print Edwin works as a SQL Server DBA for The Pythian Group in Ottawa and is a SQL Server MVP. Related Tips: More |
|
You need to provision additional disk subsystem on your SQL Server 2008 Failover Cluster running on Windows Server 2008. However, you are limited by the number of drive letters available to assign to the new disks. How do you do it? Check out this tip to learn more.
One of the biggest challenges when dealing with a Windows Failover Cluster is the limited number of letters available for clustered disk resources. If you have deployment standards such as having a C:\ drive for your operating system and a D:\ drive for applications, you are left with only 23 letters to assign to your disk drives (or maybe we can recommend adding the Greek alphabet in the mix.) While this may seem more than enough drive letters for a SQL Server instance, it becomes challenging when you start distributing your tempdb files, data and log files across multiple disks, not to mention having multiple instances running in a cluster. Volume mountpoints address that limitation. Volume mountpoints are objects in an NTFS file system that point to other volumes. They are implemented as folders within an existing drive that actually points to another drive. The C:\Mountpoints folder properties shown below display the type as a MountedVolume. You can also click on the Properties button of the folder to see the disk properties.

Using mountpoints in SQL Server Failover Cluster is pretty straightforward. However, most of these tasks are done on the Windows operating system. If a different team is responsible for this task, you need not worry about mountpoints because they are transparent to SQL Server. But if you are responsible for the server operating system in addition to being a SQL Server DBA, this tip is for you.
If you look at my basic SQL Server Failover Cluster setup below, I have two clustered disks that are being used by the SQL Server resource group - E:\ and F:\.

We will extend these two clustered drives by adding volume mountpoints so we can have different dedicated disk subsystems for our databases and not just have them in a single clustered disk subsystem like what I currently have. Before configuring the volume mountpoints in the Windows Failover Cluster, make sure that they have been configured and discovered in the Windows operating system. You may need the assistance of your storage vendors or engineers to complete this task. In my clustered environment, I have added two shared iSCSI disks on the server - Disk 2 and Disk 5. I've also configured this on all of the nodes in my cluster.

Before we can add the volume mountpoints in the SQL Server clustered resource group, they have to be made available to the Windows Failover Cluster. Below are the steps to accomplish that task:


Once this is complete, the disks have been added to the Windows Failover Cluster, brought online and moved to the Available Storage group.

To enable SQL Server databases to use volume mountpoints, the mountpoints have to be mounted on a host volume that has a drive letter associated to it. Microsoft does not support storing SQL Server databases on the root of the mountpoint due to permission issues associated with layers of ACLs. Microsoft KB article 819546 describes the different scenarios for using SQL Server on mounted volumes. This is why we will mount the newly added clustered disks to the existing clustered disks that SQL Server already uses. We will be using the Disk Management console to perform the following tasks.







You can verify the steps you took by making sure that the volume does not have a drive letter assigned to it. Also, the icon for the E:\MOUNTPOINT-DATA folder will not be your default folder icon, but rather a shortcut to a drive.

You can also check using the Failover Cluster Management console. The clustered drives added earlier now reflect the new configuration.

Repeat the steps for all the volumes that you want to configure as mountpoints.
Now that the volume mountpoints have been configured, we need to move them to the clustered resource group that contains the SQL Server resource. This is to make sure that the new volume mountpoints get included when the resource group fails over to another node. Bear in mind that the SQL Server clustered resource group should be treated as a single unit and, therefore, all of the components that make up the group - IP address, network name, disks, SQL Server service and SQL Server Agent - should stay together during a failover.
To move the new volume mountpoints to the SQL Server clustered resource group, follow these steps:


Repeat the steps for all the mountpoints that you want to move to their corresponding SQL Server clustered resource group.
Resource dependency is a key concept in Windows Failover Clustering. A dependent resource requires another resource to properly function. For example, in order for the SQL Server resource to function properly, the virtual network name and the clustered disks that store the databases need to be brought online prior to bringing the SQL Server resource online. This can be illustrated by the resource's dependency report.

As part of the scenario that Microsoft supports for volume mountpoints for SQL Server, the mountpoint must be added as a SQL Server dependency. This prevents possible database corruption that may occur during failover. In my example, the two mountpoints I added will be used by my SQL Server instance for data and log files. Therefore, I need to add both of them as dependencies for my SQL Server resource.


After configuring the mountpoints, make sure you test that they work properly. Do note that you cannot install or create databases in the root of the mountpoint - in my example, the E:\MOUNTPOINT-DATA or the F:\MOUNTPOINT-LOG folders. Instead, you need to create a subdirectory under the root of the mountpoint for the proper ACLs and permissions to be granted by SQL Server. For example, we can create the E:\MOUNTPOINT-DATA\MDF folder where we can store the data files and E:\MOUNTPOINT-LOG\LDF folder where we can store the log files. After creating the database files in the newly added volume mountpoints, perform the following tests:
| Share: | Share | Tweet |
|
![]() |
![]() |
Connect with MSSQLTips.com |
| Thursday, February 16, 2012 - 6:52:04 AM - Perry Whittle | Read The Tip |
| Hi it is not recommended or ideal to use an existing drive to host the mounted volume. Create a new root disk for your mount points, this disk should be as small as possible (under 100MB). It is not necessary to set the mounted volumes as dependencies on the SQL Server service resource. You only need to ensure that the mounted volumes have the root drive as a dependency as the root drive must be online before the mount point can start. The SQL Server service will then have a dependency on the root drive itself. You can see this when installing SQL Server, at the section where you come to select the available disks all mount points will be unavailable and only the root disk may be selected. Check out my article on SSC for further info http://www.sqlservercentral.com/articles/mount+points/75855/ Regards Perry | |
| Friday, February 17, 2012 - 6:12:34 AM - bass_player | Read The Tip |
| Hi Perry, Thanks for pointing this out. I agree that it is not recommended to use an existing drive to host the volume mountpoints especially if the existing volume is relatively large. We can keep the size of the root volume to host the mountpoints to as small as 5MB. The only reason I used existing drives is because they are relatively small - 2GB each. I also agree that it isn't necessary to set the mounted volumes as dependencies on the SQL Server service resource because the root volume takes care of that dependency. I'm just being really cautious to make sure that both volumes go online first prior to bringing the SQL Server cluster resource online | |
| Monday, March 19, 2012 - 1:24:27 PM - Bruces | Read The Tip |
|
I would have to agree on the dependance chain that SQL server should not go online until the mountpoints are online. Sure, you can argue that its not going to come online anyway, because the mountpoints don't have the items it needs to start. But if you use mount points for items that SQL Server can start without, but needs for normal business operations, then you should fail instead of run in a 'half there' state. An example to this is your backups directory. For anyone who still uses native disk backups like I do, you may find you need to get that disk IO off of any disk data or logs uses. (Let alone TempDB). I am hihgly dependant on that drive being available. If however my SAN decides it is not going to share that LUN any more (say an overzelous SAN administrator), and my cluster fails over, now its missing something it should have, but can start without, right? In some shops, it may be safe to run loose and carefree. But in a shop like mine where we make money off of these servers directly, being an extra bit paranoid is a good move. |
|
| Monday, March 19, 2012 - 1:49:39 PM - bass_player | Read The Tip |
|
Bruces, I totally agree with you on that. And it's the main reason I have included the mountpoints as dependencies. YOu just have to document these settings on your cluster |
|
|
privacy | disclaimer | copyright | advertise | about authors | contribute | feedback | giveaways | user groups Some names and products listed are the registered trademarks of their respective owners. Edgewood Solutions LLC | MSSharePointTips.com | MSSQLTips.com |