Rozmiar pamięci podręcznej paska RAID oprogramowania Linux MD

1

Z tego, co mogę poskładać, / sys / block / md0 / md / stripe_cache_size jest dla raid5 i 6 ustawiony na bardzo niską wartość domyślną, aby uniknąć głodujących maszyn pamięci.

Zwiększając tę ​​wartość, możesz uzyskać znaczny wzrost prędkości ze swojej tablicy rajdowej. Domyślna wartość to 256 i o ile rozumiem, to „przekłada się” na dyski 256 * 4096 *. Tak więc w przypadku 8 RAID RAID 6 oznaczałoby to użycie 8 megabajtów pamięci.

Myślę, że to przełożyłoby się na około jeden megabajt na dysk. Obecnie większość dysków ma co najmniej 32 MB pamięci podręcznej, a czasem nawet więcej. Aby móc korzystać z całej pamięci podręcznej dysków, spekulowałbym, że wartość 8192 lub nieco mniejsza byłaby dobra i nie dawałaby większego scenariusza najgorszego przypadku uszkodzenia niż wartość domyślna. Również macierz rajdowa zużywa teraz 268 MB pamięci, ale jest to kompromis, który jestem gotów podjąć, chyba że ryzyko uszkodzenia lub utraty danych zostanie znacznie zwiększone przez naprzemienne zmienianie tej wartości.

  1. Czym dokładnie jest stripe_cache_size?
  2. Jak to działa?
  3. Czy zwiększenie wartości zwiększa ryzyko uszkodzenia / utraty danych?
  4. Czy użycie pamięci jest jedynym powodem, dla którego jest domyślnie niskie?
Waxhead
źródło
powiązane: serverfault.com/questions/579489/… . Odpowiedź tam niestety nie odpowiada na te pytania, ale jest lepsza niż nic.
Peter Cordes

Odpowiedzi:

0
  1. Rozumiem, że jest to pamięć podręczna dla kompletnego paska danych, gotowa do zapisania na dysk, w tym danych parzystości.
  2. Zanim pasek zostanie zapisany na dysk, należy go gdzieś uformować.
  3. To zależy. Zwykle zwiększam rozmiar stripe_cache_sLE, ALE zmniejszam pamięć podręczną zgryzów, więc wszystkie dane są przekazywane bezpośrednio do sterownika MD. W ten sposób nie miałem uszkodzenia danych przez wiele lat

tutaj jak zwiększam /etc/udev/rules.d/83-md-stripe-cache.rules KERNEL == "md *", ACTION == "add", TEST == "md / stripe_cache_size", ATTR {md / stripe_cache_size} = "32768"

wartość ta jest zmniejszona vm.dirty_background_bytes = 2097152 4. Domyślnie jest ustawiony na niski ze względów bezpieczeństwa, a nie na oszczędzanie pamięci.

richman1000000
źródło