9

(Я использую Windows XP, но думаю, что она похожа во всех последних версиях Windows.)

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

Так где хранятся все метаданные?

4 ответа4

10

Вас учили, что на жестких дисках есть файлы, но это не вся правда. На самом деле жесткие диски содержат одно очень, очень большое число, выражаемое множеством отдельных битов. Но эта интерпретация не имеет никакого смысла ни для вас, ни для вашего компьютера, потому что обработка больших чисел не очень распространена (и я говорю о ДЕЙСТВИТЕЛЬНО ОГРОМНЫХ числах). Вместо этого компьютер разбивает его на более мелкие «слова» (8-битный, 16-битный, 32-битный или любой другой) и использует его таким образом. Тем не менее, это просто набор слов (предположим, 8-битные слова, т.е. байты).

Теперь этот диск разделен. Я объяснил, почему разбиение является хорошей идеей в этом ответе:

Вообще говоря, диски можно использовать без разметки. Большинство pendrives работают так. Но использование разделов имеет много преимуществ, просто назвать некоторые из них:

  • Вы можете иметь две ОС на одном жестком диске и не мешать друг другу. Каждый из них будет относиться к своему разделу как к логическому диску и не будет связываться с другими, если вы не скажете это.
  • Вы можете логически разделить ваши данные. Если по какой-либо причине один раздел будет поврежден, другие разделы, скорее всего, останутся нетронутыми.
  • Использование разделов лучше, чем использование нескольких жестких дисков меньшего размера, потому что ваша система тише, потребляет меньше энергии, и вы можете изменять размер, удалять, перемещать их и т.д.
  • Вы можете использовать некоторые части жесткого диска для некоторых специальных целей.

Теперь у каждого раздела есть своя файловая система. Современные версии Windows используют NTFS, но FAT, FAT32 и exFAT поддерживаются для внешних носителей или устаревших разделов. При повседневном использовании Linux обычно используются файловые системы ext, ext4 - самая последняя.

Файловая система определяет способ физического размещения файлов на диске. Вы можете думать об этом так: если бы у вас была книга на 10000 страниц без каких-либо глав, номеров страниц или разрывов строк, ее было бы очень трудно использовать. Конечно, номера страниц и названия глав занимают немного места на странице, но они делают использование книги намного проще и быстрее. Если вы хотите перейти к главе, скажем, 42, вы просто посмотрите ее в оглавлении. Затем вы пролистываете книгу, пока не найдете нужную главу. Ваши файлы - это главы, а ваша файловая система - это книга. Метаданные файловой системы, такие как границы файлов, имена файлов и т.д., Также занимают место, но это сравнительно небольшое пространство, и это заставляет вещи работать намного быстрее.

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

Кстати, именно поэтому ранние версии DOS принимали только 8.3 имен - пространство, зарезервированное для имен файлов, было очень ограничено. NTFS допускает имена файлов длиной 255 символов [1].


Еще одно слово в вашем комментарии:

Раньше у меня был своего рода вирус, который каким-то образом повредил пару файлов на моем компьютере, так что их размер составил около 100 ГБ. Каждый из них. На моем жестком диске 40 ГБ. Так что, должно быть, была какая-то магия ... :-D

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

Представьте себе переплет, способный вместить 100 страниц. Если вы используете этот переплет как обычный файл, вы можете вставить 100 страниц. Вы могли прочитать все 100. Вы можете написать на все 100. Теперь представьте себе редкое связующее. Вы вставляете первую написанную вами страницу «страница 1: Содержание A». Затем вы вставляете вторую написанную вами страницу «страница 9999: содержание b:». Всякий раз, когда вы пытаетесь прочитать страницу, вы смотрите, если она существует. Если это не так, ваш ответ будет пустой страницей. Если он существует, вы возвращаете содержимое страницы. Всякий раз, когда вы пишете на страницу, которой еще нет в подшивке, вы добавляете новый лист бумаги.

5

Только что узнал сегодня о Windows Alternate Data Streams (ADS). Это скрытая ветка ресурса, которая прикреплена к файлу. Он был частью NTFS начиная с Windows NT 3.1.

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

Вы можете создавать и просматривать файлы ADS из командной строки.

echo "ABCDE" > test.txt:hidden.txt

создаст файл test.txt с файлом ADS с именем hidden.txt

Вы можете использовать эту команду для редактирования файла:

notepad test.txt:hidden.txt

Вот легко читаемая статья, которая углубляется в детали.

2

Я выполнил поиск и наткнулся на похожий вопрос, заданный в переполнении стека.

В основном это говорит о том, что файл создан и занимает несколько байтов или кластер жесткого диска и т.д. Это зависит от степени детализации жесткого диска и файловой системы и т.д.

Они обсуждают это здесь:https://stackoverflow.com/questions/4954991/are-0-bytes-files-really-0-bytes

с дополнительными ссылками для дальнейшего исследования.

2

На томе NTFS эта информация хранится в метафайлах. В частности, имя файла и временные метки хранятся в метафайле с именем $ MFT. Метафайлы недоступны обычным методам Windows, таким как Проводник или командная строка.

Для большего чтения:

http://ntfs.com/ntfs-system-files.htm

http://en.wikipedia.org/wiki/NTFS

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