Zasadą, której używam do IO dysku, jest:
75 IOP na wrzeciono dla SATA.
150 IOP na wrzeciono dla FC / SAS
1500 IOP na wrzeciono dla SSD.
Oprócz procesorów IOP na macierz należy również uwzględnić procesory IOP na terabajt. Nierzadko kończy się bardzo złym współczynnikiem IOP na TB, jeśli robi się SATA + RAID6. Może to nie zabrzmieć zbyt wiele, ale często kończy się to tym, że ktoś dostrzega „wolne miejsce” na tablicy i chce z niego skorzystać. Ludzie często kupują koncerty i ignorują iops, podczas gdy w większości systemów korporacyjnych jest odwrotnie.
Następnie dodaj koszt kary zapisu dla RAID:
- 2 dla RAID1, RAID1 + 0
- 4 dla RAID5 (lub 4)
- 6 dla RAID6.
Kara zapisu może być częściowo złagodzona ładne duże pamięci podręczne zapisu i we właściwych okolicznościach. Jeśli masz dużo sekwencyjnego We / Wy zapisu (jak dzienniki DB), możesz znacznie zmniejszyć kary za zapis w RAID 5 i 6. Jeśli potrafisz napisać pełny pasek (np. Jeden blok na wrzeciono), nie musisz czytać, aby obliczyć parzystość.
Załóżmy zestaw RAID 6 8 + 2. W normalnej pracy dla pojedynczego zapisu We / Wy musisz:
- Przeczytaj blok „zaktualizowany”.
- Przeczytaj pierwszy blok parzystości
- Przeczytaj drugi blok parzystości
- Przelicz parzystość.
- napisz wszystkie 3. (6 IO).
Zapisując pełny pasek w pamięci podręcznej - np. 8 kolejnych „kawałków” wielkości paska RAID można obliczyć parzystość dla całej partii, bez konieczności odczytu. Potrzebujesz więc tylko 10 zapisów - po jednym do każdego z danych i dwóch parzystości.
To sprawia, że twoja kara za zapis 1.2.
Należy również pamiętać, że zapisywanie We / Wy jest łatwe do buforowania - nie trzeba go natychmiast umieszczać na dysku. Działa pod łagodnym ograniczeniem czasowym - tak długo, jak średnio przychodzące zapisy nie przekraczają prędkości wrzeciona, wszystkie będą mogły działać z „prędkością pamięci podręcznej”.
Z drugiej strony odczyt IO jest utrudniony - nie można ukończyć odczytu, dopóki dane nie zostaną pobrane. Algorytmy buforowania odczytu i ładowania pamięci podręcznej stają się w tym momencie ważne - przewidywalne wzorce odczytu (np. Sekwencyjne, jak można uzyskać z kopii zapasowej) można przewidzieć i wstępnie pobrać, ale wzorce odczytu losowego nie mogą.
W przypadku baz danych ogólnie sugeruję założenie, że:
większość IO „bazy danych” jest odczytywana losowo. (np. zły dla losowego dostępu). Jeśli możesz sobie pozwolić na koszty ogólne, RAID1 + 0 jest dobry - ponieważ dyski lustrzane dają dwa źródła odczytu.
większość IO „log” to sekwencyjny zapis. (np. dobre do buforowania i wbrew sugestiom wielu DBA, prawdopodobnie wolisz RAID50 niż RAID10).
Trudno powiedzieć o stosunku dwóch. Zależy, co robi DB.
Ponieważ przypadkowe odczytanie IO jest najgorszym przypadkiem buforowania, to właśnie tam SSD naprawdę wchodzi w grę - wielu producentów nie zawraca sobie głowy buforowaniem SSD, ponieważ i tak ma mniej więcej tę samą prędkość. Dlatego szczególnie w przypadku tymczasowych baz danych i indeksów dysk SSD zapewnia dobry zwrot z inwestycji.