Czy mogę zapewnić nadmiarowość danych na serwerze, gdy używam RSYNC?

1

Powiedzmy, że mam serwer, który zapewnia usługi o znaczeniu krytycznym, usługi te polegają na danych zsynchronizowanych z innym serwerem. Pytanie brzmi: kiedy mogę zapewnić nadmiarowość danych na serwerze, jeśli do synchronizacji danych użyję RSYNC?

Czy RSYNC zapewnia sposoby sprawdzania, czy synchronizacja zakończyła się bez jakiegokolwiek uszkodzenia danych (z jakiegokolwiek powodu)?

Czy istnieje niezawodny sposób na wznowienie synchronizacji pliku (od momentu, w którym został przerwany) w przypadku upuszczenia linii lub podobnego? Czy może jest lepsza alternatywa dla RSYNC, która powinna być stosowana w scenariuszach, w których nadmiarowość danych jest krytyczna?

Marek Szanyi
źródło

Odpowiedzi:

1

Twoje pytanie jest dla mnie nieco mylące. Jeśli przez „redundancję” masz na myśli „uczciwość” --to znaczy. „czy mogę coś synchronizować z moim serwerem, czy mogę mieć pewność, że jest on nieco identyczny z materiałem źródłowym? odpowiedź brzmi: prawdopodobnie, ale sprawdzanie integralności jest tak dobre, jak metody sumowania / porównywania stosowane przez Rsync. Aby uzyskać więcej informacji na ten temat, odsyłam Cię do strona man dla Rsync (Sprawdź -c i -B opcje) i strona wiki dla Rsync , który omawia algorytmy porównania używane przez Rsync.

W odniesieniu do przerwanego Rsyncs : oprócz sprawdzanie kodu powrotu Rsync, aby określić, czy zakończyło się poprawnie (można znaleźć listę kodów wyjścia Rsync tutaj ) ponowne uruchomienie Rsync to najlepszy sposób na sprawdzenie, czy zakończył się bez uszkodzenia lub przerwy za pierwszym razem. Rsync porówna i pominie wszystkie pliki, które zostały już pomyślnie skopiowane, i skopiuje wszystko, co nowe lub inne od źródła (to samo dzieje się z „wznowieniem” przerwanego transferu). Jeśli materiał źródłowy zmienia się tak szybko, że nie można zagwarantować spójności między dwoma przebiegami, Rsync może nie być najlepszym narzędziem do zapewnienia synchronizacji.

Jeśli przez „redundancję” naprawdę rozumiesz „nadmiarowość” : tj. „Chcę tylko nadpisać na serwerze docelowym, jeśli jestem pewnie Mam nienaruszoną kopię danych do użycia, nawet jeśli moja transmisja spadnie ”, rozwiązaniem byłoby zrobienie wielu Rsyncs, tak jak poniżej:

  1. Ponownie zsynchronizuj starą kopię danych z lokalizacji lokalnej 1 z lokalną lokalizacja 2 - zarówno na tym samym serwerze, jak i lokalizacjach sieci wewnętrznej które mają niskie ryzyko awarii połączenia.
  2. Uruchom ponownie krok 1 i sprawdź błędy. To potwierdza, że ​​masz dwie kopie istniejący zestaw danych, które są identyczne.
  3. Ponownie zsynchronizuj zdalną (nową) kopię danych do lokalizacji 1.
  4. Uruchom ponownie krok 3, aby to zapewnić lokalizacja 1 zawiera nienaruszoną kopię nowych danych.

Jeśli krok 4 lub 5     są przerywane, a) spróbuj Rsync ze zdalnego źródła     ponownie lub b) po prostu odwróć kierunek Rsync w kroku 1 i     uruchom go ponownie, zastępując (prawdopodobnie uszkodzoną) kopię pilota     dane z najnowszą „znaną dobrą” kopią z lokalizacji kopii zapasowej     na lokalnej maszynie. Gwarantuje to, że masz „nadmiarowość”, ponieważ nigdy nie będziesz narażony na uszkodzenie tylko swoich danych bez możliwości powrotu do nienaruszonego zestawu danych.

Zac B
źródło
tak, miałem na myśli uczciwość
Marek Szanyi
Dobrze. Ponowne uruchomienie rsync, dopóki nie znajdzie żadnych różnic, jest najlepszym sposobem na zapewnienie integralności (w ramach ograniczeń wzoru kontrolnego rsync).
Zac B
1
Oprócz komentarza @ ZacB dotyczącego ponownego uruchomienia rsync, jeśli chcesz być pewien, że po powrocie ostatniego rsync powróci, nie wprowadzono żadnych zmian, a następnie uruchom go ponownie wywołany --checksum. Zajmie to znacznie więcej czasu, ale wyeliminuje szansę na to, że bitrot miał miejsce na jednym z dysków, chociaż sposób jego rozwiązania (wybierz plik, który ma zostać zachowany) w bazie bitrotów, nie jestem pewien i może to spowodować nadpisanie dobre dane ze złym.
flungo