51

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

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

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

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

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


Мой вопрос :

Q1:

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

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

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

Q2:

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

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

6 ответов6

50

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

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

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

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

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

РЕДАКТИРОВАТЬ: В разделе комментариев было указано, что этот ответ не хватает смысла, потому что ОП запросил метаданные в файловых системах 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 изменяет некоторое поведение, которое можно прочитать в Википедии здесь, но основная идея верна.

26

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

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

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

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

Не легко

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

7

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

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

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

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

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

3

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

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

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

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

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, что приводит к разнице.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .