Mam pulę lustrzaną ZFS z czterema dyskami ogółem. Dwa z tych dysków są przeznaczone do obracania kopii zapasowych poza siedzibą firmy. Oczekiwałem, że po wstępnym resilveringu mogę, detach
a później attach
dysk, i wykonam tylko resilver przyrostowy - jednak w testach wydaje się, że wykonuje pełny resilver niezależnie od tego, czy dysk, który jest podłączony, zawiera już prawie całą pulę zawartość.
Czy użycie metody offline
/ online
dałoby mi pożądany wynik tylko aktualizacji dysku - a nie jego pełnej odbudowy? Czy też, aby ta praca była zgodna z oczekiwaniami, czy muszę zrobić coś zupełnie innego - na przykład użyć każdego dysku z kopią zapasową jako puli 1-dyskowej i send
udostępnić mu najnowsze migawki za każdym razem, gdy trzeba go zaktualizować?
zfs send
polecenia, aby pobrać pełne lub przyrostowe strumienie kopii zapasowych zapisane na dyskach kopii zapasowej lub użyćzfs recv
do utworzenia duplikatu dysku. Zdecydowanie polecam użycie jakiegoś oprogramowania do zarządzania tym procesem.Odpowiedzi:
Nie idź dalej, niszcząc tablicę ZFS, aby „obracać” dyski poza siedzibą. Jak widzieliście, czas odbudowy jest wysoki, a proces resilveringu odczyta / zweryfikuje użyty rozmiar zestawu danych.
Jeśli masz taką możliwość, migawki i wysyłanie danych do zdalnego systemu to czyste, nieinwazyjne podejście. Podejrzewam, że możesz przejść przez proces posiadania dedykowanej puli pojedynczych dysków, kopiowania do niej i eksportowania / importowania zpool ... ale to nie jest zbyt eleganckie.
źródło
Po dalszych eksperymentach znalazłem uczciwe rozwiązanie, jednak wiąże się to ze znacznym kompromisem. Dyski, które zostały
offline
odłączone, ale nie mogą zostać odłączone, można później przywrócić do trybu online, wykonując tylko przyrostową operację resilveringu („ Po przełączeniu urządzenia do trybu online wszelkie dane zapisane w puli są ponownie synchronizowane z nowo dostępnym urządzeniem ”). W moich testach skraca to czas resilveringu dla kopii lustrzanej na 3 dyskach z 28 godzin do nieco ponad 30 minut, przy około 40 GB delta danych.Kompromis polega na tym, że każda pula z dyskiem offline zostanie oznaczona jako zdegradowana. Pod warunkiem, że nadal istnieją co najmniej dwa dyski online (w puli lustrzanej), jest to ostrzeżenie - integralność i redundancja pozostają nienaruszone.
Jak wspomnieli inni, to ogólne podejście jest dalekie od ideału - wysyłanie migawek do zdalnej puli byłoby znacznie bardziej odpowiednie, ale w moim przypadku nie jest to możliwe.
Podsumowując, jeśli musisz usunąć dysk z puli, a następnie dodać go z powrotem bez konieczności pełnego resilverowania, zalecam następujące podejście:
zpool offline pool disk
hdparm -Y /dev/thedisk
zpool online pool disk
A ponieważ nie zostało to jeszcze przetestowane, istnieje ryzyko, że operacja resilverowania delta nie będzie dokładna. W puli „na żywo” i / lub dyskach offline mogą wystąpić problemy. Zaktualizuję, jeśli mi się to przydarzy, ale na razie eksperymentuję z tym podejściem.
źródło
Aktualizacja 15 października 2015 r .: Dzisiaj odkryłem
zpool split
polecenie, które dzieli nową pulę (o nowej nazwie) z istniejącej puli.split
jest znacznie czystszy niżoffline
idetach
, ponieważ obie pule mogą wtedy istnieć (i być czyszczone osobno) w tym samym systemie. Nową pulę można również wyczyścić (i odpowiednio)export[ed]
przed odłączeniem od systemu.(Mój oryginalny post znajduje się poniżej.)
Ostrzeżenie! Różne komentarze na tej stronie sugerują, że jest to możliwe (lub może być) dla
zpool detach
dysku, a następnie w jakiś sposób ponownie podłącz dysk i uzyskaj dostęp do danych w nim zawartych.Jednak zgodnie z tym wątkiem (i własnym eksperymentem)
zpool detach
usuwa „informacje o puli” z odłączonego dysku. Innymi słowy, adetach
jest jak szybkie formatowanie dysku . Po tym, jakdetach
wiele danych nadal może znajdować się na dysku, ale praktycznie niemożliwe będzie ponowne zamontowanie dysku i wyświetlenie danych jako użytecznego systemu plików.W związku z tym wydaje mi się, że
detach
jest bardziej destrukcyjny niżdestroy
, jak sądzę,zpool import
może odzyskać zniszczone baseny!detach
Jest nieumount
, anizpool export
, anizpool offline
.W moim eksperymencie, jeśli najpierw
zpool offline
urządzenie, a następniezpool detach
to samo urządzenie, reszta puli zapomina, że urządzenie kiedykolwiek istniało. Ponieważ jednak samo urządzenie byłooffline[d]
wcześniejdetach[ed]
, samo urządzenie nigdy nie jest powiadamiane odetach
. Dlatego samo urządzenie nadal ma informacje o swojej puli i może zostać przeniesione do innego systemu, a następnieimport[ed]
(w stanie zdegradowanym).Dla dodatkowej ochrony
detach
możesz nawet fizycznie odłączyć urządzenie po wydaniuoffline
polecenia, ale jeszcze przed wydaniemdetach
polecenia.Mam nadzieję, że użyję tego
offline
, adetach
następnieimport
rozpocznę tworzenie kopii zapasowej mojej puli. Podobnie jak w przypadku oryginalnego plakatu, planuję używać czterech dysków, dwóch w stałym lustrze i dwóch do comiesięcznych, rotacyjnych kopii zapasowych poza witryną (i offline). Sprawdzę każdą kopię zapasową, importując ją i szorując w osobnym systemie, przed przetransportowaniem poza miejsce. W przeciwieństwie do oryginalnego plakatu nie mam nic przeciwko przepisywaniu całego dysku kopii zapasowej co miesiąc. W rzeczywistości wolę kompletne przepisywanie, aby mieć świeże bity.źródło
Czy na tej samej maszynie próbowałeś utworzyć nową pulę z 2 dyskami w lustrze? Następnie utwórz migawkę w puli roboczej, a następnie wyślij tę migawkę do nowej puli, powtórz, a następnie następne wysyłanie migawki będzie przyrostowe. Nie jest tak samo z „wysyłaniem danych do zdalnego systemu”, ponieważ jest to pula w tym samym systemie / serwerze / maszynie. Dzięki tej konfiguracji możesz nadal stosować zpool split / offline / detach / attach, ale robisz to tylko w drugiej (kopiującej) puli, a nie w puli źródłowej.
źródło