Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 4
  • 48

Czasami wygodnie jest użyć do jakichś backupów strumienia zapisywanego na dysk. Zazwyczaj wtedy używa się też jakiejś kompresji. Np.

nc -l -p 1234 > plik.tar.gz

(a, po drugiej stronie tar cvf - |gzip |nc serwer 1234).

Pojawia się w czymś takim jednak problem, w sytuacji gdy po jakimś dłuższym czasie okaże się, że dysk gdzie to było zapisane miał jakieś błędy, tudzież z jakiegoś innego powodu podczas transmisji lub zapisu pojedyncze bajty zapisały się źle.

Kompresja strumieniowa powoduje wtedy, że cały plik od momentu wystąpienia błędu jest uszkodzony. A prawdopodobieństwo błędu rośnie wraz z wielkością pliku - przy wieloterabajtowych danych - jest już całkiem spore.

Czy jest jakiś mechanizm pozwalający w takiej sytuacji skompresować dane i nawet w przypadku pojedynczych błędów odczytać tyle ile się da? Idealnie jakby dało radę jeszcze dodać do tego nadmiarowość tak, aby np. mieć szansę, że w przypadku uszkodzenia 1% skompresowanego pliku, plik zostanie poprawnie odtworzony.

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 29.01.2016
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 1

Witaj.

Wszystko zależy od tego, gdzie kierujesz zasoby strumieniowe - na jaki wolumen - czyli co jest pod spodem.

Najlepiej w takim wypadku użyć pod spodem systemów macierzowych RAID - dających możliwość pełnej redundancji.

Pozdrawiam.

PatrykKasperkowiak
  • Odpowiedział
  • @ PatrykKasperkowiak | 08.11.2017
    • 0
    • 0
    • 0
Komentarze
gdyby to było takie proste - nie byłoby pytania ;) raid daje pełną redundancję, jednak - przy bardzo dużych "desktopowych" dyskach, tudzież lowendowych kontrolerach nie raz zdarzyło mi się że pojedyńczy odczytany blok po odczycie nie był tożsamy z zapisanym ;). Raid działa tak że odczytuje bloki z jednego z dysków i w sytuacji braku błędu - przekazuje do warstwy wyższej. Sporadycznie zdarza się jednak że coś zostanie odczytane źle ale bez błędu. Stąd wymóg redundancji na warstwie aplikacyjnej.
Skomentował : @ Andrzej_Dopierała ,10.11.2017
  • 83
  • 65
  • 169
Tak tylko dodam jeszcze - dla "blokowych" danych w tych sytuacjach pomaga np par2 - tworzy redundancję dla danych. Jednak nie pomoże on w sytuacji gdy dane lecą wyłącznie strumieniowo i nigdzie poza docelowym dyskiem ich w formie "blokowej" nie ma.
Skomentował : @ Andrzej_Dopierała ,10.11.2017
  • 83
  • 65
  • 169