Zamieszanie na metadanych | Nazwane widelce | Rozszerzone atrybuty | Widelec zasobów - HFS +

10

Myślę, że istnieje pewne ogólne zamieszanie w związku między wszystkimi czterema tymi elementami rozproszonymi w sieci. Chciałem to wyjaśnić.

  1. Czy nazwane widelce są takie same jak atrybuty rozszerzone ? Jeśli nie, jakie są rozszerzone atrybuty?
  2. Czy rozwidlenie zasobów jest nadal implementowane jako rozwidlenie lub jako atrybut rozszerzony ? Jeśli jest realizowany w inny sposób, to jak?
  3. Metadane zapisane w pliku (twórca, daty modyfikacji ...) czy jest jakiś związek lub nakładanie w terminologii pomiędzy pozostałe trzy wymienione. Przykładem mogą być rozszerzone atrybuty tylko dodatkowe pary metadanych (klucz + wartość) przechowywane w pliku.

Wszelkie odpowiedzi, które mogą wyjaśnić, w jaki sposób wszystkie cztery są ze sobą powiązane, szczególnie w odniesieniu do trzech pytań, byłyby bardzo mile widziane i przyczyniłyby się do rozstrzygania sporów, które, jak widzę, dotyczą różnych zasobów.

rubiksibuc
źródło
Aby dowiedzieć się więcej o HFS Plus : instrukcja i instrukcja obsługi fileXray (PDF, 1,8 MB, 173 strony) jest bardzo przydatna. Jestem użytkownikiem fileXray . Również: Uwaga techniczna TN1150: Format woluminu HFS Plus jest starszą wersją , wycofaną przez Apple, ale nadal przydatną do wielu celów.
Graham Perrin,

Odpowiedzi:

5

Zamieszanie wynika z faktu, że związek między tymi pojęciami jest złożony i zmieniał się z czasem. W obecnych systemach różnica między nazwanym widelcem a rozszerzonym atrybutem ma w dużej mierze charakter akademicki.

W przypadku atrybutu rozszerzonego rzeczywiste dane są przechowywane w rekordzie danych atrybutu.

W przypadku rozwidlenia przechowywana jest lista bloków alokacji dysku zawierających dane. Widelec zasobów jest nadal widelcem.

Podstawowe metadane systemu plików są przechowywane w dedykowanych elementach samego rekordu systemu plików, niezależnie od atrybutów i nazwanych odwołań do rozwidleń.

GregW
źródło
1
Ale czy rozszerzony atrybut faktycznie jest przechowywany jako własny rozwidlenie, czy też istnieje rozwidlenie dla rozszerzonych atrybutów? Jak to się ma do najnowszej wersji OSX?
rubixibuc
1
Nie rozumiem, kiedy mówisz, że atrybut ma na myśli „atrybut rozszerzony”. Jeśli tak, gdzie jest przechowywany rekord atrybutu. Czy jest przechowywany jako część struktury systemu plików HFS + czy jest przechowywany w jakiejś bazie danych? W miarę możliwości odpowiedz również na pierwszy komentarz.
rubixibuc
2
Przepraszam. Nie jestem tu często i nie widziałem twoich dalszych pytań, dopóki nie przyszedłem tutaj w poszukiwaniu czegoś innego. Rozszerzonym atrybutem jest nazwany widelec. Użyłem atrybutu jako skrótu dla „atrybutu rozszerzonego”. Rekordy atrybutów są przechowywane w prywatnej części systemu plików zwanej drzewem atrybutów. Możesz uznać to za formę bazy danych. Te dane dla każdego atrybutu może lub nie może być w tym drzewie w zależności od tego, jak duży jest.
GregW
„... system plików metadanych jest przechowywana w specjalnych elementów systemu plików rekordu ...” - zamiast, prawdopodobnie powiedzieć „... plik metadanych jest przechowywana w specjalnych elementów rekordu do pliku ...”
Graham Perrin
Może nic nie warte, że chociaż com.apple.FinderInfomoże pojawić się jako rozszerzonego atrybutu rozszerzonego Finder Info (zwykle date_added, extended_flagsplus trzy zarezerwowanych pól) to nie rozszerzony atrybut.
Graham Perrin,
2

Nie jestem ekspertem w tej dziedzinie, ale przeczytałem trochę, aby zrozumieć, co się dzieje.

Powiedziałbym, że „zamieszanie wynika z faktu, że:

  • związek między tymi pojęciami jest złożony i
  • zmieniło się z czasem i
  • Apple wdrożyło zarówno interfejsy API na poziomie programu, jak i narzędzia, takie jak ls lub cp, aby ukryć wiele różnic między koncepcjami ”.

AIUI, plik katalogu HFS + zawiera rekordy plików katalogu (między innymi). Rekord pliku katalogu zawiera normalne informacje na temat pliku, takie jak data utworzenia, data dostępu itp. Rekord pliku katalogu zawiera także dwie struktury, które podają informacje o lokalizacji i rozmiarze rozwidlenia danych i rozwidlenia zasobów.

AIUI, HFS + ma również (skopiowany z Wikipedii HFS +) „Plik atrybutów [który] jest nowym drzewkiem B w HFS Plus, które nie ma odpowiedniej struktury w HFS. Plik atrybutów może przechowywać trzy różne typy rekordów o wielkości 4 KB: Rekordy Atline Data Atrybut, rekordy Atrybut Danych Widelca i rekordy Atrybut Rozszerzeń. Rekordy Inline Atrybut Danych przechowują małe atrybuty, które mogą zmieścić się w samym rekordzie. Rekordy Atrybut Danych Widelca zawierają odniesienia do maksymalnie ośmiu zakresów, które mogą zawierać większe atrybuty. używane do rozszerzenia rekordu atrybutu danych widelca, gdy jego osiem rekordów zasięgu jest już używanych. ”

AIUI, dane przechowywane w pliku atrybutów (lub do których się odwołuje) (atrybuty wbudowane, dane widelca lub atrybuty rozszerzenia) są znane jako atrybuty rozszerzone.

To są struktury danych, więc jak je wykorzystać?

AIUI, wczesne wersje systemu operacyjnego (być może wersje wcześniejsze niż 10.4 Tiger, które, jak sugeruje John Siracusa , miały pewne poważne zmiany w tym obszarze), wskazywały na rozwidlenie danych i rozwidlenie zasobów z pliku katalogu.

AIUI, kiedy przejdziemy do 10.4 Tygrysa, plik atrybutów staje się szeroko stosowany do przechowywania wszelkiego rodzaju danych.

Możliwe (ale nie wiem), że w wersji 10.4 i późniejszych wszelkie Widelce zasobów są wskazane w pliku atrybutów. To znaczy w odpowiedzi na twoje pierwsze pytanie, powiedziałbym, że nazwane widelce są Rozszerzonymi Atrybutami, chyba że są Widelcem Zasobów, a Widelec Zasobów jest przywoływany z pliku Katalogu.

Problem ze znajomością sposobu implementacji polega na tym, że w celu zachowania kompatybilności wstecznej, a prawdopodobnie szczególnie w celu wsparcia dostępu do systemów plików zapisanych przez jedną wersję systemu Mac OS z innej wersji, różne rzeczy i mieszanki rzeczy muszą być obsługiwane w sposób przejrzysty.

Nie możemy stwierdzić na podstawie zwykłych narzędzi wiersza poleceń terminalu, gdzie faktycznie przechowywane są dane.

Dostęp do rsrcmoże sugerować, że dostęp do Widelca zasobów w pliku katalogu jest dostępny.

$ ls -l Icon^M/rsrc
-rwxr-xr-x  1 root  admin  486 23 Jul  2004 Icon?/rsrc

Wiemy jednak, że chociaż składnia wygląda na dostęp do pliku poniżej Icon^Mkatalogu, tak nie jest, ponieważ

$ ls -lR Icon^M
-rwxr-xr-x@ 1 root  admin  0 23 Jul  2004 Icon?

więc Apple wdrożyło specjalny przypadek dla widełek zasobów.

Jeśli zamiast tego zrobimy

$ ls -l@
-rwxr-xr-x@ 1 root  admin   0 23 Jul  2004 Icon?
    com.apple.FinderInfo    32 
    com.apple.ResourceFork  486 

Sugeruje to, że uzyskujemy dostęp do pliku atrybutów. Ale znowu wdrożenie lsmoże mieć szczególny przypadek dla widełek zasobów.

John Siracusa wskazuje tutaj, że listy ACL są przechowywane jako „Rozszerzone atrybuty”, ale są specjalnie maskowane, aby nie były wyświetlane xattr. Więc znowu jest specjalne przetwarzanie przypadków w implementacji xattr.

(Pamiętaj, że to przetwarzanie specjalnych przypadków może znajdować się w kodzie narzędzia lub w kodzie podstawowych interfejsów API, do których narzędzia mają dostęp).

GregW, jeśli to zobaczysz, fajnie byłoby uzyskać bardziej ekspercką opinię, czy jestem na dobrej drodze, czy po prostu beznadziejnie zdezorientowany.

Tim
źródło
Istnieje również dyskusja tutaj , ale nie sądzę, że „jonsview” jest bardzo pomocne.
Tim