Single Instance Storage w Windows Server

Single Instance Storage w Windows Server

  • Comments 8
  • Likes

Single Instance Storage jest windowsową nazwą tego, co ogólniej znane jest jako deduplikacja pamięci masowej. Specjaliście obie nazwy coś powiedzą, podczas gdy ktoś z zewnątrz światka IT pewnie ani jednego ani drugiego określenia nie zrozumie. Tymczasem, idea jest bardzo prosta: Skoro użytkownik A ma w swoim katalogu domowym zdjęcia z imprezy integracyjnej a użytkownik B też był na tej imprezie, więc też ma te same zdjęcia, to może by tak, zamiast trzymać zestaw identycznych plików, przechować tylko informację o nich, a powtarzającą się część wspólną – tylko raz? W oczywisty sposób skomplikuje to metodę składowania danych, ale w zamian pozwoli zaoszczędzić sporo miejsca. W rzeczywistych środowiskach, okazać się może, że realne oszczędności sięgają 40%, więc gra toczy się o niemałą stawkę.

Jak to zrobić w praktyce? Nie jest to trywialne, ale i nie jakieś strasznie skomplikowane. Wystarczy użyć Windows Storage Server. Problem jednak w tym, że jest to produkt dostępny jako OEM, co oznacza, że kupuje się gotowy serwer z taką funkcjonalnością. Czyli w praktyce niemożliwe jest legalne podejście na zasadzie: "to ja to dzisiaj dla swojej firmy włączę na starym serwerze, na którym kończy mi się miejsce". Teoretycznie można to zrobić przy pomocy pakietu KB976833, ale to nie jest droga, którą Microsoft popiera.

Zakładam więc, że mamy już Windows Storage Server 2008R2 i to o takim systemie dalej piszę.

Na początek wspomnieć trzeba o ograniczeniach. Przede wszystkim, SIS wymaga aby:

  • Deduplikowany dysk był dyskiem lokalnym (nie sieciowym),
  • Deduplikowany dysk był sformatowany jako NTFS,
  • Deduplikowany dysk nie był dyskiem systemowym (boot volume ani system volume),
  • Istniało nie więcej niż 6 deduplikowanych dysków w jednym systemie.

Ostatnie wymaganie jest dość dziwne, ale takie właśnie zostało zaszyte w mechanizmach SIS i nie ma praktycznie żadnej metody zwiększenia tej wartości.

Tak naprawdę, deduplikacja musi opierać się na dwóch oddzielnych procesach:

  • Deduplikacji – czyli poszukiwaniu powtarzającej się informacji i przekształcaniu jej na postać z pojedynczym przechowywaniem danych.
  • Dostarczaniu plików użytkownikom. Mimo, że zabraliśmy im prawdziwe dane i zeskładowaliśmy je w jednym egzemplarzu, to gdy poproszą o swój plik – powinni go dostać i najlepiej, żeby nic nie wiedzieli, że cośtam w tle się z nim działo.

Skupmy się na pierwszym procesie. Deduplikacją zajmuje się groveler. Jest to specjalny serwis systemowy, który "przeczesuje" dyski w poszukiwaniu powtarzających się danych. Dlatego, do poprawnego działania wymaga, aby działał serwis systemowy, w którym groveler został zaimplementowany. Jak można się domyśleć, nazwa serwisu to Groveler.

image

Bez grovelera, żaden plik nie zostanie zdeduplikowany. Groveler "budzi się" co jakiś czas i plik po pliku sprawdza:

Czy plik nie jest zbyt mały. Zbyt małych plików nie opłaca się deduplikować, bo dane o sposobie ich odzyskania zajmą więcej miejsca niż wyniosą korzyści ze zwolnienia przez pliki miejsca na dysku.

  • Jaka jest suma kontrolna pliku.
  • Czy w bazie grovelera istnieje już wpis dla pliku o takiej samej wielkości, sumie kontrolnej i atrybutach.
  • Czy oryginał pliku, który teoretycznie się powtarza (został znaleziony w bazie danych) daje się normalnie odczytać
  • Czy pliki faktycznie (bajt po bajcie) są identyczne.

Jeżeli kandydat do deduplikacji zostanie zweryfikowany pozytywnie, aktualizowany jest dla niego wpis w bazie danych i sam plik faktycznie zostaje poddany deduplikacji i przeniesiony do folderu \SIS Common Store. Zamiast pliku, w oryginalnym miejscu zostaje tylko link do niego, dla systemu w praktyce od pliku nieodróżnialny. Oczywiście cały proces mądrze zabezpieczony jest na przykład przed zmianami w plikach podczas ich deduplikacji i innymi podobnymi, potencjalnie niebezpiecznymi zjawiskami. Jak wspomniano wcześniej, pliki przechowywane są w specjalnym folderze (oddzielnie dla każdego dysku). Każdy plik dostaje nową nazwę (GUID) z rozszerzeniem *.sis a poza samymi plikami, w folderze SIS przechowywana jest baza danych.

Oczywiście, praca grovelera może być zarządzana przez administratora. Służy do tego dość wygodne narzędzie sisadmin. Narzędzie to pozwala między innymi na:

  • Włączenie i wyłączenie grovelera (/e, /d). Oczywiście wyłączony groveler oznacza tylko, że żadne nowe pliki nie są w systemie deduplikowane. Pliki już przetworzone działają bez zarzutu.
  • Aktywacja grovelera dla zadanego dysku (/i). Zakładany jest folder SIS i od tej pory pliki na tym dysku są skanowane.
  • Odwrócenie działania grovelera (/u). Wszystkie zdeduplikowane pliki przywracane są na ich właściwe miejsce a sam groveler jest wyłączany.
  • Przełączenie grovelera w tryb foreground (/f – szybszy i zużywający więcej zasobów) lub background (/b – domyślny, wolniejszy, ale mniej obciążający serwer).
  • Wyświetlenie statystyk grovelera (/v), w tym zaoszczędzonego faktycznie miejsca.
  • Wyświetlenie informacji o wszystkich plikach (/l) albo o konkretnym pliku (/s).
  • Wymuszone przeskanowanie wszystkich plików na dysku (/r).
  • Przywrócenie folderowi SIS domyślnych uprawnień. Wprawdzie ta funkcjonalność nie jest udokumentowana, ale jest dostępna przy użyciu parametru /a.

Po włączeniu grovelera można spróbować skopiować kilkukrotnie jeden plik do różnych folderów albo do plików o różnych nazwach.

Sisadmin /v pokaże, że zostało to wykryte:

image

A sisadmin /l powie dokładnie co i jak zostało zdeduplikowane:

image

Oczywiście plik o wdzięcznej nazwie adb1edf7-e904-11e0-be55-000c298704ed.sis faktycznie istnieje w ukrytym folderze SIS:

image

Aby użytkownik mógł nadal "normalnie" widzieć zdeduplikowane pliki, do systemu dodawany jest specjalny sterownik sisss.sys, który przechwytuje odwołania do plików i kieruje je do danych leżących w SIS Common Store.

image

I wszystko działa. Osoby mające dostęp do subskrypcji TechNet zachęcam do skorzystania z dostępnych tam zasobów, dzięki którym Windows Storage Server (lub jego kawałki) można sobie zainstalować na testowym serwerze Windows Server 2008 R2.

Autor: Grzegorz Tworek [MVP]

Comments
  • "Teoretycznie można to zrobić przy pomocy pakietu KB976833, ale to nie jest droga, którą Microsoft popiera." - skąd ta wiadomość? jakiś link?

  • hmm.... nie bardzo wiem co odpowiedzieć na pytanie skąd ta wiadomość. Po prostu spróbowałem i zadziałało zgodnie z oczekiwaniami.

    A co do linka - niestety nie mam. Ale możesz się śmiało powoływać na mój blog i linki do niego publikować ;)

  • To, że pakiet działa, to wiem, bo stosuję u siebie i w kilku innych miejscach. Ale skąd informacja, że "to nie jest droga, którą Microsoft popiera" ? Jak się coś pisze, to warto wiedzieć, że tak faktycznie tak jest ;-)

  • A popiera? Gdzieś wśród innych pakietów w oficjalnych kanałach dystrybucji KB976833 jest dostępny? Czy tylko do testów i użycia w testowych środowiskach, bez wsparcia?

  • No właśnie nie wiem jak to jest z SIS, dlatego pytam o oficjalną informację, a nie domysły.

  • Jakiś czas temu pisałeś o targetach iscsi i potem bach - Microsoft wypuścił swój za friko. Może podobnie będzie z sis? :) W rozwiązaniach macierzowych deduplikacja to już praktycznie standard, może Microsoft chce wyjść z częścią swoich rozwiązań szerzej?

  • Jeśli wierzyć www.grouppolicy.biz/.../what-is-new-in-windows-8

    "Single instance storage is now support. This is MASSIVE!!! Put you VHD files on a SMB file share and enable de-duplication and reduce the storage requirements overnight. But this also works for all other files types such as office file format."

    to raczej właśnie MS chce rozpowszechnienia SIS (chociaż nie wiadomo czy chodzi tylko o Server, w której edycji, itp)

  • Też słyszałem takie pogłoski, ale co z tego wyjdzie - zobaczymy. Teoretycznie w Windows 2008 też jest SIS-Limited.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment