Prowadzimy stronę internetową, która obecnie obsługuje 3-5 milionów odsłon. Nasza strona jest witryną udostępniania plików, dlatego zawiera 250 000 plików i kilka tysięcy linków symbolicznych.
Dysk twardy to dysk SATA 1500 GB.
Za pomocą hdparm
dowiedzieliśmy się, że nasza prędkość dysku twardego została zmniejszona do 15-20 MB / s, czyli 80 MB / s.
Teraz chcemy uruchomić, fsck
aby naprawić problem z dyskiem.
- Czy
fsck
rozwiąże ten problem? - Ile czasu
fsck
zajmie ukończenie (chcemy tylko obliczyć czas przestoju, który będziemy mieli)?
hard-drive
linux
kernel
fsck
capacity-planning
Khizar Ansari
źródło
źródło
Odpowiedzi:
Zmniejszenia prędkości należy się spodziewać, ponieważ liczba plików, do których uzyskuje się dostęp jednocześnie, wzrasta. Dyski twarde nie lubią być używane równolegle: za każdym razem, gdy głowica odczytu / zapisu musi przełączać cylindry, tracisz kilka milisekund. Nawet jeśli dwa pliki znajdują się na tym samym cylindrze lub nawet na tej samej ścieżce, może być konieczne poczekanie obrotu, aby przejść z jednego do drugiego. Jeśli mierzysz wydajność dysku w megabitach na sekundę, spodziewaj się, że spadnie on wykładniczo wraz ze wzrostem dostępu równoległego.
fsck
nie pomoże w tym: naprawia tylko uszkodzenie struktury katalogów, nie przeprowadza żadnej optymalizacji.Idealnym rozwiązaniem byłoby przejście na pamięć półprzewodnikową, ponieważ nie ma żadnych fizycznych ograniczeń wirujących talerzy. Ale to chyba nieopłacalne.
Następnym najlepszym rozwiązaniem byłoby użycie macierzy RAID zoptymalizowanej pod kątem dostępu równoległego. Należy pamiętać, że RAID można skonfigurować dla wielu różnych profili wydajności, dlatego trzeba poświęcić trochę czasu na zapoznanie się z ustawieniami dowolnego sprzętu i sterowników RAID.
Możesz być w stanie zmniejszyć problem za pomocą agresywnego buforowania systemu plików. Jeśli twój system ma wystarczającą ilość pamięci RAM, Linux powinien już dawać sobie radę. Uruchom program,
top
aby zobaczyć, ile jest wolnej pamięci RAM. Ale jeśli najczęściej używane pliki nie mieszczą się w pamięci RAM (lub innej pamięci RAM, którą prawdopodobnie uzyskasz), to naprawdę nie pomoże.Obejściem biedaka byłoby podzielenie plików na kilka różnych fizycznych dysków twardych (nie tylko różne partycje na tym samym dysku). To nie jest tak naprawdę długoterminowe, skalowalne rozwiązanie, które kosztuje więcej niż przyzwoitą macierz RAID. Ale może to być szybkie rozwiązanie, jeśli masz leżące dyski.
W przypadku każdego rozwiązania dotyczącego dysków twardych upewnij się, że mają one dużą prędkość obrotową i niskie opóźnienia wyszukiwania.
Napisałem tutaj artykuł z ogólnym doświadczeniem na temat wydajności dysku twardego:
Wskazówki dotyczące systemu UNIX - systemy plików
źródło
hdparm
test miał wiele wspólnego z „dostępem równoległym”. Dla mnie to brzmi bardziej, jakby miał uszkodzony dysk. W przeszłości było szybciej, a teraz nie jest. Prawdopodobnie dlatego, że przenosi sektory.hdparm
przeprowadzono testy i czy wyniki wyrażono w „megabajtach” lub „megabajtach” na sekundę?Spodziewałem się 5 godzin na zakończenie fsck.
Zamiast tego rozważyłbym (to znaczy: testowanie, testowanie i testowanie) migrację do reiserfs.
źródło
źródło
hdparm wykonuje sekwencyjny odczyt. Dysk z serwerem plików powinien wykonywać wiele operacji wyszukiwania, jak powiedzieli inni.
Jeśli otrzymujesz błędy HD, powinny one pojawić się w twoim / var / log / gdzieś.
Dlaczego nie spróbujesz użyć „smartctl -t short / dev / sda”, a następnie „smartctl -t long / dev / sda” ?? ... W przypadku większości nowych dysków twardych możesz wydać to polecenie nawet podczas korzystania z dysku twardego . Smart da ci wyniki. Możesz odczytać stan swojego dysku twardego za pomocą „smartctl --all / dev / sda” ..
Jeśli wysyłasz hdparm na HDD, który jest zamontowany z równoczesnym dostępem, może to być odpowiedź na pytanie, dlaczego Twoje wyniki są znacznie mniejsze niż wcześniej.
Powinienem jak najszybciej przenieść twoje dane do konfiguracji RAID.
źródło