Разве метаданные не занимают какого-либо размера?

51

Я помещаю 4096 символов в текстовый файл и сохраняю его. Поскольку каждый символ составляет 1 байт, размер текстового файла должен быть 4 КБ. Как вы видите ниже, все в порядке:

введите описание изображения здесь

Я подключаю флэш-память к компьютеру. свободное место на флэш-памяти составляет 1,717,518,336байты :

введите описание изображения здесь

Я создал копию файла во флеш-памяти. И снова взгляните на свободное место. у него есть свободное место в 1,717,514,240байтах :

введите описание изображения здесь

Давайте посмотрим, в чем разница:

1,717,518,336 - 1,717,514,240 =4096 байты


Мой вопрос :

Q1:

Как вы видите на последнем рисунке выше, единственное место, которое файл занимает на флэш-памяти, это пространство для его содержимого [символов]. Так где находится файл метаданных?

Я имею в виду, когда я перемещаю файл на другой компьютер, как он понимает имя файла, владельца файла, дату создания и изменения и ...?

Разве это не занимает никакого размера? !!

Q2:

Могу ли я увидеть файл метаданных во флэш-памяти?

введите описание изображения здесь

Цените ваше время и внимание.

TheGoodUser
источник
10
метаданные будут содержаться в самой файловой системе. это не является частью размера файла, сообщаемого Windows. Кроме того, метаданные FAT32 и NTFS будут другими.
Ramhound
@ Когда я перемещаю текстовый файл во флэш-память, его файл метаданных также перемещается во флэш-память, верно? как я могу это увидеть?
TheGoodUser
1
Помимо понимания внутренних особенностей ОС (само по себе это имеет смысл), вероятно, нет причин когда-либо просматривать или изменять такую ​​информацию, если вы не пишете программу восстановления / восстановления диска. При обычном использовании вы никогда не захотите изменять информацию на этом уровне, поскольку это может легко подорвать целостность самой файловой системы и всего, что ее использует.
Джо
3
Краткий ответ: он занимает место, но не считается частью размера файла.
user253751

Ответы:

50

Да, метаданные занимают место. На NTFS он занимает 1024 байта, если быть точным. Однако информация хранится не в файле, а в основной таблице файлов MFT. Конкретно в MFT запись № 4 $AttrDef.

Подробности смотрите в этой статье Technet : таблица 3.5 содержит все определенные записи MFT.

Когда том отформатирован в NTFS, создается файл таблицы основных файлов (MFT) и другие фрагменты метаданных. Метаданные - это файлы, которые NTFS использует для реализации структуры файловой системы. NTFS резервирует первые 16 записей MFT для файлов метаданных.

NTFS создает запись файла для каждого файла и запись каталога для каждого каталога, созданного на томе NTFS. MFT включает в себя отдельную запись файла для самого MFT. Эти записи файлов и каталогов хранятся на MFT. Атрибуты файла записываются в выделенное пространство в MFT. Помимо атрибутов файла каждая запись файла содержит информацию о положении записи файла в MFT.

Обратите внимание, что другие файловые системы могут по-разному работать с метаданными.

РЕДАКТИРОВАТЬ: В разделе комментариев было указано, что этот ответ не хватает смысла, потому что OP запросил метаданные в файловых системах FAT32, а не NTFS. Если бы я знал, как, я бы удалил атрибут «правильный ответ». Поэтому я предоставляю дополнительную информацию, которая отвечает на вопрос относительно FAT32.

FAT32 сохраняет простые метаданные, такие как видимость или время изменения для каждого файла и папки, в записи в родительской папке файла или папки, создавая дерево вниз из корневой папки FS. Как указано в отношении NTFS, это не файл, а сохраненный в структуре данных папки. Первоначально запись была размером 32 байта и содержала следующие атрибуты:

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).

Список был взят из этой статьи Microsoft Technet и относится к FAT16. Поскольку размер кластера FAT32 может составлять 32 бита, а имя файла может быть длиннее 8,3, таблица не является полностью точной. Для размещения длинных имен файлов и дисков большего размера FAT32 изменяет некоторое поведение, которое можно прочитать в Википедии здесь, но основная идея верна.

bjanssen
источник
2
Вы можете использовать NTFSinfo Sysinternal Suite для просмотра метаданных и поиска любых расширений. Вы можете скачать его здесь: technet.microsoft.com/en-us/sysinternals/default. Есть несколько редакторов метаданных, но я не могу рекомендовать их, потому что я их не использовал.
bjanssen
9
@ Метаданные TheGoodUser-Sp, по крайней мере в NTFS, не хранятся в «файле» в обычном смысле, и именно поэтому у меня сложилось впечатление, что вы ищете. В папке \ windows нет чего-то спрятанного, о чем мы все просто не рассказываем; метаданные файла являются неотъемлемой частью самой файловой системы.
Роб Мойр
2
В этом случае флэш-накопитель отформатирован как FAT-32. Таким образом, метада хранится в таблице размещения файлов (FAT) en.wikipedia.org/wiki/File_Allocation_Table
jnovacho
2
Важно отметить, что таблицы размещения для NTFS и FAT предварительно распределены. Это отличается от формата к формату, но несколько секторов обычно заняты пустыми предварительно выделенными блоками, которые должны использоваться для хранения метаданных, чтобы уменьшить фрагментацию.
Каслай
2
Что заставляет вас думать, что метаданные имеют фиксированный размер? Список контроля доступа, конечно, может сильно различаться по сложности; Я не вижу, как он всегда может уместиться в 1024 байта (вместе со всеми другими метаданными, такими как время доступа и изменения)
Бен Фойгт
26

Разве это не занимает никакого размера? !!

Да, но это небольшая запись в большом предварительно выделенном блоке. Этот блок учитывается в «используемой» части вашего диска. Добавление записи внутри этого блока не требует расширения блока.

В зависимости от файловой системы, в конечном итоге блок будет заполнен и каким-то образом расширен после добавления множества имен файлов.

Могу ли я увидеть файл метаданных во флэш-памяти?

Не легко

Как прокомментировали Руслан и Блоргобород. Вы можете установить шестнадцатеричный просмотрщик, такой как HxD, который позволит вам просматривать (и редактировать - будьте очень осторожны) необработанные данные файловой системы. Но вам придется самостоятельно интерпретировать, какие байты принадлежат каким структурам файловой системы. Для этого вам понадобится хорошая документация по конкретной файловой системе, используемой на флэш-диске. FAT32, вероятно, будет проще для понимания, чем любой из множества вариантов NTFS. См. Понимание Файловых систем FAT32 для примера.

RedGrittyBrick
источник
3
@TheGood Если бы я был лишен Google, я бы, вероятно, начал с загрузки Linux и использования ddдля копирования необработанной флэш-файловой системы в файл на другом диске, а затем с помощью hex-viewer для ее изучения в сочетании с хорошей справочной работой в конкретной файловой системе. (если не является собственностью и не разглашается). Я мог бы изменить метаданные с помощью touch, повторить ddи использовать бинарный diff.
RedGrittyBrick
1
Хорошо, что я не лишен Google.
Ктулху,
5
@Cthulhu: старые не нуждаются в necronomicon. fhtagn.
RedGrittyBrick
2
Нет необходимости менять ОС для непосредственного использования hex-viewer на жестком диске. Просто используйте приличный гекс вьюер. (Кажется, даже hiewможет сделать это, но я не уверен, так как я был на окнах давно).
Руслан
1
HxD определенно сделает это на Windows. Дополнительное меню, Открыть диск.
Blorgbeard
7

Метаданные не хранятся (и не передаются обычными инструментами управления файлами) как файлы, они хранятся в данных файловой системы на диске.

В зависимости от характера / версии файловой системы каждая запись будет занимать определенное количество дискового пространства для представления информации метаданных.

Кроме того, наряду с пространством, выделенным в главной таблице файлов, некоторые файловые системы также будут вести журнал изменений файлов (занимая дополнительное пространство), а некоторые файловые системы могут даже расширяться за счет дополнительных полей, содержащих метаданные специального назначения.

Таким образом, технически метаданные занимают место на диске, но они не учитываются большинством утилит управления файлами, которые работают с системным API-интерфейсом, который запрашивает файловую систему для файлового пространства, а не для пространства метаданных .

И эта абстракция является лишь верхушкой айсберга, поскольку сама файловая система работает над абстракцией базового физического дискового пространства, предоставляемого низкоуровневыми подпрограммами диска, поэтому фактически только внутренняя логика диска будет знать, сколько фактических позиций памяти доступно для более высоких уровней. и сколько помечено как ненадежное, зарезервированное или использованное для контрольной суммы.

Dice9
источник
3

Метаданные зависят от файловой системы. Самые основные файловые системы, обычно используемые на сменных носителях, основаны на файловой системе DOS (FAT). DOS не имеет пользователей, и разрешения. Или, точнее, некоторая часть этой информации передается в 8-м бите данных имени файла. Единственный ресурс, который используется в базовой DOS FS, - это учет блоков файла или каталога, в котором он находится - и этот блок, вероятно, уже зафиксирован для обработки «.», Уже. Таким образом, добавление пустого файла не добавит еще один бит памяти, но изменит некоторые существующие использованные и выделенные биты.

Когда вы используете более продвинутые файловые системы с журналированием и пользователями, вы получаете метаданные, записи журнала и, возможно, криминалистическую цепочку для восстановления предыдущих версий файлов и т. Д. Затем небольшой файл может взорваться в использованном хранилище.

Итак, проверьте тип FS. Если это FAT, то у вас, вероятно, нет пользователя, записанного в метаданных на носителе. Следовательно ... не используется пространство. :)

Хорошим примером FAT FS является реализация с открытым исходным кодом - и вы можете видеть, что список доступных операций не включает в себя «получить / установить пользователя» и «проверить доступ пользователя». Нет идентичности = нет хранения этой идентичности.

JezC
источник
2

Как вы видите на последнем рисунке выше, единственное место, которое файл занимает на флэш-памяти, это пространство для его содержимого [символов]. Так где находится файл метаданных?

«Файл метаданных» - это каталог, в котором находится файл. По сути, это и есть каталог - набор метаданных, описывающих содержимое каталога.

Я имею в виду, когда я перемещаю файл на другой компьютер, как он понимает имя файла, владельца файла, дату создания и изменения и ...?

Разве это не занимает никакого размера? !!

Да, в каталоге. В большинстве файловых систем один и тот же файл может иметь два разных имени, если он связан в двух разных каталогах.

Могу ли я увидеть файл метаданных во флэш-памяти?

Если ваша файловая система поддерживает это, вы можете увидеть это, посмотрев на размер каталога.

Дэвид Шварц
источник
2

Где хранятся метаданные?

Когда мы говорим о метаданных, есть два типа метаданных.

Первый тип включает дату создания, дату последнего изменения, дату последнего доступа. В зависимости от файловой системы (например, NTFS / FAT / Ext3 и т. Д.) Будут доступны разные «метаданные», например, владелец Windows и разрешение на NTFS.

Первый тип применяется ко всем файлам, например, к вашему файлу .txt.

Все файловые системы предварительно выделяют места для хранения этих метаданных в главной таблице файлов (MFT для NTFS, некоторые другие имена для другой файловой системы), которая недоступна пользователям напрямую. Поскольку MFT не учитывается как часть емкости диска, в любом случае «дополнительное» пространство для хранения не требуется.

Второй тип «метаданных» определяется типом файла или приложения. Например, в документах Office хранятся метаданные «Автор», «Тема» и другие; В изображениях JPEG хранится набор данных EXIF, в том числе «дата съемки», «модель камеры», «выдержка»; в то время как звук MP3 содержит "альбом", "дорожка #", "битрейт" ...

Второй тип занимает дополнительное место, потому что эти «метаданные» являются частью файла.


Разный размер в другой диск

Когда ваш текстовый файл включен, C:\он занимает 4K. Он становится размером 1 КБ, когда вы кладете его на флешку H:\. Это потому, что разные "размеры блока" для разных разделов.

Файлы выделяются пробелами в блоке. Следовательно, в файловой системе с размером блока 4 КБ 1 байт выделяется 4 КБ, а 4 097 байт (4 КБ + 1 байт) - 8 КБ.

Очевидно, ваш C:форматируется с размером блока 4K, а H:форматируется с размером блока 1K, что приводит к разнице.

Кеннет Л
источник
Когда я копирую пустой текстовый файл во флэш-память, его метаданные также перемещаются во флэш-память. Есть ли способ, например, в Linux, увидеть файл метаданных? в двоичном коде, например.
TheGoodUser
Копируется ли метаданные, зависит от того, как вы это делаете. Например, robocopyдает вам возможность копировать метки времени, атрибуты, информацию о владельце, списки контроля доступа (ACL) и т. Д. Это также зависит от того, поддерживает ли файловая система на вашей флэш-памяти (например, FAT32 не хранит информацию о владельце и ACL, поэтому они все равно отбрасывается). Метаданные не в форме файла, поэтому вы не можете видеть необработанные данные; если вы хотите видеть вещи низкого уровня, которые вам могут понадобиться ddв Linux, но как их интерпретировать, это другая история.
Кеннет Л