Install and Configure Remote BLOB Storage (RBS) in a SharePoint Farm

Optimizing disk usage is on every administrator’s wish list. Tiered storage is becoming an everyday consideration for administrator’s as the ever rising need for storage continues to grow. SharePoint administrators can now utilize Remote BLOB Storage (RBS) capabilities in SharePoint and SQL to take advantage of tiered storage. SharePoint RBS capabilities allow for the storage of potentially larger BLOB SQL database content to less-expensive disks and utilizing the expensive disks for intensive SQL workloads. RBS is available with SharePoint 2010 and 2013, so either version can take advantage of RBS. This article will show you how to configure a SharePoint farm for RBS using the Native SQL FILESTREAM provider. You can use these instructions in either SharePoint 2010 or 2013.

What Is BLOB?

BLOB stands for Binary Large Object. In SharePoint, BLOB is large block of unstructured data that is stored in the content databases. When BLOB is stored in the content databases, it is stored with all the metadata that it is associated with it, causing the database to grow in size. Typically BLOB data comprises word documents, video files, and power points, all of which can be large in size, so storing them outside of the content databases can mean performance improvements to the SQL database. Using RBS allows SharePoint to utilize less-expensive disks for BLOB and optimizes the faster disks for more intensive SQL transactions. When RBS is used with SharePoint, the metadata for the BLOB is stored in the SQL content database while the BLOB data is stored remotely on the RBS store.

In order to use RBS you need a provider. The provider is what communicates and connects the BLOB store to the database. SharePoint supports third-party providers and the local FILESTREAM provider that is part of SQL 2008 installation. Local FILESTREAM basically means storing the BLOB data outside of the content database but still on the same local server. Remote Provider means storing the BLOB data on a different volume or server. There is, however, some limitations with using SharePoint 2013 and Remote RBS Provider – certain backup and restore functions are not supported and can only be used with the local FILESTREAM Provider. Check out this link for more about RBS and SharePoint.

Configure the Database Server

Even though FILESTREAM is installed with SQL 2008 by default, you will need to enable and configure the settings on the SQL server that your SharePoint databases are residing on. You can follow these steps to enable FILESTREAM.

  • Go to SQL Server Configuration Manager and right-click SQL Server Services to open it.
  • Right-click on the instance of the SQL server on which you’re enabling FILESTREAM and select Properties.

SQL BLOB

  • Select the FILESTREAM tab and check the box to Enable FILESTREAM for Transact-SQL access.
  • Type the name of the Windows share.
  • If you want to allow remote clients to connect to the FILESTREAM, then select Allow remote clients to have streaming access to FILESTREAM data, then select Apply.

SQL BLOB

  • Next, open the SQL Server Management Studio, then click on Query.
  • Type the following command in the Query editor (also shown in the image below). When completed, execute the command.
EXEC sp_configure filestream_access_level, 2

RECONFIGURE

SQL BLOB

  • When the query completes, restart the SQL services.

Provision a BLOB Store

Each content database that you want to use RBS with must have a BLOB store provisioned for use. Follow these steps to provision a BLOB Store.

  • Using SQL Server Management Studio, connect to the SQL instance and locate the Content database.
  • Select the database you want to provision for, and click on New Query.
  • You will need to enter the following queries into the editor replacing [WSS_Content] with the database you want to enable RBS for, and c:\BlobStore with the location where you want the BLOB store. Run the queries in the following order:

1st query to run:

use [WSS_Content]

if not exists

(select * from sys.symmetric_keys

where name = N’##MS_DatabaseMasterKey##’)

create master key encryption by password = N’Admin Key Password yourpassword’

SQL BLOB store

2nd query to run:

use [WSS_Content]

if not exists

(select groupname from sysfilegroups

where groupname=N’RBSFilestreamProvider’)

alter database [WSS_Content]

add filegroup RBSFilestreamProvider contains filestream

SQL BLOB store

 

3rd query to run:

use [WSS_Content]

alter database [WSS_Content]

add file (name = RBSFilestreamFile, filename =

‘c:\Blobstore’)

to filegroup RBSFilestreamProvider

SQL BLOB store

 

Install the RBS Client Library on the Web Server

Even though each database is configured separately for the BLOB store, you will only need to install the RBS client once on the web server.

  • Download the RBS_amd64.msi file.
  • Open CMD and type the command (shown below), then press Enter to run it. You will need to change WSS_Content to reflect your database name and DBInstanceName with your SQL Server instance.

msiexec /qn /lvx* rbs_install_log.txt /i RBS_amd64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME=”WSS_Content” DBINSTANCE=”DBInstanceName” FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

To verify the installed successfully type the following command:

Rbs_install_log.txt |find “successfully” /i

 

Install the RBS client library on the Web Server

Note: If you have multiple web servers, then you will need to repeat the steps and type the following command into each additional web server:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_amd64.msi DBNAME=”WSS_Content” DBINSTANCE=”DBInstanceName” ADDLOCAL=Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer

  • Once you are finished with installation, confirm the RBS installation on the databases by checking the database to see if there are tables that start with mssqlrbs%.

Install the RBS client library on the Web Server

Enable RBS on a Content Database Using PowerShell

After installing RBS, it now must be enabled on at least one web server in a SharePoint farm. The only way to enable RBS is through PowerShell, using the following cmdlets. You will need to change the ContentDatabaseName to reflect your database name.

$cdb = Get-SPContentDatabase <ContentDatabaseName>

$rbss = $cdb.RemoteBlobStorageSettings

$rbss.Installed()

$rbss.Enable()

$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])

$rbss

 

Enable RBS on a Content Database

Enabling RBS on all your databases may not be an option – or even practical, as there could be performance considerations depending on the type of disk that is used. However, RBS for SharePoint is definitely worth investigating and it’s a great option if you’re looking to maximize on hardware investment by utilizing tiered storage.