Реализация файловой системы. Файловая система NTFS. Часть 2

Управление свободным и занятым дисковым пространством

В системе Windows учет свободных и занятых дисковых блоков ведется при помощи битового вектора (bit map или bit vector), например, 00111100111100011000001, где каждый блок представлен одним битом, принимающим значение 0 или 1, в зависимости от того, занят он или свободен. В файловой системе NTFS битовый массив сам является файлом. Его атрибуты и дисковые адреса хранятся в 6-й записи таблицы MFT.

Реализация директорий

Директория или каталог - это файл, имеющий вид таблицы и хранящий список входящих в него файлов или каталогов. Каталогу соответствует запись в таблице MFT. Эта запись включает в себя совокупность записей о файлах, входящих в данный каталог и индексирована таким образом, чтобы обеспечить эффективный поиск имени файла. Каждая запись о файле включает в себя его имя, метку времени, размер и ссылку на MFT-запись для данного файла. Все это позволяет поисковым программам быстро получать основную информацию о файле из записи в каталоге без обращения к MFT-записи самого файла.
Запись MFT для небольшого каталога:
Для больших каталогов совокупность записей о файлах не помещается в MFT-запись каталога. Она является нерезидентным атрибутом и организована в виде B+ дерева, обеспечивающего быстрый поиск имени файла в алфавитном порядке. MFT-запись каталога содержит корень этого дерева, а его ветви размещаются в отдельных блоках диска.

Поиск файла по имени

Вначале имя диска транслируется во внутренние имена устройств Windows. "F:\tmp\MyFile.txt" преобразуется в "\??\F:\tmp\MyFile.txt". В каталоге \??\ ищется "F:"- ссылка на объект-раздел жесткого диска, например, "\Device\Harddisk\Volume5". В таблице MFT раздела, осуществляется навигация по каталогам, отыскивается файл.

Точки повторного анализа. Монтирование дисков

Типовые возможности для монтирования файловых систем и образования жестких и символических связей в ОС Windows реализуется при помощи механизма, называемого точками повторного анализа. Если файл помечен как точка повторного анализа, то с ним ассоциирован блок данных, которые могут быть считаны и интерпретированы приложением, создавшим эту точку, или драйвером ОС. Операция монтирования файловой системы, хранящейся на разделе диска, обеспечивает ей связь с уже существующей иерархией файловых систем и делает ее файлы доступными для процессов.
ОС Windows (как и Unix) поддерживает два вида связей - жесткие (hard link) и символические (symbolic link). В случае жесткой связи запись о файле появляется в новом каталоге, а MFT-запись этого файла включает счетчик количества ссылок на данный файл. Файл в NTFS может иметь до 1023 жестких ссылок.
Символическая линковка - создание нового файла, который содержит путь к связываемому файлу. Ссылки этого типа могут создаваться и для файлов, и для каталогов, в том числе и сетевых; они поддерживают связь между томами, используя относительные пути. Принципом работы символьная ссылка напоминает обычный ярлык.

Практическое задание

  1. Создайте на рабочем столе простой текстовый файл file1.txt и напишите что-нибудь в него. Откройте командную строку и создайте на него пару жестких ссылок с именами file2.txt и file3. Вот так:
    cd %userprofile%/desktop
    fsutil hardlink create file2.txt file1.txt
    fsutil hardlink create file3.txt file1.txt

  2. Создайте символьную ссылку на файл командой mklink:
    mklink D:/file1.txt %userprofile%/desktop/file1.txt
  3. Создайте символьную ссылку на каталог командой mklink с ключом /d:
    mklink /d D:/folder2 %userprofile%/desktop/folder1
  4. Попробуйте внести изменения в оригинал. Проверьте ссылки. Затем удалите оригинал, проверьте ссылки. Занесите результат в отчёт.

Совместный доступ к файлу

Потоки должны синхронизировать доступ к совместно используемым файлам или каталогам, чтобы получить предсказуемый результат. ОС Windows предлагает стандартное решение данной проблемы на уровне пользователя - предоставить возможность одному из потоков захватить часть файла между двумя записями для монопольного доступа. Для этого используются Win32-функции LockFile и UnlockFile.

Производитедительность файловой системы. Кэширование

Кэширование - использование быстрого устройства для оптимизации работы устройства медленного. Часть блоков файла, с которыми активно взаимодействует приложение, размещается в буфере оперативной памяти. Периодически производится синхронизация содержимого кэша и диска. Устройство КЭШа ОС Windows отличается от традиционного. В ОС Windows кэш работает на более высоком уровне, чем файловая система.
Часть считываемого (записываемого) файла проецируется 256-килобайтный буфер кэша.

Оптимальное размещение информации на диске

Важная техника - сокращение количества движений считывающей головки диска за счёт разумной стратегии размещения информации. Для этого целесообразно периодически осуществлять дефрагментацию диска (сборку мусора). Дефрагментацию можно выполнить с помощью соответствующей вкладки административной консоли панели управления.

Комментарии

Популярные сообщения