RBS Blob Verisini Dosya Sisteminden Silememe Problemi

SharePoint ortamınızda uygulamalarınızın içerik bilgisini saklamak için SQL Server Remote Blob Storage (RBS) özelliğini kullanıyorsanız yaşamış olacağınız bir problem dosyaların SharePoint ortamından silinmesine rağmen dosya sisteminde yani diskinizde herhangi bir kullanım azalması olmamasıdır. Biraz daha açacak ve genel olarak SharePoint’in çöp kutusu mekanizmasına da bakacak olursak;

Bildiğiniz üzere SharePoint altyapınızda iki kademeli bir çöp kutusu mekanizması yer almaktadır. Bir kütüphaneden sildiğiniz bir dosya öncelikle ilgili sitenin çöp kutusuna taşınır. Varsayılan olarak burada kalma süresi 30 gündür ki bu değer Central Administration aracılığı ile değiştirilebilir. 30 günlük sürenin geçmesinin ardından eğer dosyayı restore etmediyseniz bu defa site koleksiyonunun çöp kutusuna taşınır. Ve yine varsayılan bir ayar olarak 30 gün de burada kalır. Ve ardından artık dosya tamamen silinir. Çöp kutusunda kaldığı süre içerisinde elbette bir soft delete işleminden bahsediyoruz. Dosya sadece silinmiş olarak işaretlenmekte ve restore komutunuz ile aynı şekilde geri alınabilmektedir. Buraya kadar varsayılan bir SharePoint sisteminin davranış şeklini inceledik. Eğer RBS kullanıyorsanız işte tam bu aşamada dosyanın halen blob storeda saklanmakta olduğunu, diskten silinmediğini gözlemleyebilirsiniz. Tabi bunu genelde tek bir dosya silme işleminde hissetmeyiz. Genellikle problemin farkına vardığımız an diskimizin sürekli dolması ve yüklü dosya silme işlemlerimizin ardından bile diskte bir azalma olmadığı zamanlardır.

Normal şartlarda RBS için “garbage collection” yani çöp toplama mekanizması bulunmaktadır. Çöp toplama mekanizması şu üç aşamadan geçerek ilerler;

  • Reference Scan: Saklanan blob verisine ait sistemde herhangi bir referans bulunup bulunmadığını tarar.
  • Delete Propogation: İkinci adımdır ve ihtiyaç kalmamış dosyaları silinecek olarak işaretler.
  • Orphan Cleanup: Son adımdır ve dosyaların blob storeda yer alıp rbs tablolarında bulunmaması durumunu kontrol ederek temizleme adımını gerçekleştirir.

3 işlem için varsayılan değer yine 30 gündür. Yani buradan yola çıkarak SharePoint ortamından sildiğiniz bir dosyanın 30 gün + 30 gün sonra yani site koleksiyonu çöp kutusundan da temizlendikten sonra geçecek 30 gün sonunda normal şartlarda RBS cleanup sistemi tarafından temizlenmesi gerekir. Bu işlem bazen problemli olabilir ve manuel müdehale gerekebilir.

İşlem adımlarımız şu şekilde olacak;

  • Öncelikle SQL Server Management Studio‘yu açın ve yeni bir sorgu ekranına geçin. Burada ilgili içerik veritabanınızı seçtikten sonra aşağıdaki prosedürleri çalıştırarak 30 günlük bu üç adım kuralını sıfırlayın.

  • Yeni ve “Run as Administrator” modda açılmış bir komut satırı ekranı açın.
  • RBS’in varsayılan kurulum dizininde RBS Maintainer’a kadar ilerleyin. Varsayılan olarak uygulamamız şu adrestedir.

  • Maintainer.exe için aşağıdaki şekilde parametreler ile uygulamayı çalıştırın.

Burada en önemli parametremiz “connectionstringname” kısmı. Bu bölümde Maintainer.exe.config dosyası içerisinden alıyor connectionstring bilgisini. Ve bu connection stringin encrypted olması gerekiyor. Encryption için aşağıdaki adımları kullanabilirsiniz.

  • Öncelikle “Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config” dosyanızın adını “web.config” olarak değiştirin.
  • Ardından run as administrator modda açılmış bir komut satırı istemcisinde “%windir%\Microsoft.NET\Framework64\v2.0.50727” dizinine gidin ve aşağıdaki komutu çalıştırın.

  • Sonra tekrar dosyamınızın adını “web.config” yerine “Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config” haline getirebilir ve yukarıdaki komutu çalıştırabiliriz.
  • Çalıştırdığınız komut veri miktarınıza göre bir miktar uzun sürebilir. Benim elimdeki yaklaşık 2 TB’lık bir içerik veritabanında yaklaşık 700 GB’lık alan açabileceğim verinin olduğu senaryo için 45 dk kadar sürdü işlem.
  • Bu işlem maalesef son adım değil. Uygulamanın çalışmasını bitirmesinin ardından SQL Server Management Studio’da aşağıdaki şekilde checkpoint çalıştırın. Tabi veritabanı recovery modeliniz “Simple” ise. Eğer recovery modeliniz “Full” ise transaction logları da unutmayın.

  • Ve son adım için aşağıdaki sorgumuzu çalıştırıyoruz. (Bazen iki defa çalıştırmak gerekebiliyor)

Bu işlemlerin ardından artık kullanılmayan ve zaten silinmiş olan dosyalarınızın diskinizden de silindiğini gözlemleyebilirsiniz.

İçerik referansları;

https://blog.bugrapostaci.com/2013/01/05/unable-to-delete-rbs-blob-data-from-file-system-even-deleting-from-sharepoint-2010

http://www.sharepointboco.com/sharepoint-and-rbs-maintainer-connection-string-issues

No Comments

Leave a Comment

Please be polite. We appreciate that.
Your email address will not be published and required fields are marked