Tutaj dzieje się wiele rzeczy.
Po pierwsze, wszystkie nowoczesne technologie dyskowe są zoptymalizowane pod kątem przesyłania zbiorczego. Jeśli musisz przenieść 100 MB danych, zrobią to znacznie szybciej, jeśli będą w jednym ciągłym bloku, a nie rozproszeni po całym miejscu. Dyski SSD bardzo tu pomagają, ale nawet wolą dane w sąsiadujących blokach.
Po drugie, resilvering jest dość optymalny, jeśli chodzi o operacje dyskowe. Odczytujesz ogromny ciągły fragment danych z jednego dysku, robisz na nim szybkie operacje procesora, a następnie przepisujesz go w innym dużym ciągłym kawałku na inny dysk. Jeśli dojdzie do awarii zasilania, nic wielkiego - po prostu zignorujesz dane ze złymi sumami kontrolnymi i będziesz postępował jak zwykle.
Po trzecie, usuwanie pliku jest bardzo wolne . ZFS jest szczególnie zły, ale praktycznie wszystkie systemy plików są wolno usuwane. Muszą modyfikować dużą liczbę różnych fragmentów danych na dysku i odpowiednio je mierzyć (tj. Czekać), aby system plików nie został uszkodzony w przypadku awarii zasilania.
Jak to możliwe, że resilverowanie całej macierzy zajmuje godzinę, a usunięcie z dysku zajmuje 4 dni?
Resilvering to coś, w czym dyski są naprawdę szybkie, a usuwanie to coś, w czym dyski są wolne. Na megabajt dysku wystarczy odrobina resilveringu. W tym miejscu może znajdować się tysiąc plików, które należy usunąć.
70 usunięć na sekundę wydaje się bardzo bardzo słabą wydajnością
To zależy. Nie byłbym tym zaskoczony. Nie wspominałeś, jakiego typu dysku SSD używasz. Nowoczesne dyski SSD Intel i Samsung są całkiem dobre w tego rodzaju operacjach (odczyt-modyfikacja-zapis) i będą działać lepiej. Tańsze / starsze dyski SSD (np. Corsair) będą wolne. Decydującym czynnikiem jest liczba operacji we / wy na sekundę (IOPS).
ZFS jest szczególnie powolny, aby usunąć rzeczy. Zwykle wykonuje usuwanie w tle, więc nie widzisz opóźnienia. Jeśli robisz ich ogromną liczbę, nie może tego ukryć i musi cię opóźnić.
Dodatek: dlaczego usuwanie jest powolne?
- Usunięcie pliku wymaga kilku kroków. Metadane pliku muszą zostać oznaczone jako „usunięte”, a ostatecznie muszą zostać odzyskane, aby można było ponownie wykorzystać miejsce. ZFS to „system plików o strukturze dziennika”, który działa najlepiej, jeśli tylko tworzysz rzeczy, nigdy ich nie usuwasz. Struktura dziennika oznacza, że jeśli coś usuniesz, w dzienniku będzie luka, więc inne dane muszą zostać ponownie uporządkowane (zdefragmentowane), aby wypełnić lukę. Jest to niewidoczne dla użytkownika, ale ogólnie powolne.
- Zmiany należy wprowadzić w taki sposób, aby w razie awarii zasilania system plików pozostawał spójny. Często oznacza to czekanie, aż dysk potwierdzi, że dane naprawdę znajdują się na nośniku; dla dysku SSD może to zająć dużo czasu (setki milisekund). Efektem netto jest to, że jest o wiele więcej księgowości (tj. Operacje dyskowe I / O).
- Wszystkie zmiany są niewielkie. Zamiast czytać, pisać i kasować całe bloki flash (lub cylindry na dysk magnetyczny), musisz zmodyfikować trochę jednego z nich. Aby to zrobić, sprzęt musi odczytać cały blok lub cylinder, zmodyfikować go w pamięci, a następnie ponownie zapisać na nośniku. To zajmuje dużo czasu.