bcache na md lub md na bcache

11

Bcache pozwala jednemu lub większej liczbie szybkich napędów dyskowych, takich jak dyski SSD oparte na pamięci flash, działać jako pamięć podręczna dla jednego lub kilku wolniejszych dysków twardych .

Jeśli poprawnie rozumiem,

  • dysk SSD * może być przypisany do buforowania wielu dysków twardych z kopią zapasową, a następnie powstałe urządzenia buforowane mogą być RAIDowane za pomocą mdadm
    lub
  • wiele dysków twardych może być RAIDowanych w jednym urządzeniu md z jednym dyskiem, a dysk SSD przypisany do buforowania tego

Zastanawiam się, jakie jest rozsądniejsze podejście. Przyszło mi do głowy, że wyhodowanie RAID5 / 6 może być prostsze dzięki jednej lub drugiej technice, ale nie jestem pewien, która!

Czy istnieją uzasadnione powody (np. Zwiększenie pamięci kopii zapasowej lub cokolwiek innego), aby wybrać jedno podejście nad drugim (w przypadku dużego systemu plików innego niż root zawierającego pliki kopii zapasowej maszyny wirtualnej)?


* „SSD” Mam na myśli jakieś nadmiarowe urządzenie SSD, np. RAID1 dwóch fizycznych dysków SSD


źródło
W obu przypadkach bcachenależy sformatować wszystkie dyski, które mają zostać bcacheutworzone md, więc albo trzeba utworzyć tablicę, sformatować pojedynczy wynikowy dysk w całości jako bcachepartycję z kopią zapasową, połączyć go z dyskiem pamięci podręcznej i przejść stamtąd lub sformatować wiele dyski za pomocą bcache, połącz je z napędem pamięci podręcznej, a następnie sformatuj wiele dysków jako jedną tablicę. W obu przypadkach istnieje wiele możliwych punktów awarii, z których wszystkie zależą od interoperacyjności między dwoma systemami plików - nie wspominając o końcowym pliku fs. patrz tutaj : przewiń w dół .
mikeserv
Dzięki github.com/g2p/blocks możesz przekonwertować go w miejscu, choć istnieją pewne ograniczenia.
Adam Ryczkowski
@ mikeserv Rozumiem to wszystko, jest to specjalnie zaprojektowany serwer, więc wszystko jest dobrze. Co masz na myśli „dwa systemy plików”? bcache nie jest systemem plików - jedynym systemem plików, jaki będę mieć, będzie XFS na końcowym urządzeniu bcache lub mdadm (w zależności od wybranej opcji).
Dzięki @Adam, konwersja w miejscu nie stanowi dla mnie problemu.
@ Mikeserv nie, nie jest. Systemy plików (np. Btrfs, xfs, extN itp.) Działają na urządzeniach blokowych. mdadm i bcache działają na poziomie urządzenia blokowego, a nie na poziomie systemu plików (btrfs myli problem z naruszeniem warstw, ale jest to zupełnie osobna rozmowa).

Odpowiedzi:

4

Myślę, że buforowanie całego urządzenia MD ma sens.

Umieszczenie bcache w pamięci podręcznej dla całego urządzenia MD poświęca cały pomysł rajdu, ponieważ wprowadza kolejny pojedynczy punkt awarii.

  • Awarie OTH dysków SSD są stosunkowo rzadkie, a pamięć podręczna może zostać wprowadzona do trybu writethrough/ writearound(w przeciwieństwie do writebacktrybu), w którym nie ma danych przechowywanych tylko na urządzeniu pamięci podręcznej, a awaria pamięci podręcznej nie zabija informacji w nalot sprawia, że ​​jest to stosunkowo bezpieczna opcja.

  • Innym faktem jest to, że istnieje znaczny narzut obliczeniowy miękkiej macierzy RAID-5; podczas buforowania każdego wirującego członka rajdu osobno komputer nadal musi ponownie obliczać wszystkie parytety, nawet przy trafieniach z pamięci podręcznej

  • Oczywiście poświęciłbyś trochę drogiego miejsca na ssd, jeśli buforowałbyś każdy wirujący dysk osobno. - Chyba że planujesz używać zranionej pamięci podręcznej ssd.

  • Obie opcje stosunkowo nie wpływają na czas wzrostu procesu - chociaż opcja z obracającymi się dyskami, które są buforowane osobno, może być wolniejsza z powodu większego ruchu autobusów.

Jest to szybki i stosunkowo prosty proces do skonfigurowania bcache w celu usunięcia dysku ssd, gdy trzeba go wymienić. Dzięki blokom powinna istnieć możliwość migracji konfiguracji RAID na dwa sposoby na miejscu.

Należy również pamiętać, że w tej chwili większość (wszystkie?) Live-CD dystrybucje nie obsługująbcache , więc nie można po prostu uzyskać dostęp do danych z takich narzędzi niezależnie od bcache- mdraidopcja wybranego układu.

Adam Ryczkowski
źródło
1
Zaktualizowałem pytanie, aby było jasne, że nie planuję mieć nie redundantnej pamięci podręcznej SSD. Twój drugi punkt jest świetny, dzięki za to. Trzecia kula na temat miejsca: masz na myśli to, że zapisujesz parzystość na dysku SSD? jeśli jesteś ostatnim para, używam F20, ale w końcu będę używać RHEL / CentOS7 lub Debian Jessie (jeśli narzędzia bcache dokonają cięcia).
@JackDouglas Ad 3. punkt: Tak, dokładnie to. Ale ponieważ planujesz korzystać z napadanych dysków SSD, nie dotyczy to ciebie.
Adam Ryczkowski
1
Nadal tak się dzieje, ponieważ nie tylko będą dublowane, ale także będą musiały przechowywać parzystość RAID dla dysków zapasowych. Nie dzieje się tak, jeśli RAID jest wykonywany pod pamięcią podręczną, co moim zdaniem było twoim celem
Uważam, że masz na myśli coś przeciwnego: macierz ssd nie musi przechowywać parzystości wirujących dysków, jeśli jest zasilana przez cały dysk mdraid.
Adam Ryczkowski
1
tak, właśnie o to mi chodzi!
1

Myślę, że rozsądnym podejściem jest buforowanie wynikowego urządzenia MD.

bcache jest zaprojektowany do przechodzenia przez sekwencyjne odczyty i zapisy.

Jeśli buforujesz każde urządzenie osobno, logicznie, kilka urządzeń rozbiera się na napadniętą lub pozbawioną dostępu MD, z perspektywy bcache, ciągle będzie zapisywać losowe bloki.

Chociaż buforowany wolumin MD będzie wyglądał normalnie, zapisuje pliki w woluminie, a następnie losowe bloki na kilku urządzeniach.

Cały sens rajdu twardego i oprogramowania polega na rozbieraniu danych w backendie, aby system plików wyglądał jak normalny wolumin.

Może to nie być poprawne (ponieważ deweloperzy bcache mogą być sprytni i brać pod uwagę tego rodzaju sytuację), ale logiczną optymalną rzeczą jest buforowanie woluminów, a nie blokowanie urządzeń.

oświecony
źródło
również bardzo dobra uwaga
Duży sekwencyjny zapis do RAID5 / 6 powoduje sekwencyjny zapis do wszystkich urządzeń składowych. Każde urządzenie składowe otrzymuje każdy blok danych N-1 (lub parzystość), ale dane, które otrzymuje, są sekwencyjne. Ale masz rację, że to zniekształci rzeczy. Jeśli istnieją fragmenty, w których często zapisywane są częściowe paski, co skutkuje odczytem-modyfikacją-zapisem (części) paska parzystości, które mogą być buforowane przez bcache. Buforowanie go wyżej, zanim częściowe pasy trafią na urządzenie MD, byłoby jeszcze lepsze.
Peter Cordes,