Nowa wersja NTFS-3G – zalecana aktualizacja

Szabolcs Szakacsits powiadomił o wydaniu nowej wersji NTFS-3G – poprawiono w niej błąd, który mógł powodować utratę danych. Błąd na razie nie wydaje się być bardzo groźny (o ile można tak powiedzieć o błędzie w systemie plików), ale problemy przy jego debugowaniu były bardzo ciekawe.

Do niedawna FUSE miało ograniczony rozmiar zapisywanego bloku do 4KB, również typowej wielkości klaster NTFS ma rozmiar 4KB. To oznacza, że wszystkie operacje zapisu kończą się na alokacji nowego, pojedynczego klastra. Jednak uszkodzenie danych może się zdarzyć w rzadkich przypadkach podczas alokacji wielo-klastrowej.

Alokator klastrów, który decyduje gdzie znajdą się na dysku dane, jest również używany do rozmieszczania metadanych NTFS. Jeden przypadek używa alokacji pojedynczych klastrów, a inny nie. To może prowadzić do zepsucia danych jeśli wszystkie z poniższych warunków są prawdziwe:

  • ostatni używany klaster MFT nie był “wyrównany”
  • wolne miejsce było tylko na końcu grupy alokacji klastrów (CAG – cluster allocation group)
  • było wymagane więcej wolnego miejsca niż było na końcu CAG
  • niewłaściwie odczytana pamięć miała “nieszczęśliwe” wartości

Kolejnym czynnikiem zależnym od szczęścia było to, żeby metadane wymagające wielo-klastrowej alokacji używały innej, zarezerwowanej dla siebie strefy alokacji – w przeciwieństwie do wszystkiego innego, więc to nie wpływało na inne operacje alokacji… dopóki partycja nie zapełniła się prawie do końca.

To jeszcze nie wszystko. Był kolejny czynnik zależący od szczęścia, który normalnie zapobiegał tej sytuacji. Chodzi o pewien brak w funkcjonalności, który w niektórych przypadkach zupełnie blokował wielo-klastrowe alokacje metadanych.

Woluminy NTFS używające mniejszych niż 4KB klastry (512, 1024, 2048) są bardziej narażone. Najwyższe ryzyko jest związane z partycjami korzystającymi z 512 bajtowych klastrów.

Na nasze szczęście znaleźliśmy ten błąd w ostatniej chwili. Następna stabilna wersja jądra Linux 2.6.26 może używać bloków większych niż 4KB, czego skutkiem byłyby losowe uszkodzenia NTFS na dużą skalę.

Na szczęście Miklos Szeredi natychmiast zasugerował i zgodził się zaimplementować opcjonalną (domyślnie wyłączoną) obsługę większych bloków w FUSE. To oznacza, że aktualizacja jądra nie może spowodować uszkodzenia danych na NTFS, tylko jeśli NTFS-3G nie został zaktualizowany do wersji 1.2506.

Obsługa dużych bloków zostanie włączona w NTFS-3G, gdy przejdzie wszystkie nasze testy.

Chyba mamy dzisiaj kolejną rzecz, którą warto zaktualizować. 🙂

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar vampire
    vampire

    Cos dzisiaj masz szczescie do newsow zwiazanych z obsluga systemow plikow 😉

  2. Awatar lukas
    lukas

    A co na to twórca sterownika? Ponoć kiedyś sam się prosił z uśmiechem na twarzy, żeby ludzie spróbowali znaleźć w nim dziury ; ) No to ma ;D

    1. Awatar optimizationkit
      optimizationkit

      To właśnie on o tym powiadomił 🙂

  3. Awatar Kordian
    Kordian

    kiedy ntfs-3g trafi do jajka?

    1. Awatar optimizationkit
      optimizationkit

      Obsługa systemu plików NTFS przez NTFS-3G jest zrealizowana za pomocą FUSE – systemu plików w przestrzeni użytkownika. Dzięki temu nie musi być w jądrze systemu (i nigdy tam nie trafi).

      1. Awatar Kordian
        Kordian

        ale hujowo, czyli za każdym razem musze doinstalowywać ten chłam?

        1. Awatar Olaf
          Olaf

          1. Po pierwsze nie "hujowo" tylko przez "ch" się pisze. Jeżeli musisz uzywać wulgaryzmów na forum publicznym to chociaż zapoznaj się z poprawną pisownią.

          2. Co musisz doinstalowywać? Jeżeli twoja dystrybucja będzie to dołączała to będziesz to miał bez żadnego doinstalowywania. Bash nie jest w kernelu – czy musisz go doinstalowywać?

          3. Nie musisz. Jeżeli dla ciebie to chłam, to po co to instalujesz ;P

  4. Awatar indy
    indy

    jesli ntfa-3g to to samo co mam w kubuntu to musze przyznac, ze dziala to baaaaaardzo wolno, nie tylko sam zapis, ale i caly systtem tragicznie mi zwalnia co doprowadza mnie do wscieklosci

    1. Awatar Michał
      Michał

      A u mnie działa pięknie. Może zrób defragmentację dysków ntfs pod Windowsem, hm? I do tego jeszcze
      chkdsk -f
      w cmd pod Windą.

    2. Awatar Magnes
      Magnes

      Dawno nie używałem ntfs-3g, ale jak kiedyś testowałem, to było bardzo szybkie, chyba lepiej niż fat32 działało.

  5. Awatar Michał
    Michał

    Zrobiłem paczkę dla debiana, bo chyba jeszcze nie ma w repo. Chce ktoś? 😛

  6. Awatar lukas
    lukas

    To właśnie on o tym powiadomił

    Wiem i spodziewałem się tutaj takiej odpowiedzi ; ) Ale i tak jest dobrze. To pierwsze info. o błędzie w tym sterowniku, które czytam w polskiej sieci.

  7. Awatar jk
    jk

    to ms wprowadzi teraz zupełnie inny fs

    1. Awatar dave
      dave

      M$ pracuje nad WinFS od dwoch lat… W Windows7 na pewno bedzie zaimplementowany 🙁

      1. Awatar trasz
        trasz

        A w Linuksie nadal sladu po planowanej funkcjonalnosci WinFS nie ma. Nawet w zapowiedziach czy planach.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *