Partycjonowanie w systemie Windows RAID 0/1Około 9 minut

Wstęp czyli kilka słów o RAID

Zapewne każdy z was zastanawiał się w jaki sposób jeszcze bardziej przyspieszyć pracę swojego komputera i sprawić aby zawarte na dyskach twardych dane stały się odporne na ich uszkodzenie. W profesjonalnych systemach komputerowych z pomocą przychodzą nam tzw. macierze dyskowe RAID, w których podział danych pomiędzy poszczególne dyski realizowany jest sprzętowo. Stworzona w te sposób macierz dyskowa widoczna jest dla systemu operacyjnego tak jakby był to pojedynczy dysk.

Użytkownik standardowej stacji roboczej nieposiadającej wbudowanego w płytę główną kontrolera RAID oprócz zakupu karty rozszerzeń może skorzystać z alternatywnego rozwiązania jakim jest RAID realizowany programowo. Z pewnością rozwiązanie to nie jest tak bardzo niezawodne i wydajne jak jego sprzętowy odpowiednik, jednakże również umożliwia nam osiągnięcie pewnych korzyści. Warto również wspomnieć, że RAID realizowany programowo w nieznacznym stopniu (ale jednak) obciąża procesor komputera. Istnieje pewna dość istotna z punktu widzenia „szarego obywatela” zaleta RAID realizowanego programowo, mianowicie umożliwia on pracę na poziomie partycji, a nie całych dysków twardych, przez co w ramach tych samych dysków fizycznych możemy stworzyć partycje pracujące na różnych poziomach RAID.

Anatomia pacjenta

W tym poście chciałbym przedstawić Ci sposób w jaki przeprowadziłem partycjonowanie na moim komputerze oraz opisać korzyści płynące z takiego rozwiązania. W stacji roboczej znajdują się dwa dyski SSD 250GB (Dysk 0,Dysk 2) oraz 1TB dysk HDD (Dysk 0) z którego w tym poradniku nie będę korzystać. Komputer pracuje pod kontrolą systemu operacyjnego Windows 10. Proces partycjonowania przeprowadzam na zainstalowanym systemie (można było zrobić to w czasie instalacji ale kto by o tym pamiętał 😀 ) oraz zakładam zostawienie partycji systemowej bez modyfikacji (bootowanie Windowsa na SSD i tak trwa bardzo krótko).

Szybsza partycja do „zadań specjalnych”

Na początku chciałbym pokazać jak stworzyć partycję o istotnie wyższej prędkości odczytu i zapisu z wykorzystaniem RAID0. Nie wchodząc zbytnio w szczegóły RAID0 polega na rozrzucaniu danych pomiędzy różne dyski twarde co daje nam następujące korzyści:

  • posiadamy pozornie ciągły obszar pamięci dyskowej (partycję) znajdujący się na kilku dyskach, a zatem o potencjalnie większej pojemności
  • prędkość zapisu i odczytu danych wzrasta w wyniku przeplatania operacji pomiędzy znajdujące się w macierzy dyski

Rozwiązanie to ma jednak dwie istotne wady:

  • brak odporności na uszkodzenia dysków
  • wzrastające wprost proporcjonalnie do ilości dysków prawdopodobieństwo awarii

Można zatem powiedzieć, że przedstawiony schemat nie nadaje się do przechowywania wrażliwych danych, ale może być pomocny do stworzenia na przykład partycji przechowującej programy użytkownika w tym dość pokaźnych rozmiarów gry komputerowe bądź materiały wideo przeznaczone do dalszej obróbki.

W pierwszym kroku otwieramy panel zarządzania dyskami:

Jeśli nie mamy wolnego miejsca na dyskach możemy zmniejszyć rozmiar którejś partycji (na przykład systemowej):

Narzędzie do partycjonowania poinformuje nas jak bardzo zmniejszyć wskazaną partycję. Ilość uzyskanej w ten sposób pamięci można zwiększyć redukując zawartość partycji systemowej lub wyłączając plik wymiany. Innym sposobem do odzyskania jeszcze większej ilości przestrzeni dyskowej z już istniejącej partycji jest przeprowadzenie zmiany rozmiaru partycji systemowej z wykorzystaniem zewnętrznego oprogramowania na przykład LiveCD Ubuntu. W moim przypadku wystarczyło po prostu troszkę posprzątać:

Następnie klikamy PPM w dostępnym obszarze i wybieramy opcję „Nowy wolumin rozłożony” (striped volume). W kolejnym kroku wskazujemy dyski na których ma zostać utworzony wolumin:

Na sam koniec podajemy system plików i etykietę pod którą wolumin będzie widoczny w systemie:

Narzędzie do partycjonowania może poprosić nas o zgodę na zmianę dysków na tzw. dyski dynamiczne i ostrzeże o potencjalnych problemach z możliwością uruchamiania systemów znajdujących się na innych partycjach niż bieżący (Windows 10):

Jeśli nie posiadamy zainstalowanych innych systemów operacyjnych nie mamy się czego obawiać.

Po pomyślnym wprowadzeniu zmian w menadżerze plików pojawi się nowa partycja:

Pozostaje odpowiedzieć na pytanie, czy rzeczywiście stworzenie dodatkowej partycji rozproszonej na dwóch dyskach daje nam mierzalne rezultaty. W tym celu przeprowadziłem prosty test wydajności odczytu i porównałem otrzymane wyniki z partycją systemową. Być może nie jest to najlepszy sposób testowania wydajności przestrzeni dyskowej, jednakże w tym przypadku wydaje się być wystarczający do zobrazowania zalet tego rozwiązania. Poniżej załączam zrzuty ekranu z aplikacji przeprowadzającej benchmark:

  • partycja systemowa:

  • RAID0:

Prędkość odczytu danych jest praktycznie dwukrotnie większa dla dużych bloków danych. Czas dostępu jest nieznacznie dłuższy (zależność utrzymuje się przy powtarzaniu testu), co bez wątpienia wynika między innymi z konieczności określenia dysku na którym znajduje się dany fragment pliku przez program zarządzający wolumenem. Zauważyłem także nieznaczne zwiększenie zużycia czasu procesora przy intensywnych operacjach I/O.

Bezpieczny storage na kluczowe dane

Zapewne każdy z nas obawia się awarii dysku twardego. Ci bardziej skrupulatni wykonują regularne backupy lub wykorzystują rozwiązania takie jak Google Drive.

Pierwsze rozwiązanie pozwala nam na tworzenie kopii dużej ilości informacji jednak zawsze istnieje szansa, że kluczowe dla nas dane (sprawozdanie na „wczoraj”) nie wejdą w skład ostatniego backupu.

Wykorzystanie usług udostępniających przestrzeń dyskową na serwerach również posiada istotne ograniczenia takie jak maksymalny rozmiar danych. Sam proces synchronizacji w przypadku dużych lub często zmieniających się plików generuje duży ruch sieciowy i przy słabszym łączu internetowym następuje ze sporym opóźnieniem. Co więcej jeśli dane, które chcemy chronić są w jakiś sposób wrażliwe (np dane osobowe, pliki z pracy) właściwie nie możemy udostępnić ich osobą trzecim w tym w celu ich przechowania na zdalnym serwerze.

Stosunkowo prostym rozwiązaniem przedstawionych powyżej problemów jest zastosowanie macierzy dyskowych, które zawierają redundantne informacje pozwalające na odtworzenie danych zawartych na uszkodzonym dysku. W rozwiązaniach profesjonalnych dominują macierze realizowane sprzętowo przez dedykowany kontroler. My jednak skupimy się na rozwiązaniu osiągalnym na standardowym komputerze.

Jak już wcześniej wspomniałem do dyspozycji mam 2 dyski SSD i HDD. W oparciu o taki układ mógłbym pokusić się nawet o stworzenie wolumenu pracującego na poziomie RAID5, jednak ze względu na istotnie odbiegające od dysków półprzewodnikowych parametry HDD postanowiłem stworzyć macierze RAID1 w ramach dysków SSD. Idea RAID1 jest prosta, wolumeny (w przypadku wersji realizowanej sprzętowo dyski) zawierają dokładną kopię informacji i przy każdej operacji zapisu dane są aktualizowane na obydwu dyskach.

Ponownie uszczuplam partycję systemową (chyba jednak następnym razem pomyślę o tym na etapie instalacji 😀 ) w celu odzyskania miejsca na „Dysk 0”:

Następnie wybieram typ wolumenu i postępuje podobnie jak w pierwszym przykładzie:

Podsumowując udało się stworzyć partycję chroniącą użytkownika przed skutkami awarii jednego z dwóch dysków. Rozwiązanie duplikuje na bieżąco dane ale nie niweluje potrzeby cyklicznego wykonywania kopii bezpieczeństwa na przykład w celu zabezpieczenia się przed skutkami zainfekowania komputera.

Testy wydajności

Poniżej załączam wyniki testów utworzonych wolumenów przeprowadzonych z wykorzystaniem programu CrystalDiscMark. Obrazują one wpływ przedstawionych rozwiązań na szybkość zapisu i odczytu danych:

  • Partycja systemowa – bez modyfikacji:
  • Wolumin rozłożony:
  • Wolumin dublowany:
  • Jedna z partycji na dysku twardym (tak dla porównania):