Recently on SharePointPro Connections I got a lot of questions for SharePoint RBS. To help people to get clear on this topic here’s a FAQ… For installation and other documentations please refer to my pervious blog post on this topic: SharePoint 2010 Beta with FILESTREAM RBS Provider. Todd Klindt also has a very nice step by step guide: Installing Remote Blob Store (RBS) on SharePoint 2010.
Q: What is RBS?
From SQL RBS Team Blog:
RBS(Remote Blob Store) is a set of standardized APIs that allow storage/retrieval of BLOBs outside of your main SQL database where a dedicated BLOB store is desirable for various reasons. This uses a provider model for plugging in any dedicated BLOB store that implements these RBS APIs.
Q: Which version of SQL Server can I use for SharePoint RBS?
SQL Server 2008 and SQL Server 2008 R2 both support RBS. A RBS Library needs to be downloaded and installed on SQL Server to enable the feature. All SQL editions (Express, Standard, Enterprise…) support RBS. Licensing requirement may involve depending on the scenarios.
Q: What is FILESTREAM?
FILESTREAM is a SQL Server 2008 feature to store BLOB content on to file system.
From FILESTREAM Overview:
FILESTREAM integrates the SQL Server Database Engine with an NTFS file system by storing varbinary(max) binary large object (BLOB) data as files on the file system. Transact-SQL statements can insert, update, query, search, and back up FILESTREAM data. Win32 file system interfaces provide streaming access to the data.
FILESTREAM uses the NT system cache for caching file data. This helps reduce any effect that FILESTREAM data might have on Database Engine performance. The SQL Server buffer pool is not used; therefore, this memory is available for query processing.
SQL FILESTREAM feature does not allow to store content on anything other than local storages. (SMB shares cannot be used for store BLOB content)
Q: Is there a comparison of FILESTREAM and RBS?
Please check SQL RBS team blog: SQL Server Remote BLOB Store and FILESTREAM feature comparison.
Q: What is RBS FILESTREAM Provider?
RBS FILESTREAM Provider is a free out-of-the-box provider shipped by Microsoft SQL RBS Team that allows a deployment to use a SQL Database (local or remote) as a dedicated BLOB store. This provider utilizes the FILESTREAM as the BLOB storage mechanism and ties the two technologies together.
Q: Any benefit for using RBS with SharePoint?
By using RBS for SharePoint, customer maybe able to leverage cheaper storage, improve performance, and enable better integration stories with 3rd party technology for their SharePoint databases. But be careful, the benefit is different case by case. You need to investigate your scenarios to see if RBS really fits you.
Q: Any benefit to use RBS FILESTREAM Provider?
Benefit for Windows SharePoint Services 3.0 with Windows Internal Database upgrade:
We no longer support Windows Internal Database (WID) with SharePoint Foundation 2010. However, SQL Server Express has a 4GB DB size limit. The direct upgrade of a content DB > 4gb from WID to SQL Server Express is not supported. To get around of this limit, customer can use RBS FILESTREAM Provider to store all the BLOB content on to file system so the DB size will still remain small.
Benefit for other scenarios:
We are currently recommending to use this technology with document archiving and media streaming scenarios. Tests show that with RBS FILESTREAM Provider large BLOB objects can have better I/O compared with putting everything in the database.
Q: Can RBS FILESTREAM Provider support SMB shares to store the content, for example a NAS device?
No. SQL FILESTREAM feature does not allow to store content on anything other than local storages. Therefore RBS FILESTREAM Provider has the same limitation. 3rd party RBS Providers do not have this limitation if they are not leveraging SQL FILESTREAM feature.
Q: How is the BLOB content stored on the file system with RBS FILESTREAM Provider? Is it encrypted? Does TDE helps with the encryption?
The BLOB objects are stored with GUID names to make sure they can be linked from the RBS tables. The content is not encrypted. TDE does not apply to the content in file stream.
Q: I heard there’s a remote feature in RBS FILESTREAM Provider, is that supported by SharePoint 2010?
This feature allows SQL RBS FILESTREAM Provider to store BLOBs on to a remote SQL Server DB/Instance. SharePoint 2010 will support this remote feature of RBS FILESTREAM Provider. However the test work will not be finished at the time of SharePoint 2010 RTM. We will announce the supportability of this remote feature later when the test is done.
Q: Is there a licensing requirement for SQL Server when I want to use RBS for SharePoint?
Yes, there is. If the BLOB objects are stored on local SQL Server file system then you can use any SQL Server SKU. For any other scenarios, local SQL Server needs to be Enterprise. The following table shows the license requirement for different scenarios.
Q: Any 3rd party RBS provider I can use?
Currently StoragePoint (acquired by Metalogix recently) and EMC are providing RBS Providers for different storage options. NetApps, Opentext, Commvault are also working on it.
AvePoint also made their DocAve Extender free – a EBS provider for 2007, and a RBS provider for 2010. (thanks to Chris Musico for pointing out)
STEALTH Software also offers RBS providers. (Thanks Mark)
Q: Is EBS still supported?
EBS(External BLOB Storage API) is introduced by SharePoint 2007. It is still supported in this release (2010). Moving forward, in order to have a more unified storage solution, we will only support RBS in the next release.
Q: How should I backup the content if I’m using RBS?
By using SharePoint Backup and Restore, it doesn’t really matter where the BLOB objects are stored – this is taken care by SQL RBS. So when you use SharePoint Backup on a RBS enabled content database, it will still backup everything. You can restore the backup to a non-RBS enabled database too, the BLOB objects will be inside the database – SQL RBS will decide where to put them, not SharePoint.
If you are trying to backup the database by using SQL Backup, keep in mind this will not backup the BLOB objects. You need to manually backup the database first, then manually backup (XCOPY or other file backup tools) these BLOBs. When restore, using a reverse order to restore BLOBs first, then the databases. UPDATE: SQL Backup now can take care of FILESTREAM BLOB objects.
Q: Can RBS help to remove the 2GB file size limit in SharePoint?
No, using RBS with SharePoint will have the same file size limit.
Q: Can I enable RBS on a content database with content existing? How to migrate those content into the BLOB store? (Thanks to Chris Givens)
Yes, you can enable RBS on a content database and then migrate content into the external storage. There's a "Migrate()" method to handle this process. For example using Windows PowerShell, $cdb is the content db with RBS enabled, the following command will do the job:
Q: Should I consider using RBS all the time?
No. RBS may be used when :
For example, if you only have 100GB of data, seperated in several content databases, and most of the content are documents, go for RBS will not benefit your server farm.
Q: Are SQL Mirroring, Clustering and Log Shipping supported when using RBS FILESTREAM Provider?
Log Shipping and Clustering are supported. SQL FILESTREAM cannot be used together with SQL Mirroring.
If you have additional questions please leave them in the comment, I can add them into this list later.
Awesome post Jie! Another question that should be addressed:
How does one migrate to and from RBS for pre-existing data? Or another way to ask this, what happens when RBS is enabled on an existing content database? Does the data get moved over automatically and/or how? I know these answers, but for completeness for your blog post :)
@chris, good question! I'll add that into the list... I know you have the answer:)
Why do you note that 3rd Party RBS Providers require SQL Enterprise? We've done extensive testing with StoragePoint against Standard edition without issue.
Didn't say it in my first comment, but very good post. I think you do an excellent job of positioning the capability.
@Rob, it is a licensing requirement from SQL team - I don't think there's something in code that blocks you from using 3rd party RBS providers on STD/Express.
I'm not sure how Microsoft is going to justify that to customers that aren't running SQL Enterprise, especially ones that are currently using EBS-based solutions and want to upgrade to 2010 and will feel compelled to migrate to RBS due to EBS being deprecated.
So if a customer builds their own RBS provider is that considered a 3rd party provider that requires SQL Enterprise?
@Rob, actrually it does not matter if that's 3rd party or not. SQL team said any providers that is storing content outside local SQL Server would need a SQL Enterprise. Keep in mind this is only about using the provider with SharePoint. When you use RBS with ASP.net there's no licensing requirement.
I've taken a backup(using stsadm cmd) of a (sharepoint 2010)web application for which RBS is enabled(uploaded files are stored in both content db also in local disk successfully). The restoration is also successful to a new web application. The problem persists whenever I upload the documents, they are stored in content db only, but not in local disk. I tried this with and without enabling RBS for the new application.
I need your help.
This is the expected behavior. You need to enable the new content db with RBS, not web application. If the content is already inside the db you should use Migrate() to move them to the disk.
I came around your blog. Good to read info on RBS. I just wanted to add that we- SYNERGY4 - deliver also a 3rd party provider called STEALTH Software Content Store for SharePoint from STEALTH software (http://www.stealthsoftware.eu) who is one of the few companies who have developed 3rd party RBS and EBS providers for SharePoint to connect with external storage like Caringo CAStor, ParaScale, Bizanga Store, Windows Azure, Amazon S3 and EMC Atmos and now also Dell™ DX Object Storage Solution (Dell announced this yesterday http://bit.ly/9iT0Kg). We are both Dutch companies and mainly operational in Europe now, so that's maybe why you haven't heard from us. Hope you can include us in further blogs about SharePoint connected to external storage via RBS and EBS.
If you are interested in the STEALTH Software, let me know and I can send you some info.
I'm novice to the sharepoint. Could you tell me what are the propable reasons behind the response given by sharepoint management shell?... -->>
"$rbss.Installed() - False". The log file is configured successfully.
Thanks, I will add that to the list.
Can you check if your log file is larger than 1MB? The installer should run a large potion of SQL commands to create the RBS tables, and all these commands will be logged. If there're no such commands in the log, the rbs tables are not created. And Installed() will return false.
The "successfully" in log sometimes does not mean success.
When a site collection is backed up (through stsadm.exe on web server)to a new, the phrase "Product: SQL Remote Blob Storage -- Configuration completed successfully." is shown(the log file size is 443kb only). RBS has not at all been installed. RBS is installed successfully when a new web application is used, also it works. Could you figure where I've gone wrong.
RBS is enabled per content db, not per web application.
Thank you for including us, AvePoint, in your informative blog post.
We'd just like to make one small clarification -- our free DocAve Extender tool leverages both Microsoft’s External BLOB Store Provider and Remote BLOB Storage, instantly routing BLOBs to disk-based storage the moment an end-user uploads them to SharePoint.
For more information, check out our announcement (http://sn.im/v6dzx) or visit our product page (http://sn.im/v6e0b).
Don't hesitate to contact me if you have any further questions about DocAve Extender or DocAve's Storage Optimization Suite.