2. What is Remote BLOB Storage? RBS is a feature of SQL 2008 and R2 ! Provides the ability to store BLOBs outside of a SQL database Includes one easy Filestream provider which can be used to store BLOBs on an NTFS filesystem SharePoint 2010 fully supports 3rd party Filestream
3. Why Remote BLOB Storage? Pro: Potential performance improvements when storing for BLOBs that are larger than 1 MB Potential storage cost savings from SAN to Fileshare (SAS) In environments with frequent updates, fragmentation issues are easier to address Cons: RBS out of the box does not support Database snapshots Database mirroring Encryption More admin to manage the farm and SQL Recommended to use a 3rd party provider which cost money.
4. Process Flow – Saving a File SharePoint WFE 7. Back to User SharePoint Object Model 2. Enforce Business Logic 1. Save Request RBS Client Library Relational Access 3. Save BLOB 5. Return BLOB ID 6. Save Metadata & BLOB ID BLOB Store Provider Library 4. Write BLOB SQL Server BLOB Store Content DB Config DB
6. Install and Configuration Step 2 - Enable FILESTREAM support in SQL EXEC sp_configurefilestream_access_level, 2 Reconfigure
7. Install and Configuration Step 3 - Provision a BLOB Store – Create Master Key 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 !2#4'
8. Install and Configuration Step 4 - Provision a BLOB Store – Add FilestreamFilegroup use [WSS_Content] if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [WSS_Content] add filegroupRBSFilestreamProvider contains filestream
9. Install and Configuration Step 5 - Provision a BLOB Store – Add File to Filegroup use [WSS_Content] alter database [WSS_Content] add file (name = RBSFilestreamFile, filename = 'c:lobstoreSS_Content') to filegroupRBSFilestreamProvider
10. Install and Configuration Step 6 - Enable RBS on First SharePoint Server msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="DC" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1 On Subsequent Servers msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi DBNAME="WSS_Content" DBINSTANCE="DBInstanceName" ADDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"
12. Installation – Next Steps RBS works at the database level. When you create another database in the same farm [Run the SQL commands] msiexec /qn /lvx* rbs_install_Log.txt /i rbs_X64.msi REMOTEBLOBENABLE=1 FILESTREAMPROVIDERENABLE=1 DBNAME=<WSS_Content> FILESTREAMSTORENAME=FilestreamProvider_1 ADDLOCAL=EnableRBS,FilestreamRunScript DBINSTANCE=<DBInstanceName>> [PowerShell to Enable Provider]
13. Advanced Configuration Use PowerShell Configure the minimum size of content to be stored in the BLOB Files smaller than this will be stored in the content database $db= Get-SPContentDatabase–Site http:/[URL of site collection]$db.RemoteBlobStorageSettings.MinimumBlobStorageSize= [number of bytes]#db.Update()
14. NTFS Configuration Best Practices Configure AV to quarantine rather than delete infected files Disable the generation of 8.3 names when files are created fsutilbehavior set disable8dot3 1 Disable updating the last access time for a file when it is accessed fsutilbehavior set disablelastaccess 1
15. NTFS Configuration Best Practices Perform regular defragmentation of volume(s) holding BLOB data Disk quotas can be used to restrict storage Configure the cluster size for volume(s) to host BLOB data to 64 KB This must be done when the volume is formatted format F: /FS:NTFS /V:MyFILESTREAMContainer /A:64K
16. When should I use RBS with SharePoint? I am a SharePoint Foundation user Limitations on database size with SQL 2008 Express require the use of RBS. Automatically configure RBS + FILESTREAM for WSS 3.0 users during upgrade! I am an enterprise user with a large amount of content in SharePoint MS recommendation is approximately 1TB or more, though you can still save costs if you have less data. Research and planning are needed. Talk to providers!
17. Performance Impact, some sample SharePoint expects providers to have the following performance impact: Throughput: 5 -10% degradation Average Response time: Impact should be minimal as file size increases SQL CPU Usage: 20% for small files, minimal impact for large files
19. How do I Migrate BLOB Data to RBS? Use Power shell Commandlet - Migrate Moves BLOBs from current location to the current Active RBS Provider store. Does deep copy of BLOBs – one BLOB at a time Live Migration – no downtime is required Migration processcan be terminated and resumed
20. Migrate() Use PowerShell to EXTERNALIZE all content $site = get-spsite http://siteurl $rbss = $site.ContentDatabase.RemoteBlobStorageSettings $rbss.Migrate()
21. Migrate() Use PowerShell to INTERNALIZE all content $site = get-spsite http://siteurl $rbss = $site.ContentDatabase.RemoteBlobStorageSettings $rbss.SetActiveProviderName(“”) $rbss.Migrate() $rbss.Disable() $rbss Enabled ActiveProviderNameMinimumBlobStorageSizeUpgradePersistedProperties --------- ---------------------- ---------------------------- ------------------------------ False 0 { }