NILFS dla Linuksa
Wśród nowości w nadchodzącym jądrze 2.6.30 znajdziemy m.in.ciekawy system plików o nazwie NILFS w wersji 2. NILFS2 (New Implementation of a Log-Structured File System Version2) jest systemem plików działającym na zasadzie dziennika. Jesttworzony przez firmę NTT i dostępny na licencji GPL2. Oferuje tzw.checkpointy oraz wersjonowanie całego systemu plików. Dzięki temułatwo odzyskać skasowane pliki albo przywrócić poprzednią wersjępliku. Także tworzenie kopii zapasowych jest bardzo proste iwydajne. Inna zaleta to bardzo dobra praca z dyskami SSD. Rozmiarplików oraz numery i-węzłów zapisywane są za pomocą 64-bitowychliczb. Pliki mogą osiągać rozmiar 8 eksbibajtów (8 EiB). Rozmiar bloku jest dosyćmały (1-2 kB) co przyspiesza operacje na małych plikach. Dokontroli spójności danych i metadanych wykorzystywane są sumyCRC32. Dzięki mechanizmowi odczytu z wyprzedzeniem osiąga sięwzrost wydajności. W przeciwieństwie do wielu popularnych systemów plików, NILFS2wykorzystuje ciągły strumień danych. Wszystkie informacjedopisywane są na końcu, podobnie jak w pliku dziennika (logach).Stąd określenie "log-stuctured". W tego typu systemach plikówbardzo łatwo stworzyć snapshot, który w NILFS tworzony jest zcheckpointu. Taki snapshot można potem zamontować i przeglądaćsystem plików widząc go tak, jak wyglądał w przeszłości. Dziękitemu otrzymuje się łatwy dostęp do skasowanych plików lub ichstarych wersji. Duża jest też odporność na błędy. W przypadkuwystąpienia problemu sterownik zaczyna czytać log od końca icofając się szuka ostatniego miejsca w którym dane były spójne.Wygląda więc to odwrotnie w stosunku do klasycznego journalingu, wktórym zmiany analizowane są chronologicznie. Proces ten jestbardzo szybki, niezależnie od wielkości systemu plików. Wadą NILFS jest skomplikowany sposób odzyskiwania wolnego miejsca wmomencie zapełnienia dysku przez log. W tym momencie bowiemwłaściwe dane nie zajmują całej przestrzeni gdyż reszta jestzapełniona przez skasowane pliki oraz stare wersje plików. NILFSmusi więc używając odpowiedniego algorytmu nadpisać najstarszecheckpointy.