Używam puli ZFS składającej się z dwóch lustrzanych dysków. Aby móc tworzyć kopie zapasowe poza siedzibą, kupiłem jeszcze dwa dyski.
Mój pierwotny plan polegał na utworzeniu kopii zapasowej poza siedzibą, dołączając trzeci dysk do kopii lustrzanej, czekając na resilver ZFS, a następnie odłącz dysk i przenieś go poza miejsce instalacji. Działa to wystarczająco dobrze, ale byłem zaskoczony, że wydaje się, że wykonuje pełny resilver za każdym razem, gdy dysk jest podłączony (czytałem i być może źle zrozumiałem, że każde dołączenie spowoduje przyrostowy lub delta resilver). Powoduje to, że tworzenie kopii zapasowych trwa dłużej niż jest to dopuszczalne.
Moje wymagania to mieć kopię mojego zpoola i wszystkie jego migawki, które mogę obracać codziennie. Oznacza to, że resilvering musi zająć maksymalnie 24 godziny - obecnie jest to bliskie, ale nasze plany powiększenia puli przekroczą ten przedział czasowy.
Jak mogę przechowywać kopie zapasowe poza siedzibą, które nie wymagają pełnej operacji resilveringu? Czy powinienem używać innego systemu plików na moich dyskach kopii zapasowych (np. Eksportować obraz, zamiast być częścią puli ZFS)? Czy powinienem mieć kopie zapasowe w osobnej puli i wysyłać do niej nowe migawki podczas ich tworzenia?
Odpowiedzi:
Po wielu majstrowaniach i eksperymentach znalazłem rozwiązanie, choć z dość dużym kompromisem.
Po pierwsze, opcje, które musiałem wykluczyć:
Posiadanie drugiego zewnętrznego serwera ZFS z pulą lustrzaną nie było opcją ze względu na koszty. Gdyby była to opcja, byłoby to zdecydowanie najlepsze podejście, wykorzystujące wysyłanie / odbieranie ZFS do wysyłania migawek do zdalnej puli.
Mając drugą, lustrzaną pulę ZFS, z której mógłbym usunąć dyski, aby zabrać je do domu. Jest to bardziej wykonalne niż pierwsza opcja, ale potrzebowałbym drugiej puli, aby zawsze mieć dwa dyski u klienta (lub użyć dwóch kopii danych na jednym dysku u klienta). Obecnie mam cztery dyski i nie ma już miejsca na jedną piątą na serwerze. To byłoby uczciwe podejście, ale wciąż nie idealne.
Za pomocą ZFS podłącz i odłącz, aby obrócić dysk kopii zapasowej do i z lustrzanej puli. Działa to dobrze, ale musi wykonywać pełny resilver za każdym razem, gdy dysk jest dodawany. To trwa niedopuszczalnie długo, więc nie mogłem na tym polegać.
Moje rozwiązanie jest podobne do używania
attach
idetach
, jakkolwiek używaonline
ioffline
. Ma to tę zaletę, że wykonuje resilvering delta w porównaniu do pełnego resilveringu, ale wadą jest to, że pula zawsze zgłaszaDEGRADED
stan (pula zawsze ma dwa dyski; obracające się dyski zewnętrzne są zaznaczone,offline
gdy znajdują się w zdalnym magazynie i resilver, a następnie wchodzą w tryb online kiedy są na miejscu).Krótkie podsumowanie i przegląd mojej konfiguracji:
Mam jeden serwer ZFS i cztery identyczne dyski. ZFS jest skonfigurowany do korzystania z puli lustrzanej. Dwa z czterech dysków są stałymi członkami tej puli. Pozostałe dwa dyski się obracają; jeden jest zawsze w magazynie zewnętrznym, drugi jest częścią puli, która ma służyć jako gotowa kopia zapasowa.
Kiedy przychodzi czas na obracanie kopii zapasowych:
Czekam na
zfs scrub
zakończenie, aby upewnić się, że dysk kopii zapasowej jest wolny od błędówI
zfs offline
dysk, który zostanie pobrany zdalnie. Po jego wyłączeniu musiałbym go rozwinąćhdparm -Y /dev/id
. Po minucie częściowo wyjmuję sanie dyskowe (na tyle, aby zapewnić utratę mocy), a następnie daję mu kolejną minutę przed całkowitym wyciągnięciem napędu, aby upewnić się, że przestał się obracać. Dysk trafia do torby statycznej, a następnie do etui ochronnego i wychodzi poza miejsce.Przynoszę drugi dysk zewnętrzny. Zostaje zainstalowany w zasobniku Hotswap i obraca się. Używam
zfs online
do przywracania dysku do puli i rozpoczynam częściowe resilverowanie, aby było współbieżne.Ten system gwarantuje, że w danym momencie mam dwa
ONLINE
dyski lustrzane i jedenOFFLINE
dysk zdalny (który został wyczyszczony). Czwarty dysk jest albo przeskalowany, albo w trybie online, co ma tę zaletę, że w przypadku awarii działającego dysku prawdopodobnie pula będzie nadal składać się z dwóch dysków online.Działa dobrze przez ostatnie kilka tygodni, ale nadal uważam to za hackish podejście. Sprawdzę, czy napotkam jakieś poważne problemy.
Aktualizacja: Po kilku miesiącach pracy z tym stwierdziłem, że w moim rzeczywistym użyciu resilvering zajmuje tyle samo czasu na odłączenie / dołączenie i offline / online. W moich testach nie sądzę, żebym uruchomił szorowanie - mam przeczucie, że jeśli dysk jest niedostępny dla szorowania, to wymaga pełnej resilver.
źródło
Dlaczego ZFS nie wyśle migawek na zdalną maszynę ZFS? Używam do tego prostego skryptu bash:
źródło
Stworzyłem narzędzie o nazwie snapdump, które pozwala ci tworzyć przyrostowe zrzuty zestawów danych ZFS do obcego (non ZFS) systemu plików. Snapdump obsługuje również przywracanie przyrostowego łańcucha migawek za pomocą jednego polecenia.
źródło