System plików deduplikacji na poziomie bloku


8

Szukam rozwiązania do deduplikacji systemu plików kopiowania przy zapisie dla ogólnych danych użytkowników, takich jak /homei ich kopie zapasowe. Powinien on używać deduplikacji online / wbudowanej / synchronicznej na poziomie bloku przy użyciu bezpiecznego mieszania (w przypadku znikomej szansy na kolizję), takiego jak SHA256 lub TTH . Zduplikowane bloki nie muszą nawet dotykać dysku.

Chodzi o to, że powinienem móc po prostu skopiować /home/<user>na zewnętrzny dysk twardy z takim samym systemem plików, aby wykonać kopię zapasową. Prosty. Bez ingerencji w przyrostowe kopie zapasowe, w których uszkodzenie którejkolwiek z migawek prawie zawsze psuje wszystkie późniejsze migawki i nie trzeba używać konkretnego narzędzia do usuwania ani „pobierania” migawki. Wszystko powinno być po prostu zrobione z przeglądarki plików bez obaw. Czy potrafisz sobie wyobrazić, jakie to byłoby łatwe? Nigdy więcej nie będę musiał myśleć dwa razy o tworzeniu kopii zapasowych!

Nie przeszkadza mi hit wydajności, najważniejsza jest niezawodność. Chociaż, z konkretnych wdrożeń cp, mvi scporaz wtyczki do przeglądarki plików, operacje te byłyby bardzo szybko, zwłaszcza gdy jest dużo powielania jak oni tylko trzeba przenieść nieobecnych bloków. Przypadkowe użycie konwencjonalnych narzędzi do kopiowania, które nie zintegrują się z FS, zajmie tylko więcej czasu, zmarnuje część przepustowości podczas zdalnego kopiowania i zmarnuje część procesora, ponieważ zduplikowane dane zostaną ponownie odczytane, ponownie przesłane i ponownie zakodowane (chociaż nic nie byłoby przepisane), ale absolutnie niczego nie zepsułoby. (Niektóre oprogramowanie do udostępniania plików może również skorzystać na integracji z FS.)

Jak więc najlepiej to zrobić?

Przejrzałem kilka opcji:

  • lessfs - wygląda na niezatrzymany . Coś dobrego?
  • Opendedup / SDFS - Java? Czy mogę tego użyć na Androidzie ?! Co oznacza skrót SDFS ?
  • Btrfs - Niektóre łatki unoszą się w archiwach list mailingowych, ale nie ma rzeczywistego wsparcia.
  • ZFS - mam nadzieję, że pewnego dnia dokonają ponownej licencji na prawdziwej licencji zgodnej z GPL.

Również 2 lata temu próbowałem użyć Pythona przy użyciu Fuse na poziomie pliku, który mógłby być użyty ponad typowym solidnym FS, takim jak EXT4, ale znalazłem Fuse for Python za słabo udokumentowane i nie udało mi się go wdrożyć wszystkie wywołania systemowe.


Nie jest to system plików, ale warto przyjrzeć się ostatnio wydanemu narzędziu do tworzenia kopii zapasowych Obnam .
JanC

@JanC: Dzięki, zdecydowanie wygląda na to, że oprogramowanie do tworzenia kopii zapasowych zostało zrobione dobrze! Pozwala to uniknąć: „Brak bałaganu przy przyrostowych kopiach zapasowych, w których uszkodzenie którejkolwiek z migawek prawie zawsze spowoduje uszkodzenie wszystkich późniejszych migawek”, „ale nie to:” i nie trzeba używać konkretnego narzędzia do usuwania lub „pobierania” migawka.". Zdecydowanie dobre znalezisko! Mogę być w stanie pracować z niektórymi kodami Pythona. :-)
James Haigh

@JamesHaigh Możesz także opublikować ten pomysł w Ubuntu BrainStorm ; jeśli jeszcze tego nie zrobiłeś.
Samik

@JamesHaigh jedną z rzeczy na mapie drogowej Obnam jest system plików oparty na bezpiecznikach (ale nie sądzę, że istnieje harmonogram pokazujący, kiedy się tego spodziewać). To przybliżyłoby „brak dodatkowego narzędzia”.
JanC

Jeśli chcesz uniknąć uszkodzenia jednej kopii zapasowej niszczącej te ostatnie, po prostu wykonaj wielopokoleniową przyrostową kopię zapasową. Zamiast robić pełne w niedzielę i codziennie różnicę, która jest zawsze względna w stosunku do poprzedniego dnia, na przykład w środę wykonujesz przyrostową kopię zapasową w stosunku do pełnej w niedzielę (a nie we wtorek). Jeśli wtorek jest uszkodzony, nie przejmujesz się tym, ponieważ jeśli masz środkową kopię zapasową, pomijasz poniedziałek i wtorek podczas przywracania.
psusi

Odpowiedzi:


1

Brzmi to bardzo przedsiębiorczo (jak drogo).

datadomain oferuje deduplikację danych i być może netapp ze swoim systemem plików wafl. Ale wysokim kosztem.

„Bezpłatną” alternatywą może być ZFS.

Według mnie jednak „najlepszą” i najbardziej Linuxową alternatywą, choć na poziomie pliku zamiast „poziomu bloku”, byłby rsnapshot. Używa rsync i hardlinks do zarządzania wersjonowaniem.

Raczej ufam starym, sprawdzonym narzędziom niż korzystaniu z nowych systemów plików, takich jak Btrfs, których nie było wystarczająco długo, aby ludzie mogli odkryć wszelkiego rodzaju paskudne błędy.


Przedsiębiorstwo? Nie, jest to raczej coś, czego spodziewałbym się domyślnie w Ubuntu w przyszłości ze względu na łatwość użytkowania. Wspomniałem o ZFS, ale jest to CDDL, więc nie jest wolny z dużą literą F. rsnapshotnie jest systemem plików, jest raczej włamaniem do wprowadzenia funkcjonalności podobnej do migawek do starszych systemów plików, nie tworzy „prawdziwych” migawek (migawki mają być atomowe ) i ma charakter przyrostowy (patrz akapit drugi). Wolę używać stosunkowo nowego FS niż czegoś, co korzysta z przyrostów.
James Haigh

Wydaje mi się, że „poziom pliku” jest trochę niejednoznaczny, ale widziałem termin używany w kontekście systemów plików wraz z poziomem bloków, poziomem bajtów i bitów. To był kontekst, który miałem na myśli.
James Haigh

1
@JamesHaigh Według Free Software Foundation , CDDL jest darmową (jak na wolności) licencją, po prostu nie jest kompatybilna z GPL . Oznacza to, że kod CDDL (podobnie jak oficjalna implementacja ZFS) i kod GPL (podobnie jak jądro Linuksa) nie mogą być legalnie połączone razem , a ponieważ sterowniki w Linuksie są zwykle połączone jako moduły, co utrudnia obsługę CDDL w systemach operacyjnych opartych na Linuksie.
Eliah Kagan

2
ZFS w systemie Linux prawdopodobnie (w zależności od tego, kogo zapytasz) obejdzie ten problem, ponieważ będzie oddzielnie dystrybuowany . Alternatywnie, FUSE pozwala „sterownikom” systemu plików działać w przestrzeni użytkownika, gdzie same nie muszą się łączyć z jądrem, a także istnieje wersja ZFS FUSE . Masz więc wiele opcji korzystania z systemów plików ZFS w systemach operacyjnych takich jak Ubuntu, które używają Linux jako jądra. (Niektóre systemy operacyjne, takie jak Debian, pozwalają używać innego jądra.)
Eliah Kagan

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.