XFS

XFS
Deweloperzy
Pełne imię i nazwisko XFS
wprowadzony 1994 ; 29 lat temu ( 1994 ) z IRIX 5.3
Identyfikator partycji
0x83: system plików Linux ( główny rekord rozruchowy ) 0FC63DAF-8483-4772-8E79-3D69D8477DE4: system plików Linux ( tabela partycji GUID )
Struktury
Zawartość katalogu Drzewa B+
Alokacja plików Drzewa B+
Granice
Maks. rozmiar woluminu 8 eksbibajtów - 1 bajt
Maks. rozmiar pliku 8 eksbibajtów - 1 bajt
Maks. liczba plików 2 64
Maks. długość nazwy pliku 255 bajtów
Dozwolone znaki w nazwach plików Wszystkie oprócz NULL i „/”
Cechy
Zapisane daty atime, mtime, ctime, wersja 5: crtime
Zakres dat 13 grudnia 1901 - 2 lipca 2486
Rozdzielczość daty 1 ns
Atrybuty Tak
Uprawnienia systemu plików Tak
Przezroczysta kompresja NIE
Przejrzyste szyfrowanie Nie (podawane na poziomie urządzenia blokowego)
Deduplikacja danych Eksperymentalny, tylko Linux
Inny
Obsługiwane systemy operacyjne

XFS to wysokowydajny 64-bitowy system plików z dziennikiem stworzony przez Silicon Graphics, Inc (SGI) w 1993 roku. Był to domyślny system plików w systemie operacyjnym IRIX firmy SGI , począwszy od wersji 5.3. XFS został przeniesiony do jądra Linuksa w 2001 roku; od czerwca 2014 r. XFS jest obsługiwany przez większość dystrybucji Linuksa ; Red Hat Enterprise Linux używa go jako domyślnego systemu plików.

XFS przoduje w wykonywaniu równoległych operacji wejścia/wyjścia (I/O) ze względu na swoją konstrukcję opartą na grupach alokacji (rodzaj podziału woluminów fizycznych, w których używany jest XFS - również w skrócie AG ). Z tego powodu XFS umożliwia ekstremalną skalowalność wątków we/wy, przepustowości systemu plików oraz rozmiaru plików i samego systemu plików, gdy obejmuje wiele fizycznych urządzeń pamięci masowej. XFS zapewnia spójność danych dzięki zastosowaniu kronikowania metadanych i wspieraniu barier zapisu . Alokacja przestrzeni odbywa się za pomocą zakresów ze strukturami danych przechowywanymi w drzewach B+ , poprawiając ogólną wydajność systemu plików, zwłaszcza podczas obsługi dużych plików. Opóźniona alokacja pomaga zapobiegać fragmentacji systemu plików; defragmentacja online jest również obsługiwana. Cechą unikalną dla XFS jest wstępna alokacja przepustowości I/O z określoną szybkością; jest to odpowiednie dla wielu aplikacji czasu rzeczywistego. Jednak ta funkcja była obsługiwana tylko w IRIX i tylko ze specjalistycznym sprzętem.

Historia

Firma Silicon Graphics rozpoczęła prace nad XFS („X” miało zostać wypełnione później, ale nigdy nie zostało wypełnione) w 1993 roku.

System plików został wydany na licencji GNU General Public License (GPL) w maju 2000 roku. Zespół kierowany przez Steve'a Lorda z SGI przeniósł go na Linuksa, a pierwsze wsparcie ze strony dystrybucji Linuksa pojawiło się w 2001 roku. To wsparcie stopniowo stało się dostępne w prawie wszystkich Dystrybucje Linuksa. [ potrzebne źródło ]

Początkowe wsparcie dla XFS w jądrze Linuksa pochodziło z łatek firmy SGI. Połączył się z główną linią jądra Linuksa dla serii 2.6 i osobno połączył się w lutym 2004 z serią 2.4 w wersji 2.4.25, czyniąc XFS prawie powszechnie dostępnym w systemach Linux. Gentoo Linux stał się pierwszą dystrybucją Linuksa , która w połowie 2002 roku wprowadziła opcję XFS jako domyślnego systemu plików.

FreeBSD dodał obsługę XFS tylko do odczytu w grudniu 2005 r., Aw czerwcu 2006 r. Wprowadził eksperymentalną obsługę zapisu. Miało to jednak służyć jedynie jako pomoc w migracji z Linuksa, a nie jako „główny” system plików. FreeBSD 10 usunęło obsługę XFS.

W 2009 roku wersja 5.4 64-bitowej dystrybucji Red Hat Enterprise Linux (RHEL) Linux zawierała niezbędną obsługę jądra do tworzenia i używania systemów plików XFS, ale brakowało jej odpowiednich narzędzi wiersza poleceń. Narzędzia dostępne w CentOS mogły działać w tym celu, a Red Hat udostępniał je również klientom RHEL na żądanie. RHEL 6.0, wydany w 2010 roku, zawiera obsługę XFS za opłatą jako część „dodatku skalowalnego systemu plików” firmy Red Hat. Oracle Linux 6, wydany w 2011 roku, zawiera również opcję korzystania z XFS.

RHEL 7.0, wydany w czerwcu 2014 roku, używa XFS jako domyślnego systemu plików, w tym obsługę XFS dla partycji /boot , co wcześniej nie było praktyczne z powodu błędów w programie ładującym GRUB .

Jądro Linuksa 4.8 w sierpniu 2016 dodało nową funkcję, „odwrotne mapowanie”. Jest to podstawa dla dużego zestawu planowanych funkcji: migawki , kopiowanie danych przy zapisie (COW), deduplikacja danych , kopie odsyłaczy, czyszczenie danych online i metadanych , bardzo dokładne raportowanie utraty danych lub uszkodzonych sektorów oraz znacznie ulepszona rekonstrukcja uszkodzonych lub uszkodzonych systemów plików. Ta praca wymagała zmian w formacie XFS na dysku.

Jądro Linuksa 5.10, wydane w grudniu 2020 r., Wprowadziło „bigtime” do przechowywania znaczników czasu i-węzłów jako 64-bitowy licznik nanosekund zamiast tradycyjnego 32-bitowego licznika sekund. To odkłada poprzedni problem z roku 2038 na rok 2486.

Cechy

Pojemność

XFS jest 64-bitowym systemem plików i obsługuje maksymalny rozmiar systemu plików wynoszący 8 eksbibajtów minus jeden bajt (2 63-1 bajt), ale ograniczenia narzucone przez system operacyjny hosta mogą zmniejszyć ten limit. 32-bitowe systemy Linux ograniczają rozmiar plików i systemu plików do 16 tebibajtów .

Dziennikowanie

We współczesnej informatyce kronikowanie to funkcja, która zapewnia spójność danych w systemie plików, pomimo wszelkich przerw w dostawie prądu lub awarii systemu, które mogą wystąpić. XFS zapewnia kronikowanie metadanych systemu plików, w którym aktualizacje systemu plików są najpierw zapisywane w dzienniku szeregowym przed aktualizacją rzeczywistych bloków dysku. Dziennik jest cyklicznym buforem bloków dyskowych, który nie jest odczytywany podczas normalnego działania systemu plików.

Dziennik XFS może być przechowywany w sekcji danych systemu plików (jako dziennik wewnętrzny) lub na oddzielnym urządzeniu, aby zminimalizować rywalizację o dysk.

W XFS dziennik zawiera przede wszystkim wpisy opisujące części bloków dysku zmienione przez operacje na systemie plików. Aktualizacje dziennika są wykonywane asynchronicznie, aby uniknąć spadku wydajności.

W przypadku awarii systemu operacje systemu plików, które miały miejsce bezpośrednio przed awarią, mogą zostać ponownie zastosowane i zakończone zgodnie z zapisem w dzienniku, dzięki czemu dane przechowywane w systemach plików XFS pozostają spójne. Odzyskiwanie jest wykonywane automatycznie przy pierwszym zamontowaniu systemu plików po awarii. Szybkość odzyskiwania jest niezależna od rozmiaru systemu plików, zamiast tego zależy od liczby operacji systemu plików, które mają zostać ponownie zastosowane.

Grupy alokacji

Systemy plików XFS są wewnętrznie podzielone na grupy alokacji , które są równymi obszarami liniowymi w systemie plików. Pliki i katalogi mogą obejmować grupy alokacji. Każda grupa alokacji oddzielnie zarządza własnymi i -węzłami i wolnym miejscem, zapewniając skalowalność i równoległość, dzięki czemu wiele wątków i procesów może jednocześnie wykonywać operacje we/wy w tym samym systemie plików.

Ta architektura pomaga zoptymalizować wydajność równoległego wejścia/wyjścia w systemach z wieloma procesorami i/lub rdzeniami, ponieważ aktualizacje metadanych również mogą być równoległe. Wewnętrzne partycjonowanie zapewniane przez grupy alokacji może być szczególnie korzystne, gdy system plików obejmuje wiele urządzeń fizycznych, umożliwiając optymalne wykorzystanie przepustowości bazowych komponentów pamięci masowej.

Alokacja w paski

Jeśli system plików XFS ma zostać utworzony na rozłożonej macierzy RAID , podczas tworzenia systemu plików można określić jednostkę rozłożoną . Maksymalizuje to przepustowość, zapewniając, że alokacje danych, alokacje i-węzłów i dziennik wewnętrzny (dziennik) są wyrównane z jednostką paskową.

Alokacja oparta na zakresie

Bloki używane w plikach przechowywanych w systemach plików XFS są zarządzane z zakresami o zmiennej długości , gdzie jeden zakres opisuje jeden lub więcej ciągłych bloków. Może to znacznie skrócić listę bloków w porównaniu z systemami plików, które wyświetlają wszystkie bloki używane przez plik indywidualnie.

Systemy plików zorientowane na bloki zarządzają alokacją miejsca za pomocą jednej lub więcej map bitowych zorientowanych na bloki; w XFS struktury te są zastępowane strukturą zorientowaną na zakres, składającą się z pary drzew B+ dla każdej grupy alokacji systemu plików. Jedno z drzew B+ jest indeksowane przez długość wolnych zakresów, podczas gdy drugie jest indeksowane przez początkowy blok wolnych zakresów. Ten schemat podwójnego indeksowania pozwala na bardzo wydajne przydzielanie wolnych zakresów dla operacji systemu plików.

Zmienne rozmiary bloków

Rozmiar bloku systemu plików reprezentuje minimalną jednostkę alokacji. XFS umożliwia tworzenie systemów plików z blokami o wielkości od 512 bajtów do 64 KB, umożliwiając dostosowanie systemu plików do oczekiwanego stopnia wykorzystania. Gdy oczekuje się wielu małych plików, mały rozmiar bloku zwykle maksymalizuje pojemność, ale w przypadku systemu obsługującego głównie duże pliki większy rozmiar bloku może zapewnić przewagę wydajności.

Opóźniona alokacja

XFS wykorzystuje techniki leniwej oceny do alokacji plików. Gdy plik jest zapisywany w buforze pamięci podręcznej, zamiast przydzielać zakres danych, XFS po prostu rezerwuje odpowiednią liczbę bloków systemu plików dla danych przechowywanych w pamięci. Rzeczywista alokacja bloków ma miejsce dopiero wtedy, gdy dane zostaną ostatecznie zrzucone na dysk. Zwiększa to prawdopodobieństwo, że plik zostanie zapisany w ciągłej grupie bloków, zmniejszając z fragmentacją i zwiększając wydajność.

Rzadkie pliki

XFS zapewnia 64-bitową rzadką przestrzeń adresową dla każdego pliku, co pozwala zarówno na bardzo duże rozmiary plików, jak i na „dziury” w plikach, w których nie jest przydzielone miejsce na dysku. Ponieważ system plików używa mapy zasięgu dla każdego pliku, rozmiar mapy alokacji plików jest niewielki. Gdy rozmiar mapy alokacji jest zbyt duży, aby można ją było przechowywać w i-węźle, mapa jest przenoszona do drzewa B+, które umożliwia szybki dostęp do danych w dowolnym miejscu w 64-bitowej przestrzeni adresowej przewidzianej dla pliku.

Rozszerzone atrybuty

XFS zapewnia wiele strumieni danych dla plików; jest to możliwe dzięki implementacji rozszerzonych atrybutów . Umożliwiają one przechowywanie wielu par nazwa/wartość dołączonych do pliku. Nazwy to zakończone zerem ciągi znaków, które można wydrukować, o długości do 256 bajtów, a powiązane z nimi wartości mogą zawierać do 64 KB danych binarnych.

Są one dalej podzielone na dwie przestrzenie nazw: root i user . Rozszerzone atrybuty przechowywane w głównej przestrzeni nazw mogą być modyfikowane tylko przez superużytkownika, podczas gdy atrybuty w przestrzeni nazw użytkownika mogą być modyfikowane przez dowolnego użytkownika z uprawnieniami do zapisu w pliku.

Rozszerzone atrybuty można dołączyć do dowolnego rodzaju i-węzła XFS, w tym dowiązań symbolicznych, węzłów urządzeń, katalogów itp. Narzędzie attr może być używane do manipulowania rozszerzonymi atrybutami z wiersza poleceń, a narzędzia xfsdump i xfsrestore są świadome rozszerzonych atrybutów, i wykona kopię zapasową oraz przywróci ich zawartość. Większość innych systemów tworzenia kopii zapasowych nie obsługuje pracy z atrybutami rozszerzonymi.

Bezpośrednie wejście/wyjście

W przypadku aplikacji wymagających dużej przepustowości na dysku, XFS zapewnia implementację bezpośredniego wejścia/wyjścia, która umożliwia zastosowanie niebuforowanych operacji wejścia/wyjścia bezpośrednio w przestrzeni użytkownika. Dane są przesyłane między buforem aplikacji a dyskiem za pomocą DMA , co umożliwia dostęp do pełnej przepustowości I/O bazowych urządzeń dyskowych.

We/wy o gwarantowanej szybkości

System we/wy XFS o gwarantowanej szybkości zapewnia interfejs API, który umożliwia aplikacjom zarezerwowanie przepustowości dla systemu plików. XFS dynamicznie oblicza wydajność dostępną z bazowych urządzeń pamięci masowej i rezerwuje przepustowość wystarczającą do spełnienia żądanej wydajności przez określony czas. Jest to funkcja unikalna dla systemu plików XFS. Stawki gwarantowane mogą być „twarde” lub „miękkie”, co stanowi kompromis między niezawodnością a wydajnością; jednak XFS zezwala na „twarde” gwarancje tylko wtedy, gdy obsługuje je bazowy podsystem pamięci masowej. Ta funkcja jest używana głównie w aplikacjach czasu rzeczywistego, takich jak strumieniowe przesyłanie wideo.

We/wy o gwarantowanej szybkości było obsługiwane tylko w systemie IRIX i wymagało specjalnego sprzętu do tego celu.

DMAPI

XFS zaimplementował interfejs DMAPI do obsługi hierarchicznego zarządzania pamięcią masową w IRIX. Od października 2010 r. Implementacja XFS w Linuksie obsługiwała wymagane metadane na dysku do implementacji DMAPI, ale obsługa jądra podobno nie nadawała się do użytku. Przez pewien czas SGI udostępniało drzewo jądra, które zawierało haki DMAPI, ale ta obsługa nie była odpowiednio utrzymywana, chociaż twórcy jądra wyrazili zamiar zaktualizowania tej obsługi.

Migawki

XFS nie zapewnia jeszcze bezpośredniej obsługi migawek, ponieważ obecnie oczekuje, że proces migawki zostanie zaimplementowany przez menedżera woluminów. Wykonanie migawki systemu plików XFS polega na tymczasowym zatrzymaniu operacji we/wy w systemie plików za pomocą xfs_freeze , wykonaniu rzeczywistej migawki przez menedżera woluminów, a następnie wznowieniu operacji we/wy w celu kontynuowania normalnych operacji. Migawkę można następnie zamontować w trybie tylko do odczytu w celu wykonania kopii zapasowej.

Wersje XFS w IRIX zawierały zintegrowanego menedżera woluminów o nazwie XLV. Ten menedżer woluminów nie został przeniesiony do systemu Linux, a zamiast tego XFS działa ze standardowym LVM w systemach Linux.

W najnowszych jądrach Linuksa funkcja xfs_freeze jest zaimplementowana w warstwie VFS i jest wykonywana automatycznie po wywołaniu funkcji migawki menedżera woluminów. Kiedyś było to cenną zaletą, ponieważ ext3 nie mógł zostać zawieszony, a menedżer woluminów nie był w stanie utworzyć spójnej „gorącej” migawki w celu utworzenia kopii zapasowej mocno obciążonej bazy danych. Na szczęście już tak nie jest. Od Linuksa 2.6.29 systemy plików ext3, ext4 , GFS2 i JFS mają również funkcję zamrażania.

Defragmentacja w Internecie

do defragmentacji systemu plików (xfs_fsr, skrót od reorganizatora systemu plików XFS), które może defragmentować pliki na zamontowanym i aktywnym dysku. System plików XFS.

Wzrost w Internecie

XFS udostępnia narzędzie xfs_growfs do rozszerzania online systemów plików XFS. Systemy plików XFS można rozwijać, o ile na urządzeniu przechowującym system plików pozostaje nieprzydzielone miejsce. Ta funkcja jest zwykle używana w połączeniu z zarządzaniem woluminami, ponieważ w przeciwnym razie partycja zawierająca system plików będzie wymagała osobnego powiększenia.

Niedogodności

  • Systemów plików XFS nie można (od lipca 2022 r.) Zmniejszyć w miejscu, chociaż omówiono kilka możliwych obejść.
  • Operacje na metadanych w XFS były wolniejsze w porównaniu z systemami plików z kronikowaniem wdrożonymi później i zaprojektowanymi do pracy ze znacznie większymi dziennikami, co skutkowało na przykład mniejszą wydajnością operacji takich jak usuwanie dużej liczby plików. Jednak mówi się, że nowa funkcja XFS zaimplementowana przez Johna Nelsona i zwana opóźnionym logowaniem , dostępna od wersji 2.6.39 głównej linii jądra Linuksa, ma rozwiązać ten problem; testy porównawcze wydajności wykonane przez programistę w 2010 roku wykazały, że poziomy wydajności są podobne do ext4 przy małej liczbie wątków i lepsze przy dużej liczbie wątków.
  • Dziennikowania nie można wyłączyć. Jednak XFS może zamiast tego zapisywać do zewnętrznego dziennika na oddzielnym urządzeniu blokowym.

Zobacz też

Dalsza lektura

Linki zewnętrzne