NILFS2 – kuloodporny system plików dla /home

NILFS2 – kuloodporny system plików dla /home

Jak wiadomo, jeśli kłopoty mogą się zdarzyć, na pewno się pojawią. Prawdopodobnie każdy miał przypadki, gdy ostatnio ważny plik został przypadkowo usunięty lub tekst został przypadkowo zaznaczony i zniszczony w edytorze tekstu.

Jeśli jesteś gospodarzem lub właścicielem witryny, prawdopodobnie spotkałeś się z włamaniem na konta użytkowników lub na swoją witrynę. W takich przypadkach ważne jest przywrócenie chronologii, znalezienie metody wejścia i luki wykorzystanej przez atakującego.

System plików NILFS2 jest idealny do rozwiązywania takich problemów.

Jest obecny w jądrze Linuksa od wersji 2.6.30.

Specyfiką tego systemu plików jest to, że jest podobny do systemu kontroli wersji: zawsze możesz przywrócić stan systemu i sprawdzić, jak wyglądał jakiś czas temu.

Aby zapewnić tę funkcjonalność, nie musisz konfigurować skryptów Cron, robić migawek itp. System plików NILFS2 robi to wszystko sam. Nigdy nie nadpisuje starych danych i zawsze zapisuje w nowych obszarach dysku, jeśli jest wystarczająca ilość wolnego miejsca. W pełnej zgodzie z zasadą „kopiuj przy zapisie”.

W rzeczywistości każda zmiana w pliku automatycznie tworzy nową migawkę systemu plików, więc możesz używać tego FS jako wehikułu czasu i przewijać stan plików.

Historia

NILFS2 – kuloodporny system plików dla /homeNILFS2 został opracowany w głębinach Korporacja Telegrafu i Telefonu Nipponde facto państwowa (posiada pakiet kontrolny) i największa firma telekomunikacyjna w Japonii. Dokładniej w Laboratoriach CyberSpace pod kierownictwem Ryusuke Konishi.

Nie wiadomo, do czego dokładnie został stworzony, można jednak założyć, że taki FS, dzięki funkcjonalności „wehikułu czasu”, idealnie nadaje się do przechowywania danych, do których służby wywiadowcze mogłyby chcieć się dokopać, aby odtworzyć cały obraz sytuacji. SMS-y, e-maile itp....

NILFS2 jest również potencjalnie bardzo cennym narzędziem dla wewnętrznych służb bezpieczeństwa, ponieważ pozwala odzyskać wszystkie usunięte listy w bazie danych poczty, ujawniając ościeże pracowników, którzy później mogą próbować je zamaskować, usuwając lub zmieniając swoje pliki.

Jak prześledzić całą historię korespondencji?Na serwerach Linux (i to tam należy zainstalować NILFS2 ze względów bezpieczeństwa wewnętrznego) bardzo często do przechowywania wiadomości e-mail używana jest metoda plikowa. Tak zwany format Katalog poczty. Wystarczy umieścić Serwer poczty kurierskiej i skonfiguruj przechowywanie poczty w Maildir. Inny format mbox to duży plik tekstowy, który można łatwo podzielić na pojedyncze wiadomości.

Jeśli serwer pocztowy korzysta z bazy danych, NILFS2 umożliwi przywrócenie dokładnego czasu zmian w bazie danych oraz możliwość przywrócenia bazy danych w dowolnym z tych momentów. A następnie musisz użyć narzędzi bazodanowych, aby zobaczyć, co było w tym momencie...

Jednak coś poszło nie tak. Albo japoński rząd zmienił zdanie na temat monitorowania wszystkich (a la zasada Yarovaya), albo wydajność NILFS2 na tradycyjnych dyskach twardych okazała się poniżej normy i NILFS2 został wydany na licencji GPL i bardzo szybko wszedł do jądra Linuksa, ponieważ nie było żadnych szczególnych skarg na kod napisany przez wysoko wykwalifikowanych japońskich, twórcy jądra Linuksa go nie mieli.

Jaki jest NILFS2?

Z punktu widzenia użytkowania: w systemie kontroli wersji SVN. Każdy punkt kontrolny FS to zatwierdzenie dokonywane automatycznie bez wiedzy użytkownika za każdym razem, gdy nastąpi jakakolwiek zmiana: czy to usunięcie, zmiana zawartości pliku czy zmiana praw dostępu. Każde zatwierdzenie ma liczbę, która rośnie liniowo.

Z punktu widzenia programisty: bufor kołowy. System plików gromadzi zmiany i zapisuje je w porcji o wielkości około 8 MB (2000 * 4096, gdzie 2000 to liczba elementów w bloku, a 4096 to rozmiar strony pamięci). Cały dysk jest podzielony na takie kawałki. Nagrywanie przebiega sekwencyjnie. Kiedy skończy się wolne miejsce, najstarsze migawki zostaną usunięte, a fragmenty zastąpione.

Podstawowe gadżety NILFS2

  • Wersjonowanie!!!
  • Procedura przywracania systemu plików po awarii jest prosta: podczas ładowania wyszukiwany jest ostatni fragment posiadający poprawną sumę kontrolną i instalowany jest na nim superblok. Jest to operacja niemal natychmiastowa.
  • Z uwagi na to, że rejestracja zawsze przebiega liniowo, wówczas:
    • może wykazywać dobre wyniki podczas pracy na dysku SSD z wolnymi losowymi zapisami.
    • NILFS2 oszczędza zasoby SSD, ponieważ prawie nie ma współczynnika mnożenia zapisu.
      Dokładniej, nie jest to więcej niż 2.Faktem jest, że podczas cyklicznego przepisywania całego dysku NILFS2 przeniesie niezmienne dane na nowe fragmenty (porcje).

      Jeśli na dysku mamy 10% niezmiennych danych, to przy 10 pełnym zapisie uzyskamy 1% wzrost zapisu. Cóż, 50% wzrost przy 50% zapełnieniu urządzenia przy 1 pełnym przepisaniu dysku.

      Maksymalne wzmocnienie zapisu wynosi 2. Jest to bardzo niskie, biorąc pod uwagę, że wszystko jest zapisywane sekwencyjnie. Ogólnie rzecz biorąc, animacja zapisu będzie krótsza niż w konwencjonalnym pofragmentowanym systemie plików z sektorem o wielkości 4096 bajtów. (Myśl inspirowana komentarz).

  • Potencjalna łatwość wdrożenia replikacji do zdalnego systemu NILFS2 FS

NILFS2 dla /home

W systemach operacyjnych typu Unix z reguły istnieje folder /home, w którym przechowywane są dane użytkownika. Różne programy zapisują w tym folderze swoje ustawienia specyficzne dla użytkownika.

A kto, jeśli nie użytkownicy, popełnia błędy najczęściej? Dlatego, jak mówią, sam Bóg nakazał użycie NILFS2 na /home.

Co więcej, dzięki powszechnemu stosowaniu dysków SSD nie musimy się już martwić poważnymi stratami podczas korzystania z systemów plików CoW.

Tak, możemy tworzyć migawki FS tak często, jak chcemy w ZFS i BTRFS, ale zawsze istnieje ryzyko, że utracona zmiana pliku zakończy się pomiędzy migawkami. A zdjęciami nadal trzeba zarządzać: stare trzeba usunąć. W NILFS2 wszystko to dzieje się automatycznie, dosłownie co kilka sekund.

Utworzyłem wolumin logiczny za pomocą lvcreate (w grupie woluminów nvme, Thin Pool Thin). Zalecam utworzenie go na woluminie lvm, ponieważ można go później łatwo rozszerzyć. Zalecam posiadanie 50% wolnego miejsca na dysku w NILFS2, aby uzyskać przyzwoitą głębokość wersji.

lvcreate -V10G -T nvme/thin -n home

i sformatowałem go w NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Następnie musisz skopiować wszystkie dane z bieżącego katalogu /home.

Zrobiłem to od razu po uruchomieniu komputera, przed zalogowaniem się na swoje konto, jako użytkownik root. Gdybym miał się zalogować jako mój użytkownik, niektóre programy otworzyłyby gniazda i pliki w folderze /home/user mojego użytkownika, co utrudniłoby czystą kopię. Jak wiadomo, folder domowy użytkownika root zwykle znajduje się w ścieżce /root, więc na partycji /home nie będą otwierane żadne pliki.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Aby zapoznać się z ostatnią linijką, zobacz статью.

Następnie edytujemy plik /etc/fstab, w którym zamontowany jest system plików dla /home

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

Opcja noatime potrzebne do poprawy wydajności, aby czas nie zmieniał się przy każdym dostępie do pliku. Następnie uruchamiamy ponownie.

Rodzaje obrazów w NILFS2.

Zwykły migawkę nieodporną na usunięcie nazywa się punktem kontrolnym lub punktem przywracania.
Migawka zabezpieczona przed automatycznym usunięciem nazywana jest migawką, a następnie po prostu migawką.

Przeglądanie punktów kontrolnych odbywa się za pomocą polecenia lscp

Wyświetl migawki lscp -s

W dowolnym momencie możemy samodzielnie tworzyć migawki i punkty kontrolne, korzystając z:

mkcp [-s] устройство

Przywracamy dane.

NILFS pozwala nam montować dowolną liczbę starych migawek równolegle z pracą z główną gałęzią FS. Ale tylko w trybie odczytu.

Wszystko jest ułożone w ten sposób. Regularne punkty kontrolne tworzone przez NILFS2 mogą zostać automatycznie usunięte w dowolnym momencie (kiedy skończy się miejsce na dysku lub zgodnie z zasadami nilfs_cleanerd), dlatego przed instalacją musimy przekonwertować punkt kontrolny na migawkę lub, w języku rosyjskim, przechwycić migawkę.

chcp ss номер_чекпоинта

Następnie możemy zamontować migawkę, na przykład w ten sposób:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

Następnie kopiujemy przywrócone pliki z migawki do /home.
Następnie usuwamy flagę nieusuwalną z migawki, aby w przyszłości automatyczny moduł zbierający elementy bezużyteczne mógł usunąć nieaktualne dane:

chcp cp номер_чекпоинта

Narzędzia dla NILFS2

Ale to jest problem. Tak, oczywiście, możemy stworzyć system plików, zmienić jego rozmiar online, przeglądać listę challengepointów, tworzyć je i usuwać. Pakiet nilfs2-utils zapewnia minimalny zestaw dla dżentelmenów.

Ponieważ NTT ograniczyło swoje finansowanie, nie ma szybkich narzędzi niskiego poziomu, które pozwalałyby na wyświetlanie historii zmian w plikach lub dokonywanie różnic między migawkami.

Moje narzędzie n2u

Aby wypełnić tę próżnię, napisałem Twoje narzędzie n2u, który może wyświetlić historię zmian w konkretnym pliku/katalogu:

n2u log filename

Wyjście jest mniej więcej takie:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

Działa dość szybko dla wybranej metody implementacji: wyszukuje różnice pomiędzy plikami metodą bisekcji, szybko montuje i porównuje plik/katalog w różnych migawkach.

Za pomocą klawisza możesz ustawić zakres punktów kontrolnych -cp CP1:CP2 lub -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Możesz także zobaczyć różnicę pomiędzy punktami kontrolnymi dla konkretnego pliku lub katalogu:

n2u diff -r cp1:cp2 filename

Możesz wyświetlić całą chronologię zmian: wszystkie różnice pomiędzy punktami kontrolnymi konkretnego pliku/katalogu:

n2u blame [-r cp1:cp2] filename

Obsługiwany jest także interwał dat w tym poleceniu.

Krzyk do twórców

Na Habré jest wielu specjalistów. Proszę dokończ NILFS2. Wykonuj replikacje, szybkie różnice między wersjami na niskim poziomie, linki zwrotne i inne gadżety!

referencje

Oficjalna strona NILFS.

Repozytoria:
NILFS2.
Narzędzia i moduły NILFS2.

Biuletyny:
Biuletyn e-mailowy dla programistów NILFS2. Identyfikator subskrypcji Linux-Nilfs.
Archiwum biuletynów.

przewodnik konfiguracji nilfs_cleanerd.
Testy porównawcze EXT4, Btrfs, XFS i NILFS2.

Podziękowanie:

  • Twórcy NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi i Satoshi Moriai. Inni główni współautorzy to: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Amblin Entertainment i Universal Pictures za wspaniałą serię filmów. "Powrót do przyszłości". Pierwsze zdjęcie w poście pochodzi z filmu „Powrót do przyszłości 3”.
  • Firmy RUVDS za wsparcie i możliwość publikacji na swoim blogu w serwisie Habré.

PS Wszelkie zauważone błędy proszę przesyłać w wiadomości prywatnej. Zwiększam za to swoją karmę.

Możesz eksperymentować z NILFS2, zamawiając maszynę wirtualną RUVDS z kuponem poniżej. Dla wszystkich nowych klientów dostępny jest bezpłatny okres próbny wynoszący 3 dni.

NILFS2 – kuloodporny system plików dla /home

Źródło: www.habr.com

Dodaj komentarz