Szybkie oszacowanie szybkości dysku za pomocą kopii zapasowej
Dmitry Kuzmenko, 30.05.2019, ib-aid.com
Nasze wsparcie techniczne okresowo otrzymuje pytanie (które pojawia się również na forach) - „wygląda na to, że nasze dyski są wolne, jak to potwierdzić”?
Najczęściej to pytanie zadają użytkownicy maszyn wirtualnych, gdzie administrator baz danych nie ma dostępu do ustawień podsystemu dyskowego, a nawet nie zna jego charakterystyk.
Oczywiście prędkość dysku można zmierzyć różnymi narzędziami, od prostego CrystalDiskMark po bardziej złożony IOMeter. Jednak najbardziej wiarygodne wyniki można uzyskać, gdy aplikacje nie pracują z dyskiem. W przeciwnym razie wyniki mogą się różnić, a przy dużym obciążeniu testowanie może obniżyć wydajność systemu.
Co więcej, administratorzy systemowi mogą zabronić instalowania oprogramowania innych firm, nawet na krótki okres czasu.
Jednak kopia zapasowa jest zwykle wykonywana na wszystkich takich systemach (z wyjątkiem tych, które używają oprogramowania do kopii zapasowych na poziomie VM do tworzenia kopii zapasowych Firebird, co jest błędem - patrz #11 tutaj w „12 typowych błędów podczas tworzenia kopii zapasowych baz danych”).
Kopia zapasowa (gbak -b -g) polega na odczycie wszystkich danych z bazy danych i zapisie (sekwencyjnym) tych danych do pliku kopii zapasowej. Z punktu widzenia operacji odczytu/zapisu jest to połączenie losowego odczytu i sekwencyjnego zapisu.
Plik kopii zapasowej ma zwykle rozmiar 60%-70% rozmiaru bazy danych. A ze względu na wersjonowanie i strukturę stron bazy danych, odczytów jest więcej niż zapisów.
Ponieważ plik kopii zapasowej jest zwykle umieszczany na innym fizycznym dysku, ogólna prędkość tworzenia kopii zapasowej będzie zależeć od prędkości losowego odczytu bazy danych oraz prędkości sekwencyjnego zapisu dysku kopii zapasowej. Oczywiście możesz umieścić bazę danych na HDD i wykonać kopię zapasową na SSD, ale będzie to bardzo nieefektywne, więc zakładamy, że prędkość dysku kopii zapasowej jest prawie równa prędkości dysku bazy danych, nie znacznie wyższa ani niższa.
Aby uprościć ocenę prędkości, wzięliśmy tylko rozmiar pliku kopii zapasowej i podzieliliśmy go przez czas tworzenia kopii zapasowej. Wynik będzie w „megabajtach na sekundę”. Jednak aby ocenić uzyskaną wartość w porównaniu z innymi systemami, potrzebny jest jakiś pomiar referencyjny.
Jako punkt odniesienia wzięliśmy przeciętny komputer stacjonarny, z bazą danych na RAID1 z 2 dysków SATA3 HDD i kopią zapasową na osobnym dysku SATA3 HDD (prędkość sekwencyjnego odczytu tego RAID1 wynosi około 180 MB/s, a około 150 MB/s dla dysku kopii zapasowej).
Tutaj kopia zapasowa bazy danych o rozmiarze 31 GB ma rozmiar 21 GB, a tworzenie kopii zapasowej w trybie jednoosobowym (nikt nie pracuje na tym komputerze) zajmuje 18 minut, prędkość tworzenia kopii zapasowej wynosi 19 megabajtów na sekundę.
Tak więc, ponieważ nie jest to wydajny serwer, a tylko komputer stacjonarny (złożony 2 lub 3 lata temu), możemy użyć tej prędkości tworzenia kopii zapasowej jako punktu odniesienia, uznając ją za normalną, a być może minimalną dopuszczalną dla systemów produkcyjnych.
Następnie przeanalizowaliśmy prędkość tworzenia kopii zapasowych na 30 różnych serwerach pod naszym nadzorem, gdzie rozmiar pliku kopii zapasowej wynosi nie mniej niż 5 gigabajtów.
| Wydajność | Prędkość, MB/s | Komentarze i przykłady |
|---|
| Szybka | 50-70 | Były systemy z kopiami zapasowymi od 38 do 150 gigabajtów. Kopia zapasowa bazy danych o rozmiarze 124 GB w 42 minuty - to szybko. | | Średnia | 20-50 | Tutaj średnia prędkość wynosi około 80 gigabajtów na 30-40 minut. To normalne, a nasz komputer stacjonarny pokazuje wynik, który może się tutaj zmieścić. | | Wolna | 10-20 | 463 gigabajty w 11 godzin, 80 gigabajtów w 2 godziny, 293 gigabajty w 5 godzin - to wolno, nawet nasz testowy komputer stacjonarny jest szybszy. | | Bardzo wolna | Poniżej 10 | To jak 8,5 gigabajta na 1 godzinę. Bardzo wolno. |
Jest jasne, że w niektórych badanych systemach kopia zapasowa nie jest wykonywana przy zerowym obciążeniu serwera. Ale w każdym razie jest wykonywana przy minimalnym obciążeniu serwera.
Aby sprawdzić, jak niskie obciążenie może wpłynąć na prędkość tworzenia kopii zapasowej, uruchomiliśmy 2 równoczesne kopie zapasowe na tym samym komputerze stacjonarnym. Obie zajęły 19 minut z prędkością 18 megabajtów na sekundę. To 93% prędkości kopii zapasowej w trybie jednoosobowym, co nie jest dużo (spadek o 7%) dla pojedynczych dysków HDD. Jeśli masz SSD, możesz nie zauważyć różnicy nawet przy uruchomieniu 3-4 kopii zapasowych jednocześnie.
Ogólnie rzecz biorąc, prędkość tworzenia kopii zapasowej wynosząca 20 megabajtów na sekundę lub mniej może być powodem do niepokoju.
W takim przypadku albo dysk kopii zapasowej jest zbyt wolny, a kopia zapasowa powinna być wykonywana tak szybko, jak to możliwe. Albo dysk bazy danych jest zbyt wolny, a ogólna wydajność systemu jest gorsza niż powinna być.
Jak zwiększyć prędkość tworzenia kopii zapasowej
Wiele osób nie używa gbak z pełną prędkością, a czasami można zwiększyć prędkość tworzenia kopii zapasowej za pomocą jednego przełącznika -se service_mgr, aby użyć menedżera usług wewnątrz silnika Firebird.
Zalecana linia poleceń dla szybkiej kopii zapasowej jest następująca, zarówno dla Firebird 2.5, jak i Firebird 3.0:
gbak -se localhost:service_mgr -b -g -user USERNAME -pass password Disk:\Path\Database.fdb Disk:\Path\backup.fbk
Więcej wskazówek i trików dotyczących ogólnej wydajności: