Czy LVM wpływa na wydajność?

86

Muszę przeprowadzić migrację kilku serwerów do systemu Linux, a jednym ważnym aspektem, który muszę ocenić, jest to, że mój nowy system hosta musi mieć elastyczną pojemność. Oczywiście, przeprowadzając podstawowe badania, natknąłem się na LVM.

Czy jest jakaś kara za wydajność za używanie lvm? Jeśli tak, jak mogę to zmierzyć?

Rozważam teraz, aby Linux był systemem operacyjnym hosta z LVM i zwirtualizowanymi modułami Linux działającymi na nim (czy powinienem dodać LVM również w systemie gościa?).

Pablo
źródło

Odpowiedzi:

102

LVM został zaprojektowany w taki sposób, że naprawdę nie przeszkadza. Z punktu widzenia przestrzeni użytkownika wygląda jak kolejna warstwa „wirtualnych rzeczy” na górze dysku i wydaje się naturalne wyobrażenie sobie, że wszystkie wejścia / wyjścia muszą przejść przez to zanim dotrą do lub z rzeczywistej sprzęt komputerowy.

Ale tak nie jest. Jądro musi już mieć mapowanie (lub kilka warstw mapowania), które łączy operacje wysokiego poziomu, takie jak „zapisz to do pliku” ze sterownikami urządzeń, które z kolei łączą się z rzeczywistymi blokami na dysku.

Gdy LVM jest w użyciu, to wyszukiwanie jest zmieniane, ale to wszystko. (Ponieważ i tak musi się zdarzyć, robienie tego trochę inaczej jest znikomym spadkiem wydajności). Jeśli chodzi o pisanie pliku, bity mają tak samo bezpośrednią ścieżkę do fizycznego nośnika, jak w przeciwnym razie.

Istnieją przypadki, w których LVM może powodować problemy z wydajnością. Chcesz się upewnić, że bloki LVM są odpowiednio wyrównane z systemem bazowym, co powinno nastąpić automatycznie w przypadku nowoczesnych dystrybucji. I upewnij się, że nie używasz starych jąder podlegających takim błędom jak ten . Aha, a używanie migawek LVM obniża wydajność (i coraz bardziej z każdą aktywną migawką). Ale przede wszystkim wpływ powinien być bardzo niewielki.

Co do ostatniego: jak możesz przetestować? Standardowym narzędziem do testowania dysków jest bonnie ++ . Utwórz partycję za pomocą LVM, przetestuj ją, usuń ją i (w tym samym miejscu, aby zachować inne czynniki identyczne) utwórz prosty system plików i ponownie wykonaj test porównawczy. Powinny być prawie identyczne.

mattdm
źródło
17

LVM, jak wszystko inne, jest mieszanym błogosławieństwem.

Jeśli chodzi o wydajność, LVM trochę ci przeszkodzi, ponieważ jest to kolejna warstwa abstrakcji, którą należy opracować, zanim bity uderzą (lub można je odczytać) z dysku. W większości sytuacji ten hit wydajności będzie praktycznie niemożliwy do zmierzenia.

Zalety LVM obejmują to, że można dodać więcej pamięci do istniejących systemów plików bez konieczności przenoszenia danych. Większość ludzi lubi tę zaletę.

Jedną wadą LVM używanego w ten sposób jest to, że jeśli twoja dodatkowa pamięć obejmuje dyski (tj. Obejmuje więcej niż jeden dysk), zwiększasz prawdopodobieństwo, że awaria dysku będzie kosztować twoje dane. Jeśli twój system plików obejmuje dwa dyski i jeden z nich ulegnie awarii, prawdopodobnie straciłeś. Dla większości ludzi jest to akceptowalne ryzyko z powodów związanych z przestrzenią i kosztami (tj. Jeśli jest to naprawdę ważne, będzie budżet na poprawne wykonanie tego) - i ponieważ, jak mówią, kopie zapasowe dobre, prawda?

Dla mnie jedynym powodem nieużywania LVM jest to, że odzyskiwanie po awarii nie jest (a przynajmniej nie było) dobrze zdefiniowane. Dysku z woluminami LVM, na którym był zakodowany system operacyjny, nie można w prosty sposób podłączyć do innego komputera i odzyskać z niego dane; wydaje się, że wiele instrukcji dotyczących odzyskiwania woluminów LVM zawiera kroki takie jak cofnięcie się w czasie i uruchomienie vgcfgbackup, a następnie skopiowanie wynikowego pliku / etc / lvmconf do systemu, na którym znajduje się Twój wolumin ukryty . Mam nadzieję, że wszystko zmieniło się w ciągu trzech lub czterech lat, odkąd ostatni raz musiałem na to patrzeć, ale osobiście nigdy nie używam LVM z tego powodu.

To mówi.

W twoim przypadku zakładam, że maszyny wirtualne będą stosunkowo małe w porównaniu do systemu hosta. Oznacza to, że bardziej prawdopodobne jest, że później będziesz chciał rozszerzyć pamięć na maszynie wirtualnej; najlepiej to zrobić, dodając inny dysk wirtualny do maszyny wirtualnej, a następnie powiększając systemy plików maszyny wirtualnej, których dotyczy problem. Nie masz podatności na łączenie wielu dysków, ponieważ dyski wirtualne najprawdopodobniej będą na tym samym urządzeniu fizycznym w systemie hosta.

Jeśli maszyny wirtualne będą miały dla ciebie jakiekolwiek znaczenie, w jakiś sposób będziesz RAID'ował system hosta, co zmniejszy elastyczność późniejszego powiększania pamięci. Tak więc elastyczność LVM prawdopodobnie nie będzie wymagana.

Zakładam więc, że nie użyłbyś LVM w systemie hosta, ale zainstalowałbyś maszyny wirtualne, aby korzystać z LVM.

David Mackintosh
źródło
6
@DM - Wygląda na to, że pominąłeś fakt, że wolumin fizyczny LVM2 może być dowolnym urządzeniem blokowym, w tym md-RAID. IE: pvcreate / dev / md0 niezależnie od tego, jaki jest podstawowy typ RAID / dev / md0. Jeśli więc Twój / dev / md0 jest macierzą RAID lustrzanych dysków fizycznych ... Utrata jednego dysku fizycznego może mieć wpływ na twoją grupę LVM2. Ponadto: podczas tworzenia macierzy RAID można użyć woluminów logicznych LVM2 jako strony nośnika. Oba działają na poziomie mapowania urządzenia, oba są warstwami wejścia / wyjścia urządzenia.
1
twoje problemy z odzyskiwaniem są nadmierne, trywialne jest przenoszenie tablicy lvm między komputerami z dość nową dystrybucją Linuksa (tj. debian oldstable jest wystarczająco nowy)
hildred
@ user13719: tak, możesz LVM dowolne urządzenie blokowe, ale w praktyce ludzie tego nie robią. Skończyło się na jednym dysku LVM. Następnie dodają kolejny dysk i używają LVM do rozszerzenia istniejącego systemu plików na nowy dysk. W tym momencie awaria jednego z dysków zabije LVM.
David Mackintosh
@ Hildred, do czego miałem na myśli - nie znam żadnych narzędzi, które mogłyby odzyskać dane z LVM, które obejmują wiele dysków (urządzeń blokowych) z brakującym jednym dyskiem.
David Mackintosh
2
To tak, jakby powiedzieć, że noże są złe, ponieważ możesz się skaleczyć podczas żonglowania nimi ... A może po prostu tego nie robić? Używaj ich do zadań, do których lepiej się nadają, takich jak cięcie warzyw.
Chinoto Vokro,
3

Ogólnie: jeśli dodasz nową warstwę złożoności („aka more to do do wykonania”), nic nie będzie szybsze. Uwaga: dodajesz tylko pracę, a nie „zmieniasz” ich sposób wykonywania pracy.

Jak możesz coś zmierzyć? Cóż, tworzysz jedną partycję z LVM, a drugą bez, a następnie używasz normalnego testu porównawczego i po prostu go uruchamiasz. Jak ludzie w

http://www.umiacs.umd.edu/~toaster/lvm-testing/

Jak się wydaje, tylko nieznaczny wpływ na prędkość. Wydaje się, że jest to zsynchronizowane z ustaleniami osoby, która przeprowadziła test porównawczy:

„ext4 działa szybciej z LVM niż bez, a inne testy porównawcze systemu plików” Wątek Listy adresowej jądra Linux

Ale po prostu przetestuj go samodzielnie i sprawdź, czy Twój sprzęt i system operacyjny, którego chcesz użyć, zachowują się tak samo i czy możesz zignorować (może nieznacznie) wpływ dodatkowej warstwy złożoności, która zapewnia elastyczne przechowywanie.

Czy powinieneś dodać LVM do systemu operacyjnego gościa: To zależy od tego, czy potrzebujesz, aby system operacyjny gościa miał również elastyczną pamięć masową, prawda? Twoje potrzeby decydują o tym, co musisz wdrożyć.

akira
źródło
@akria, ups, to zostało przeniesione
ohildred
Z pewnością możesz zmienić sposób wykonywania pracy. Na przykład mogę podać wskazówki dojazdu do lokalizacji za pomocą współrzędnych GPS, nazw ulic lub lokalnych punktów orientacyjnych. Różne sposoby, ale wciąż musisz iść tą samą ścieżką. Czas potrzebny na spojrzenie na mapę papierową w porównaniu do wykonania instrukcji telefonu może się nieznacznie różnić, ale ostatecznie jest nieistotny w porównaniu z czasem marszu.
mattdm
Powiedziałem już, że wpływ dodanej pracy w przypadku lvm nie ma realnego wpływu. Zastanawiam się, o co ci chodzi?
akira
Chodzi o to, że „prowadzę” to, że „ Uwaga: dodajesz tylko pracę, a nie„ zmieniasz ”tak, jak praca jest wykonywana ”, nie jest faktycznym stwierdzeniem.
mattdm
@mattdm: oczywiste jest, że jeśli zmienisz sposób wykonywania pracy (np. inny algorytm, inny fs itp.), wtedy otrzymasz różne wyniki. lvm nie zmienia sposobu działania fs. wiesz to. i dlatego zastanawiam się, o co ci chodzi? „dodaj warstwę czegoś” oznacza „dodanie”, a nie „zmianę innej rzeczy”. ty też to wiesz.
akira
0

Czy powinienem także dodać LVM do systemu operacyjnego gościa?

Nie powinieneś, ponieważ system plików ext3 lub ext 4 w hoście powinien być wystarczający. Nie ma potrzeby dodawania do niej innej grupy woluminów oraz woluminu fizycznego i woluminu logicznego.

Marc
źródło
0

Nie byłoby większego efektu wydajności tylko z lvm, ale jeśli chcesz go wziąć, użyj zamiast tego ZFS. Otrzymujesz zarządzanie wolumenami i możliwość odzyskiwania oraz wiele innych wspaniałych funkcji.

stu
źródło
Jednym z problemów związanych z ZFS jest to, że nie obsługuje on dobrze fizycznych woluminów o różnych prędkościach i rozmiarach.
Gabriel Fair
1
Nie radzi sobie ... jeszcze. I dzieje się tak, jeśli odpowiednio je zorganizujesz. Nie rozumiem, jak lvm ma się lepiej.
stu
0

Żadna wzmianka o lvm2 nie może sprawić, że prędkość odczytu i zapisu zostanie zwielokrotniona (podobnie jak raid0). Osobiście używam 3 identycznych dysków, a nad nimi lvm2 w trybie stripping, operacje odczytu i zapisu zajmują 1/3 czasu, co jest dużym efektem, system plików jest o trzy razy szybszy. Wiem: jakikolwiek dysk ulegnie awarii i wszystkie dane na nim nie będą dostępne; ale to nie znaczy, że zostały utracone, ponieważ BackUPy są MUSZĄ, nic takiego jak Raid, LVM2, ZFS uniknie posiadania BackUP; więc nigdy nie używam mirroringu, raid5 itp., zawsze używam strippingu (aby uzyskać najwyższą wydajność) i synchronizuję BackUPy. ZFS jest świetny do kompresji w locie, a przy parametrze kopiowania większym niż jeden jest jak odbicie lustrzane, ale jedną rzeczą, którą ZFS ma i nikt inny nie ma, jest automatyczne odzyskiwanie w locie zgnilizny bitów (bitów, które spontanicznie zmieniają się podczas dysk jest wyłączony),

Aby wznowić: używam ZFS tylko dla moich kopii zapasowych na dyskach zewnętrznych, wielu (dwóch lub trzech) ssd z lvm2 rozłożonym dla systemu operacyjnego (po aktualizacji i ponawiam klonowanie systemu operacyjnego), zwykle używam niewymiennego systemu operacyjnego; i używam wielu (sześciu) spinnin dysków z lvm2 pozbawionym danych, takich jak maszyny wirtualne, ponownie po każdej zmianie i ponawiam kopie zapasowe; więc po awarii dysku muszę go tylko wymienić i przywrócić ostatnią kopię zapasową; teraz kilka dni mam prędkość zapisu prawie 1,8 GiB / s, więc przywrócenie jednej maszyny wirtualnej z BackUP zajmuje tylko mniej niż 30 sekund (32 GiB na dysk maszyny wirtualnej).

Więc moja odpowiedź brzmi: nie używaj tylko jednej rzeczy, bądź mądry i wykorzystuj to, co najlepsze z każdej części, Lvm2 stripped jest szybszy niż mdraid poziom 0, więcej przy użyciu sześciu wirujących dysków; jedno ostrzeżenie z strippingiem ssd, dwa i trzy są dobre, cztery ssd mogą obniżyć wydajność (moje testy dały niższą prędkość zapisu, gdy użyłem czterech identycznych ssd w trybie stripping, bez względu na to, czy lvm, mdraid0 itp.), wydaje się, że SSD TRIM i takie wzmocnienie zapisu może być główną przyczyną dodawania większej ilości ssd do wolnej objętości, co powoduje niższą prędkość zapisu.

Walcząc z ssd i dowolnym raid0 (woluminami pozbawionymi), idealnie dopasowujesz rzeczy, poprawnie przypisujesz rozmiary klastra do systemu plików, rozmiar stip itp., Więc nikt nie powoduje degradacji; jako przykład: sektor dysku to 2048, więc 2K przy każdym odczycie / zapisie jako minimun, nigdy nie używaj systemu plików, który używa 512 bajtów clusyer, a ponadto lepiej użyć rozmiaru klastra 2K lub 4K; wyobraź sobie teraz, że używasz 3xHDD, każdego z sektorów 2K, więc w każdym klastrze systemu plików Optimun do odczytu / zapisu będzie 3x2K = 6K, ale nie jest to możliwe w wielu systemach plików, pomyśl co, jeśli użyjesz klastra 64K, 64K / 6K = 32 / 3, co powoduje niezrównoważone, więc nieoptymalne itd. Wykonuj matematykę, aby uzyskać optymalny rozmiar klastra.

Moje najlepsze wyniki to: Rozmiar klastra = rozmiar paska * liczba dysków na pasku; w ten sposób każdy odczyt / zapis ma dokładnie taki sam rozmiar, który powoduje, że wszystkie dyski działają, więc poprawa prędkości jest wyjątkowo dobra. Przykładowy rozmiar klastra 192 KB dla 3 dysków o rozmiarze paska 64 KB; inny przykład rozmiar klastra 192 K dla dysku 6 z paskiem 32 K.

I zawsze pamiętaj o testowaniu pojedynczego dysku w bloku 4K, 8K, 16K, 32K, 64K; wiele dysków zapewnia naprawdę złe prędkości przy niższych liczbach, takich jak 4K, ale daje ponad dziesięciokrotnie szybszy czas w przypadku 64K, 128K lub wyższych.

Tak, użycie dużych rozmiarów klastra może spowodować utratę przestrzeni na klastrze lasów każdego pliku (jeśli używasz milionów plików o wielkości tylko 1 bajta każdy) lepiej lepiej użyć systemu kompaktowego / paczki w locie nad systemem plików, na przykład dysk 4TiB z rozmiarem klastra 4K może mieć tylko mniej niż 4TiB / 4K = 1073741824 plików 1Bajt każdy, to tylko 1GiB, jeśli wszystkie pliki mają rozmiar 1Bajt (rozmiar klastra 4K), najgorszy stosunek wielkości klastra, ale jeśli pliki są ogromne, podobnie jak maszyny wirtualne (około 32 GB jako próbka lub zaledwie kilka megabajtów), utracone są tylko w ostatnim klastrze; tak duże pliki, duży rozmiar klastra jest znacznie lepszy pod względem wydajności, ale uważaj, jak korzysta z niego maszyna wirtualna.

Nikt nie powie ci tego sekretu: wewnątrz gościa nie używaj rozmiaru klastra 4K, używaj tego samego rozmiaru klastra co rozmiar klastra, gdzie znajduje się dysk wirtualny, lub jego wielokrotności.

Tak, mam obsesję na punkcie uzyskania największej prędkości wewnątrz dysków dla gości, jak powiedziałem, przy 6 obrotowych dyskach osiągam blisko 1,7 GiB / s, szybkość magistrali SATA III jest wąskim gardłem, a nie same dyski. Używam wysokiej klasy (nie tanich) dysków, pamięci podręcznej 128 MB i prędkości zapisu 283 MB / s każdy.

Dla Ciebie i dla wszystkich: O wiele lepiej jest dowiedzieć się, w jaki sposób rozmiar klastra, rozmiar paska i rozmiar bloku muszą być powiązane przed wykonaniem jakiegokolwiek testu prędkości, w przeciwnym razie testowanie LVM2 lub innego RAID (również ZFS) może dać FALSE wnioski.

Oto przykład: testuję czasy rozruchu Linuksa z dyskami Sata 2x60MiB / s 2,5 cala 5400 obr./min na płycie głównej portów Sata II, a następnie testuję z 2xSSD Sata III (mogą podłączyć więcej niż 250 Mb / s każdy, jeśli są podłączone do Sata III porty), czas rozruchu zajmuje tylko dwie sekundy mniej, tylko dwie sekundy przy pięciominutowym rozruchu, dlaczego? ponieważ większość dysków rozruchowych nie jest używana, działa na RAM i CPU, ale nie we / wy.

Zawsze sprawdzaj, co będziesz robić, a nie tylko prymitywne prędkości (innymi słowy, maksymalna prędkość).

Maksymalna prędkość jest dobra, aby wiedzieć, że bit nie jest reprezentatywny, możesz nie używać dysków z maksymalną prędkością 100% czasu, OS i aplikacje muszą działać na RAM i CPU bez I / O, więc w tym czasie prędkość dysku nie w ogóle ma znaczenie.

Wszyscy mówią, że SSD znacznie poprawia szybkość rozruchu systemu Windows, w moich testach, które są również NIEPRAWIDŁOWE, to tylko ja udowadnia 28 sekund na czas rozruchu prawie osiem minut.

Więc jeśli mnie lubisz: Linux kopiuj do pamięci RAM podczas rozruchu, dysk SSD nie będzie lepszy niż obracanie dysków twardych, przetestowałem również pamięć USB 3.1 Gen2 (odczyt 139 Mb / s), czas uruchamiania jest zależny tylko kilka sekund na pięć minut rozruchu, dlaczego? łatwe, odczyt odbywa się podczas kopiowania do pamięci RAM, po czym dysk / ssd / usb-stick nie jest ponownie używany na pozostałej części śruby, dane są na pamięci RAM, jak napęd pamięci RAM.

Teraz sprzedaję wszystkie moje dyski SSD, które mam, nie poprawiają kopiowania Linux-a na ramie przy rozruchu, ale testy porównawcze mówią, że są one 5 razy szybsze ... zobacz, test porównawczy daje FALSE wnioski ... tak, przetestuj i przetestuj naprawdę dzień pracy.

Mam nadzieję, że to rozwiąże sprawę mężczyzn… LVM ze złym rozmiarem klastra i pasków wpływa znacznie bardziej niż narzut warstwy.

Anonimowy
źródło