Podstawa wykładowa: Część 6 - slajdy 13, 14, 15, 16, 17, 18, 20, 21: podstawowe techniki paskowania, lustrowania i parzystości, poziomy RAID 0, 1, 5, 6, 10,
kompromisy pojemności i wydajności, dobór poziomu do zastosowań.
Cel
Celem ćwiczenia jest empiryczna i analityczna analiza kompromisów architektonicznych w macierzach RAID. Student bada relację pomiędzy liczbą dysków, pojemnością surową a
przestrzenią użyteczną dla poziomów RAID 0, RAID 1, RAID 5, RAID 6 oraz RAID 10, weryfikuje odporność na awarie pojedynczych i podwójnych dysków, a także mierzy przepustowość zapisu i
odczytu sekwencyjnego w środowisku laboratoryjnym.
Scenariusz – opis
Dobór odpowiedniego poziomu macierzy RAID jest jedną z najważniejszych decyzji projektowych podczas budowy pamięci masowej w przedsiębiorstwie. Każdy z poziomów RAID implementuje odmienną kombinację trzech elementarnych technik: paskowania danych, lustrzanego powielania oraz obliczania parzystości. Paskowanie w RAID 0 zapewnia maksymalną wydajność i stuprocentowe wykorzystanie pojemności, lecz nie oferuje żadnej odporności na awarie sprzętowe. Z kolei RAID 1 podwaja koszty przechowywania danych na gigabajt, gwarantując jednak prostą i szybką odbudowę po uszkodzeniu nośnika.
Poziomy z rozproszoną parzystością, takie jak RAID 5 oraz RAID 6, stanowią kompromis inżynierski dedykowany do magazynowania dużych wolumenów danych. RAID 5 poświęca pojemność dokładnie jednego dysku na bloki parzystości wyliczane operacją XOR i toleruje awarię tylko jednego nośnika. RAID 6 dodaje drugi niezależny blok parzystości oparty na kodach Reeda-Solomona, co pozwala przetrwać jednoczesną utratę dwóch dysków fizycznych. Kaskadowy poziom RAID 10 łączy zalety wysokiej wydajności paskowania ze zwiększoną odpornością lustrowania, wymagając minimum czterech dysków.
W praktyce inżynier musi uwzględnić narzut obliczeniowy związany z aktualizacją parzystości podczas małych losowych operacji zapisu (tzw. RAID write penalty). Niewłaściwa kalkulacja pojemności lub błędna ocena ryzyka utraty danych podczas wielogodzinnej odbudowy może doprowadzić do katastrofy organizacyjnej. Dodatkowo należy uwzględnić koszty zakupu nośników oraz ograniczenia fizyczne kontrolerów sprzętowych.
W tym zadaniu przeanalizujesz teoretyczne i praktyczne parametry macierzy przy użyciu kalkulatorów online oraz własnych pomiarów w konsoli linuksowej.
Co ma wykonać student / grupa
Rozpoczynasz ćwiczenie od zebrania założeń projektowych dla hipotetycznego klastra pamięci masowej wyposażonego w 8 dysków twardych o pojemności 4 TB każdy. Otwierasz w
przeglądarce internetowej darmowy kalkulator macierzy RAID (np. wintelguy.com/raidcalc.pl lub kalkulator RAID firmy Synology). Dla konfiguracji ośmiu dysków obliczasz kolejno pojemność
użytkową, pojemność utraconą na ochronę oraz wskaźnik efektywności dla RAID 0, 1, 5, 6 i 10. Zestawiasz uzyskane wyniki w szczegółowej tabeli porównawczej, uwzględniając maksymalną
dopuszczalną liczbę równoczesnych awarii dysków w każdym wariancie.
W terminalu JSLinux Fedora 33 (Linux) Console przygotowujesz środowisko testowe do empirycznego
badania wydajności zapisu sekwencyjnego za pomocą programu dd. Tworzysz w pamięci RAM wirtualne urządzenie ramdysku tmpfs, aby wyeliminować wpływ
fizycznego nośnika stacji roboczej na wynik pomiaru. Przeprowadzasz serię testów zapisu próbki danych o rozmiarze 64 megabajtów przy różnych wielkościach bloków (4 KB, 64 KB, 1 MB).
Rejestrujesz uzyskane czasy trwania operacji oraz raportowaną przepustowość transferu w megabajtach na sekundę dla każdej próby.
Analizujesz wpływ wielkości bloku (stripe size) na szybkość zapisu danych, odnosząc obserwacje do mechanizmu paskowania w macierzach RAID. Dokonujesz krytycznej analizy
zjawiska kary zapisu dla poziomów z parzystością, wyjaśniając konieczność wykonania czterech operacji wejścia-wyjścia w RAID 5. Porównujesz uzyskane charakterystyki przepustowości z
parametrami deklarowanymi w dokumentacjach technicznych macierzy enterprise. Formułujesz rekomendację techniczną wyboru poziomu RAID dla dwóch scenariuszy biznesowych: transakcyjnej
bazy danych oraz serwera archiwizacji wideo.
Przykładowe kroki do wykonania jako sugestia
-
Otwórz stronę kalkulatora
RAID (np.
https://www.wintelguy.com/raidcalc.pl lub kalkulator RAID
Synology w przeglądarce).
-
Zdefiniuj parametry macierzy: liczba dysków
n = 8,
pojemność pojedynczego dysku = 4 TB
(SATA Enterprise).
-
Oblicz pojemność użyteczną i narzut redundancji dla wariantu
RAID 0 (8 dysków).
-
Oblicz parametry dla wariantu
RAID 1/10 (grupy lustrzane, 4 pary dysków).
-
Oblicz parametry dla wariantu
RAID 5 (7 dysków danych + 1 dysk parzystości równoważnej).
-
Oblicz parametry dla wariantu
RAID 6 (6 dysków danych + 2 dyski podwójnej parzystości P+Q).
-
Sporządź tabelę porównawczą zawierającą: poziom
RAID, pojemność netto
(TB), procent wykorzystania, odporność na awarie (liczba dysków).
- Otwórz terminal JSLinux Fedora 33 (Linux) Console (
bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33-riscv.cfg&mem=256).
-
Utwórz katalog w pamięci ramdyskowej tmpfs:
mkdir -p /tmp/benchmark.
-
Wykonaj pomiar zapisu sekwencyjnego małym blokiem (
4 KB):
dd if=/dev/zero
of=/tmp/benchmark/test_4k.dat
bs=4k
count=16384
conv= fdatasync.
-
Zanotuj czas operacji oraz przepustowość (
MB/s) zaraportowaną przez
dd.
-
Wykonaj pomiar zapisu średnim blokiem odpowiadającym typowemu paskowi
RAID
(64 KB): dd
if=/dev/zero
of=/tmp/benchmark/test_64k.dat
bs=64k
count=1024
conv= fdatasync.
-
Zanotuj uzyskaną przepustowość i porównaj ją z wynikiem dla bloku
4 KB.
-
Wykonaj pomiar zapisu dużym blokiem (
1 MB):
dd if=/dev/zero
of=/tmp/benchmark/test_1m.dat
bs=1M
count=64 conv= fdatasync.
-
Porównaj uzyskane prędkości transferu i wyjaśnij przyczyny wzrostu wydajności wraz z rozmiarem bloku
I/O.
-
Usuń pliki testowe z ramdysku:
rm -f /tmp/benchmark/*.dat.
-
Wykonaj zrzut ekranu kalkulatora
RAID oraz wyników pomiarów programu
dd w konsoli.
-
Opracuj pisemną rekomendację doboru poziomu
RAID dla serwera bazodanowego
OLTP oraz serwera backupu.
Kontrola zaliczenia (checklist):
- Zachowano tabelę: dla tej samej puli dysków wyliczona pojemność użyteczna i narzut dla RAID 0/1/5/6/10 + log symulacji awarii 1 i 2 dysków.
- Dołączono 2–3 zrzuty z podpisami: obliczenia/kalkulator, symulator I/O oraz wskazanie write penalty w RAID 5/6.
- Opisano w 2–3 zdaniach wybór narzędzi i dobór stripe unit do profilu (losowe vs sekwencyjne).
- Zapisano wnioski (3–5 zdań): RAID 6 vs 5 przy dyskach >4 TB (URE), RAID 10 jako wydajność+mirror, pojemność vs odporność.
Wariant offline (fallback): Brak JSLinux/mdadm: symulacja na plikach-obrazie w lokalnym Linux/WSL lub opis z cache + obliczenia pojemności na kalkulatorze; dołącz log komend, pliki .img i zrzuty smartctl/mdadm/rsync.
Sugerowane wnioski i podsumowanie - co student ma osiągnąć
Sprawozdanie z realizacji zadania musi zawierać następujące kluczowe wnioski i osiągnięcia:
- Zrozumienie matematycznych zależności pomiędzy liczbą nośników a efektywną przestrzenią w poziomach RAID 0, 1, 5, 6 i 10.
- Identyfikacja zjawiska kary zapisu (write penalty) w macierzach parzystościowych obniżającego wydajność małych losowych I/O.
- Świadomość przewagi RAID 6 nad RAID 5 w dobie dysków o pojemnościach przekraczających 4 TB z uwagi na ryzyko błędów URE.
- Umiejętność doboru optymalnej geometrii paska (stripe unit size) pod kątem profilu obciążenia aplikacji serwerowych.