Poprawianie IO dzięki FlashCache


14

Mam serwer z 2 dyskami twardymi (2x 1 TB), działający w RAID 1 (SW-RAID). Chcę poprawić wydajność IO za pomocą flashcache. Są na nim uruchomione maszyny wirtualne KVM, używając LVM.

W związku z tym mam następujące pytania:

  • Czy to w ogóle zadziała? flashcachedziała na urządzeniach blokowych, jednak wszystkie są maszynami wirtualnymi z własną konfiguracją.
  • O ile spodziewałbym się zwiększenia wydajności? Większość maszyn wirtualnych obsługuje strony internetowe i niektóre gry hosta.
  • Jak duży musi być dysk SSD? Czy większy dysk SSD zwiększyłby wydajność, ponieważ może buforować więcej plików?
  • Co się stanie, jeśli dysk SSD umrze? Czy flashcachepobierałbym pliki z tradycyjnego dysku twardego i mógłbym po prostu wymienić dysk SSD?
  • O ile szybciej byłoby writebackw porównaniu z writethroughi writearound?

Niestety nie mam dostępu do systemu testowego, więc czy mogę zainstalować flashcachena serwerze na żywo bez odmontowywania dysków? Znalazłem tutaj świetny samouczek , którego chciałbym użyć.


Myślę, że możesz cieszyć się bardziej stałą wydajnością, jeśli możesz użyć dysków SSD jako głównych dysków.
ewwhite

Brak dostępu do systemu testowego? Wszystko czego potrzebujesz to stacja robocza z dyskiem twardym, dyskiem SSD i maszyną wirtualną z dwoma dyskami wirtualnymi (po jednym na każdym urządzeniu). Systemy produkcyjne nie są przeznaczone do wykorzystania jako laboratoria edukacyjne.
Skyhawk

Link nie żyje w tym samouczku, o którym wspominałeś. Jakieś inne miejsce, w którym mógłbym znaleźć te informacje?
Thaeli

Odpowiedzi:


18

Flashcache dla tych, którzy jeszcze go nie widzieli, to metoda rozszerzenia pamięci podręcznej bloków systemu Linux na dysk SSD. Jest to tańsze niż uruchamianie serwera z połową TB pamięci RAM tylko do buforowania.

Czy to w ogóle zadziała?

Powinno. Pamięć podręczna bloków systemu Linux działa poprzez buforowanie dostępnych bloków , a nie plików . Tak długo, jak nie dajesz maszynom KVM bezpośredniego dostępu do urządzeń blokowych (nie jesteś), Linux Block Cache będzie działał. Jednakże, jeśli dając maszynom KVM bezpośredni dostęp blokowy urządzenia odpowiedź jest mniej jasne.

Jeśli korzystasz z wirtualnych dysków z plikami, to na pewno zadziała.

Jeśli korzystasz z dysków wirtualnych wspieranych przez LV, nie wiem.

O ile spodziewałbym się zwiększenia wydajności?

To jest coś, na co nie możemy odpowiedzieć. To zależy od różnych rzeczy. Podsumowując, uzyskasz najlepszą wydajność, jeśli rozmiar dysku SSD będzie większy niż aktywny zestaw bloków. Jeśli uzyskasz idealne buforowanie, wydajność będzie podobna do działania całego systemu na dyskach SSD. Co skutecznie będziesz robił.

Jak duży musi być dysk SSD?

Znalezienie dokładnego rozmiaru jest czymś, w czym nie możemy pomóc. Więcej jest oczywiście lepsze, ale znalezienie dokładnego stosunku między pamięcią podręczną-SSD a pamięcią podstawową nie jest prostą sprawą.

Komplikuje to zapisy ustawione na natychmiastowe opróżnianie, takie jak niektóre operacje systemu plików i niektóre konfiguracje baz danych. Te zapisy zostaną tylko na krótko zapisane w pamięci podręcznej, a na ich wydajność nie wpłynie w żaden sposób obecność lub brak pamięci flash.

Co się stanie, jeśli dysk SSD umrze?

To samo dzieje się, gdy mówisz Linuksowi, aby upuszczał bufory, ale z pewnym zwrotem. W przypadku pamięci podręcznych wszelkie niepoprawne zapisy znajdujące się w pamięci podręcznej bloków zostaną opróżnione na dysk. Co stanie się, gdy dysk SSD zniknie, zależy od trybu buforowania :

Zapisywanie : wszystkie zapisy są zapisywane równolegle w pamięci podręcznej i pamięci podstawowej, więc szanse na nagłą utratę dysku SSD powodującą błędy na maszynach wirtualnych są bardzo małe.

Zapisywanie : Wszystkie zapisy są zapisywane w pamięci podstawowej i buforowane tylko podczas odczytu. Brak szansy na błędy w maszynach wirtualnych.

Zapis zwrotny : Wszystkie zapisy są najpierw zapisywane w pamięci podręcznej i zapisywane w pamięci podstawowej w tle. Najprawdopodobniej spowoduje błędy w maszynach wirtualnych, jeśli dysk SSD ulegnie awarii i nie użyłbym tego trybu w produkcji.

O ile szybsze byłoby zapisywanie zwrotne w porównaniu z zapisywaniem i zapisem?

Zależy od tego, ile piszesz. Jeśli twoje zapisy okresowo nasycają pamięć podstawową, wzrost wydajności może być dość znaczny. Jeśli jesteś głównie czytany z pewnym zapisem, prawdopodobnie nie zauważysz ulepszeń.

Ponadto zapisywanie jest złą zasadą dla tego, co robisz, więc nie używaj go.


1
Cześć sysadmin, dzięki za wyczerpującą odpowiedź. Nie będę używać, writebackponieważ mogłoby to wszystko zepsuć bez jakiegoś BBU. W końcu nie będę używać buforowania SSD, tylko zwykły SSD. Dzięki jeszcze raz!
Devator,

4

Tak, będzie działać poprawnie, o ile korzystasz z odpowiednich urządzeń blokowych. I jest sztuczka.

Gdy LVM skanuje w poszukiwaniu PV, powinien zobaczyć partycję przez sam dysk twardy, a także przez „wirtualne” urządzenie flashcache.

Jednym oczywistym objawem powinno być to, że narzędzia LVM narzekają na duplikaty PV.

Poprawka, aby uniknąć tych ostrzeżeń, a co ważniejsze, upewnić się, że urządzenie LVM2 używa pamięci flashcache, polega na dostosowaniu filtra /etc/lvm/lvm.conf.

Strona LVM.CONF(5)wyjaśni to lepiej niż ja, ale zostawię ci przykład, jeśli wszystkie woluminy fizyczne są wspierane przez flashcache:

filter = [ "a/.*dm.*/" ]


1

Niektóre aplikacje otwierają pliki w sposób niebuforowany.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (od Linuksa 2.4.10) Spróbuj zminimalizować efekty bufora we / wy do iz tego pliku. Zasadniczo obniża to wydajność, ale jest użyteczne w szczególnych sytuacjach, na przykład gdy aplikacje wykonują własne buforowanie. Plikowe operacje wejścia / wyjścia są wykonywane bezpośrednio do / z buforów przestrzeni użytkownika. Flaga O_DIRECT sama w sobie stara się synchronicznie przesyłać dane, ale nie daje gwarancji flagi O_SYNC, że dane i niezbędne metadane są przesyłane. Aby zagwarantować synchroniczne operacje we / wy, oprócz O_DIRECT należy użyć O_SYNC. Patrz UWAGI poniżej, aby uzyskać dalszą dyskusję.

Na przykład jest to bardzo częste w przypadku baz danych. Sprawdź dokładnie, czy pamięć flash działa z tym zestawem aplikacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.