Czy metadane nie zajmują żadnego rozmiaru?

51

Umieszczam 4096 znaków w pliku tekstowym i zapisuję go. Ponieważ każdy znak ma 1 bajt, rozmiar pliku tekstowego musi wynosić 4K bajtów. Jak widać poniżej, to w porządku:

wprowadź opis zdjęcia tutaj

Podłączam pamięć flash do komputera. wolne miejsce w pamięci flash to 1,717,518,336bajty :

wprowadź opis zdjęcia tutaj

Utworzyłem kopię pliku w mojej pamięci flash. I jeszcze raz spójrz na wolne miejsce. ma 1,717,514,240bajty wolnego miejsca:

wprowadź opis zdjęcia tutaj

Zobaczmy, jaka jest różnica:

1 717 518 336 - 1 717 514,240 =4096 bajty


Moje pytanie :

P1:

Jak widać na ostatnim zdjęciu powyżej, jedyną przestrzenią zajmowaną przez plik we Flashu jest przestrzeń dla jego zawartości [znaków]. Więc gdzie jest plik metadanych?

Mam na myśli, kiedy przenoszę plik na inny komputer, w jaki sposób rozumie nazwę pliku, właściciela pliku, datę utworzenia i modyfikacji i ...?

Czy to nie zajmuje żadnego rozmiaru? !!

Q2:

Czy mogę zobaczyć plik metadanych w pamięci flash?

wprowadź opis zdjęcia tutaj

Doceń swój czas i uwagę.

TheGoodUser
źródło
10
metadane byłyby zawarte w samym systemie plików. który nie jest częścią rozmiaru pliku zgłaszanego przez system Windows. Ponadto metadane FAT32 i NTFS byłyby inne.
Ramhound
@Ramhound, kiedy przenoszę plik tekstowy do pamięci flash, jego plik metadanych również przenosi się do pamięci flash, prawda? jak to widzę?
TheGoodUser
1
Oprócz zrozumienia wewnętrznych elementów systemu operacyjnego (samo w sobie warte), prawdopodobnie nie ma powodu, aby przeglądać lub modyfikować takie informacje, chyba że piszesz program do naprawy / odzyskiwania dysku. Podczas normalnego użytkowania nigdy nie chciałbyś zmieniać informacji na tym poziomie, ponieważ może to łatwo podważyć integralność samego systemu plików i wszystkiego, co go używa.
Joe
3
Krótka odpowiedź: zajmuje miejsce, ale nie jest wliczane do rozmiaru pliku.
user253751,

Odpowiedzi:

50

Tak, metadane zajmują miejsce. W systemie plików NTFS zajmuje on 1024 bajty, a konkretnie. Jednak informacje nie są przechowywane w pliku, ale w głównej tabeli plików MFT. W szczególności w rekordzie MFT nr 4 $AttrDef.

Zobacz szczegóły w tym artykule Technet : tabela 3.5 zawiera wszystkie zdefiniowane rekordy MFT.

Po sformatowaniu woluminu za pomocą systemu plików NTFS tworzony jest plik głównej tabeli plików (MFT) i inne elementy metadanych. Metadane to pliki używane przez NTFS do implementacji struktury systemu plików. NTFS rezerwuje pierwsze 16 rekordów MFT dla plików metadanych.

NTFS tworzy rekord pliku dla każdego pliku i rekord katalogu dla każdego katalogu utworzonego na woluminie NTFS. MFT zawiera osobny rekord pliku dla samego MFT. Te rekordy plików i katalogów są przechowywane na MFT. Atrybuty pliku są zapisywane w przydzielonym miejscu w MFT. Oprócz atrybutów pliku, każdy rekord pliku zawiera informacje o pozycji rekordu pliku w MFT.

Pamiętaj, że inne systemy plików mogą i postępują inaczej z metadanymi.

EDYCJA: W sekcji komentarzy wskazano, że w tej odpowiedzi nie ma sensu, ponieważ OP poprosił o metadane w systemach plików FAT32, a nie NTFS. Gdybym wiedział jak, usunąłbym atrybut „poprawna odpowiedź”. Dlatego dostarczam dodatkowe informacje, które odpowiadają na pytanie dotyczące FAT32.

FAT32 zapisuje proste metadane, takie jak widoczność lub czas modyfikacji każdego pliku i folderu we wpisie w folderze nadrzędnym pliku lub folderu, tworząc drzewo z folderu głównego FS. Jak wskazano w odniesieniu do NTFS, nie jest to plik, ale zapisany w strukturze danych folderu. Wpis początkowo miał 32 bajty i zawierał następujące atrybuty:

Name (8.3) xxxxxxxx.yyy. (88 bits)

Attribute byte (8 bits of information, described later in this section).

One reserved byte.

Create time (24 bits).

Create date (16 bits).

Last access date (16 bits).

Two reserved bytes.

Last modified time (16 bits).

Last modified date (16 bits).

Starting cluster number in the file allocation table (16 bits).

File size (32 bits).

Lista została zaczerpnięta z tego artykułu Microsoft Technet i dotyczy FAT16. Ponieważ rozmiar klastra FAT32 może wynosić 32 bity, a nazwa plików może być dłuższa niż 8,3, tabela nie jest w pełni dokładna. Aby uwzględnić długie nazwy plików i większe dyski, FAT32 modyfikuje pewne zachowanie, które można przeczytać w Wikipedii tutaj, ale podstawowa idea jest zachowana.

Bjanssen
źródło
2
Możesz użyć NTFSinfo pakietu Sysinternal, aby spojrzeć na metadane i znaleźć dowolne rozszerzenia. Możesz go pobrać tutaj: technet.microsoft.com/en-us/sysinternals/default Istnieje kilka edytorów metadanych, ale nie mogę polecić żadnego z nich, ponieważ ich nie użyłem.
bjanssen
9
@ Metadane TheGoodUser-Sp, przynajmniej w systemie plików NTFS, nie są przechowywane w „pliku” w konwencjonalnym znaczeniu, co sprawia wrażenie, którego szukasz. W folderze \ windows nie ma czegoś ukrytego, o czym wszyscy nie mówimy; metadane plików są integralną częścią samego systemu plików.
Rob Moir
2
W takim przypadku dysk flash jest sformatowany jako FAT-32. Tak więc metada jest przechowywana w tabeli alokacji plików (FAT) en.wikipedia.org/wiki/File_Allocation_Table
jnovacho
2
Należy zauważyć, że tabele alokacji dla NTFS i FAT są wstępnie przydzielone. Różni się od formatu do formatu, ale zwykle kilka sektorów jest zajmowanych pustymi wstępnie przydzielonymi blokami, które mają być używane do przechowywania metadanych w celu zmniejszenia fragmentacji.
Kaslai
2
Co sprawia, że ​​uważasz, że metadane mają stały rozmiar? Lista kontroli dostępu z pewnością może się znacznie różnić złożonością; Nie widzę, jak zawsze może zmieścić się w 1024 bajtach (wraz z wszystkimi innymi metadanymi, takimi jak czasy dostępu i modyfikacji)
Ben Voigt
26

Czy to nie zajmuje żadnego rozmiaru? !!

Tak, ale to mały wpis w dużym, wstępnie przydzielonym bloku. Ten blok jest liczony w „używanej” części dysku. Dodanie wpisu w tym bloku nie wymaga rozszerzenia bloku.

W zależności od systemu plików, blok zostanie wypełniony i rozszerzony w jakiś sposób po dodaniu wielu nazw plików.

Czy mogę zobaczyć plik metadanych w pamięci flash?

Nie łatwo

Jak skomentowali Ruslan i Blorgbeard. Możesz zainstalować przeglądarkę szesnastkową, taką jak HxD, która pozwoli ci oglądać (i edytować - bądź bardzo ostrożny) surowe dane systemu plików. Ale musisz sam dokonać interpretacji, które bajty należą do struktur systemu plików. Do tego potrzebna byłaby dobra dokumentacja konkretnego systemu plików używanego na dysku flash. FAT32 będzie prawdopodobnie łatwiejszy do zrozumienia niż jakikolwiek z wielu wariantów NTFS. Zobacz na przykład opis systemów plików FAT32 .

RedGrittyBrick
źródło
3
@TheGood Jeśli pozbawiony Google, prawdopodobnie zacznę od uruchomienia Linuksa i ddskopiowania surowego systemu plików Flash do pliku na innym dysku, a następnie skorzystania z przeglądarki szesnastkowej w celu sprawdzenia go w połączeniu z dobrą pracą referencyjną na konkretnym systemie plików (jeśli nie zastrzeżone i nieujawnione). Mogę dokonać zmiany metadanych za pomocą touch, powtórzyć ddi użyć binarnego porównania.
RedGrittyBrick
1
Dobrze, że nie jestem pozbawiony Google.
Cthulhu
5
@Cthulhu: Stare nie potrzebują nekronikonu. fhtagn.
RedGrittyBrick
2
Nie trzeba zmieniać systemu operacyjnego, aby bezpośrednio korzystać z przeglądarki szesnastkowej. Wystarczy użyć porządnej przeglądarki hex. (Wygląda hiewna to, że może to zrobić, ale nie jestem pewien, ponieważ dawno temu byłem w systemie Windows).
Ruslan
1
HxD na pewno to zrobi w systemie Windows. Menu Dodatki, Otwórz dysk.
Blorgbeard,
7

Metadane nie są przechowywane (ani zgłaszane przez zwykłe narzędzia do zarządzania plikami) jako pliki, są przechowywane w danych systemu plików na dysku.

W zależności od charakteru / wersji systemu plików, każdy wpis zajmie pewną ilość miejsca na dysku do przedstawienia informacji o metadanych.

Co więcej, oprócz miejsca przydzielonego w głównej tabeli plików, niektóre systemy plików będą również prowadzić dziennik zmian plików (zajmowanie dodatkowego miejsca), a niektóre systemy plików można nawet rozszerzyć o dodatkowe pola zawierające metadane specjalnego przeznaczenia.

Tak więc technicznie metadane zajmują miejsce na dysku, ale nie jest brane pod uwagę przez większość narzędzi do zarządzania plikami, które działają, wywołując interfejs API systemu, który pyta system plików o przestrzeń plików , a nie o przestrzeń metadanych .

A ta abstrakcja jest tylko wierzchołkiem góry lodowej, ponieważ sam system plików działa na abstrakcji fizycznej przestrzeni dyskowej zapewnianej przez procedury dyskowe niskiego poziomu, tak więc tylko wewnętrzna logika dysku będzie wiedziała, ile rzeczywistych pozycji pamięci jest dostępnych dla wyższych poziomów i ile jest oznaczonych jako niewiarygodne, zastrzeżone lub wykorzystane do sumy kontrolnej.

Kości 9
źródło
3

Metadane zależą od systemu plików. Najbardziej podstawowe systemy plików zwykle używane na nośnikach wymiennych oparte są na systemie plików DOS (FAT). DOS nie ma użytkowników i uprawnień. Lub, bardziej poprawnie, niektóre z tych informacji są przenoszone w 8. bicie danych nazwy pliku. Jedynym narzutem zasobów, który jest używany w podstawowym systemie DOS FS, jest uwzględnienie bloków pliku lub katalogu, w którym się on znajduje - i ten blok jest już prawdopodobnie zatwierdzony do obsługi „.”, Już. IOW, dodanie pustego pliku nie dodałoby kolejnego kawałka pamięci, ale zmieniłoby niektóre istniejące zużyte i przydzielone bity.

Gdy korzystasz z bardziej zaawansowanych systemów plików, z dziennikami i użytkownikami, otrzymujesz metadane, wpisy do dziennika i ewentualnie łańcuch sądowy w celu odzyskania poprzednich wersji plików itp. Wtedy mały plik może wybuchnąć w używanej pamięci.

Więc sprawdź typ FS. Jeśli jest to FAT, prawdopodobnie nie ma użytkownika zapisanego w metadanych na nośniku. Stąd ... nie wykorzystano miejsca. :)

Dobrym przykładem FAT FS jest implementacja typu open source - i widać, że lista dostępnych operacji nie obejmuje „pobierz / ustaw użytkownika” i „sprawdź dostęp użytkownika”. Brak tożsamości = brak przechowywania tej tożsamości.

JezC
źródło
2

Jak widać na ostatnim zdjęciu powyżej, jedyną przestrzenią zajmowaną przez plik we Flashu jest przestrzeń dla jego zawartości [znaków]. Więc gdzie jest plik metadanych?

„Plik metadanych” to katalog zawierający ten plik. Właśnie taki jest katalog - zbiór metadanych opisujących zawartość katalogu.

Mam na myśli, kiedy przenoszę plik na inny komputer, w jaki sposób rozumie nazwę pliku, właściciela pliku, datę utworzenia i modyfikacji i ...?

Czy to nie zajmuje żadnego rozmiaru? !!

Tak, w katalogu. W większości systemów plików ten sam plik może mieć dwie różne nazwy, jeśli jest połączony z dwoma różnymi katalogami.

Czy mogę zobaczyć plik metadanych w pamięci flash?

Jeśli twój system plików go obsługuje, możesz to zobaczyć, patrząc na rozmiar katalogu.

David Schwartz
źródło
2

Gdzie przechowywane są metadane?

Kiedy mówimy o metadanych, istnieją dwa rodzaje metadanych.

Pierwszy typ obejmuje datę utworzenia, datę ostatniej modyfikacji, datę ostatniego dostępu. W zależności od systemu plików (tj. NTFS / FAT / Ext3 itp.) Dostępne będą różne „metadane”, na przykład właściciel systemu Windows i uprawnienia w systemie plików NTFS.

Pierwszy typ dotyczy wszystkich plików, np. Pliku .txt w twoim przykładzie.

Wszystkie systemy plików wstępnie przydzielają miejsca na te metadane w głównej tabeli plików (MFT dla NTFS, niektóre inne nazwy dla innych systemów plików), do której użytkownicy nie mają bezpośredniego dostępu. Ponieważ MFT nie jest liczone jako część pojemności dysku, i tak nie jest wymagane „dodatkowe” miejsce do przechowywania.

Drugi typ „metadanych” jest definiowany przez typ pliku lub aplikację. Na przykład dokumenty Office przechowują „Autor”, „Temat” i inne metadane; Obrazy JPEG przechowują zestaw danych EXIF, w tym „zdjęcie zrobione według daty”, „model aparatu”, „czas otwarcia migawki”; podczas gdy dźwięk MP3 zawiera „album”, „utwór nr”, „bitrate” ...

Drugi typ NIE zajmuje dodatkowego miejsca, ponieważ te „metadane” stanowią część pliku.


Różne rozmiary w różnych dyskach

Gdy plik tekstowy jest włączony C:\, zajmuje 4K. Po włożeniu na dysk flash staje się wielkości 1K H:\. Wynika to z różnej „wielkości bloku” dla różnych partycji.

Pliki mają przydzielone spacje w bloku. Dlatego w systemie plików o rozmiarze bloku 4K 1 bajt ma przydzielony 4K, a 4097 bajtów (4K + 1 bajt) ma 8 KB.

Wygląda na C:to, że formatujesz w rozmiarze bloku 4K, a H:formatujesz w rozmiarze 1K, co powoduje różnicę.

Kenneth L.
źródło
Kiedy skopiuję pusty plik tekstowy do pamięci flash, jego metadane również zostaną przeniesione do pamięci flash. teraz, czy jest jakiś sposób, na przykład w Linuksie, aby zobaczyć plik metadanych? na przykład w systemie binarnym.
TheGoodUser,
To, czy metadane zostaną skopiowane, zależy od tego, jak to zrobisz. Na przykład robocopydaje opcję kopiowania znaczników czasu, atrybutów, informacji o właścicielu, list kontroli dostępu (ACL) itp. Zależy to również od tego, czy system plików w pamięci flash obsługuje tę funkcję (np. FAT32 nie przechowuje informacji o właścicielu i liście ACL, więc są one i tak odrzucone). Metadane nie mają postaci pliku, więc nie można wyświetlić nieprzetworzonych danych; jeśli chcesz zobaczyć rzeczy niskiego poziomu, których możesz potrzebować ddw Linuksie, ale jak je interpretować to inna historia.
Kenneth L