Tym razem podrozdział o pamięci masowej. Zapraszam. 

Pamięć masowa, czyli co w RAIDzie piszczy …

Pierwszą warstwą infrastruktury która się zajmiemy będzie warstwa pamięci masowej. W najprostszym przypadku traktować ją będziemy jako dyski podłączone do jakiegoś kontrolera dyskowego (HBA, ang. Host Bus Adapter) w serwerze, chociaż obecnie nawet w najmniejszych firmach pomiędzy dyskami a kontrolerem HBA pojawia się dodatkowa infrastruktura w postaci sieci SAN (ang. Storage Area Network) oraz całych macierzy dyskowych podłączanych do tej sieci (sieci będą opisane dokładniej w kolejnych punktach). W obu przypadkach do rozważenia mamy dwa aspekty: zabezpieczenia danych przechowywanych na dyskach przed utratą oraz niezawodności dostępu do tych danych poprzez dostępne interfejsy. Przed utratą danych podczas awarii dysków można zabezpieczyć się na dwa sposoby: realizując backup na tasiemki lub za pomocą RAIDa. Backup na tasiemki jest fajny ale czas odtworzenia danych będzie nieakceptowalny, pozostaje więc nam RAID.
RAID (ang. Redundant Array of Independent Disks) czyli redundantna macierz niezależnych dysków to termin określający różne schematy rozproszenia danych na kilku niezależnych dyskach w celu osiągnięcia większej wydajności i/lub niezawodności. W historii informatyki doczekaliśmy się wielu sposobów realizacji tej ogólnej idei, lecz w czasach współczesnych najpopularniejszymi i praktycznie stosowanymi są: RAID0, RAID1, RAID5 oraz mieszanka RAID1+0 czy RAID0+1. RAID0 w praktyce nie daje nam dodatkowego zabezpieczenia, wyłącznie zwiększoną wydajność. Zabezpieczenia danych uzyskujemy w RAID1 – zwanym potocznie mirrorem oraz RAID5. Podstawową różnicą pomiędzy tymi poziomami jest sposób zabezpieczania danych. W RAID1 dane zabezpieczane są poprzez zwyczajne powielanie informacji na różnych dyskach, w przypadku RAID5 dane zabezpieczane są poprzez wyliczanie sum kontrolnych (zazwyczaj XOR) i umieszczanie ich na innym dysku niż dane zabezpieczane. W związku z tym mamy następujące właściwości każdego z RAID’ów:

  • RAID1 (mirror)
    1. minimum 2 dyski dla stworzenia macierzy RAID
    2. wymaga co najmniej tyle samo przestrzeni do zabezpieczenia danych co same dane
    3. rozwiązane zdecydowanie najdroższe ale dające najwyższy poziom zabezpieczenia danych i elastyczności, w szczególności w przypadku wykorzystania mirroru z wieloma lustrami
    4. brak lub niewielki spadek wydajności operacji IO w przypadku awarii
  • RAID5
    1. minimum 3 dyski dla stworzenia macierzy RAID
    2. wymaga tylko jednego dodatkowego dysku do zabezpieczenia danych
    3. rozwiązanie dostępne za przystępną cenę, w szczególności że wraz ze zwiększaniem ilości dysków w macierzy procentowy koszt zabezpieczenia danych maleje
    4. ograniczona elastyczność i stały poziom zabezpieczenia danych
    5. duży spadek wydajności operacji IO w przypadku awarii związany z potrzeba wyliczania sum kontrolnych danych

Jak widać powyżej każdy z raidów może znaleźć sobie zwolenników i wymagania które spokojnie spełni. Dla bardziej wymagających RAID1 dla mniej RAID5, czyli zgodnie z zasadą więcej wymagasz, więcej płacisz.
Tak więc sprawę ochrony danych mamy zapewnioną, teraz pozostała sprawa kontrolerów HBA i magistrali komunikacyjnych (SCSI, FC, SAS, ATA itp.). W tym wypadku mamy dwie możliwości: dyski mogą być wystawione/widoczne wyłącznie za pomocą pojedynczego kontrolera (np. ze względów technologicznych – ATA); dyski mogą być widoczne/wystawione jednocześnie na więcej niż jednym kontrolerze HBA – taka sytuacja występuje np. w przypadku FC i sieci SAN. W pierwszym przypadku na łańcuch SPOF składa się cały zestaw: dyski + kontroler, z tego powodu jedyną możliwością zabezpieczenia jest zastosowanie dwóch zestawów dysków + kontroler i spięcie całości w macierz RAID1 realizowaną na poziomie systemu operacyjnego. Architektura ta mocno ogranicza stosowanie RAID5 ponieważ do każdego z dysków macierzy trzeba by dedykować kontroler HBA, co dodatkowo podraża takie rozwiązanie a w skrajnym przypadku może być nie realizowalne technicznie np. ze względu na brak stosownych slotów PCI w serwerze. W drugim wypadku do zabezpieczenia warstwy HBA należy stosować mechanizmy dostępu wielościeżkowego. Dostęp wielościeżkowy polega na kierowaniu komunikacji do pamięci masowej (dysków) potencjalnie poprzez różne kontrolery HBA. Zazwyczaj dostęp taki realizowany jest za pomocą dwóch trybów pracy: active-standby lub active-active i uzależniony jest od możliwości macierzy dyskowej obsługującej komunikację. W Linuksie będzie to DeviceMapper Multipath, w Solarisie MPxIO, w AIX MPIO, itp. Dla macierzy RAID5 zabezpieczenie przed awarią kontrolera nie jest trywialne i zazwyczaj odpowiednio podraża całość rozwiązania. Praktycznie pozostają nam wyłącznie dwie możliwości: pierwszą jest korzystanie z wydzielonych dla każdego z dysków ale współdzielonych pomiędzy kontrolerami szyn SCSI – sytuację jaką często stosuje się w przypadku budowania klastrów z macierzami współdzielonymi SCSI. Drugą jest korzystanie z dwuportowych dysków FC/SATA/SAS, gdzie powyższą ideę współdzielonego dostępu realizuje się na poziomie elektroniki dysku. C.D.N.

Dodaj komentarz