Реализация файловой системы. Файловая система 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 жестких ссылок.
Символическая линковка - создание нового файла, который содержит путь к связываемому файлу. Ссылки этого типа могут создаваться и для файлов, и для каталогов, в том числе и сетевых; они поддерживают связь между томами, используя относительные пути. Принципом работы символьная ссылка напоминает обычный ярлык.
Практическое задание
- Создайте на рабочем столе простой текстовый файл file1.txt и напишите что-нибудь в него. Откройте командную строку и создайте на него пару жестких ссылок с именами file2.txt и file3. Вот так:
cd %userprofile%/desktop
fsutil hardlink create file2.txt file1.txt
fsutil hardlink create file3.txt file1.txt
-
Создайте символьную ссылку на файл командой mklink:
mklink D:/file1.txt %userprofile%/desktop/file1.txt
-
Создайте символьную ссылку на каталог командой mklink с ключом /d:
mklink /d D:/folder2 %userprofile%/desktop/folder1
- Попробуйте внести изменения в оригинал. Проверьте ссылки. Затем удалите оригинал, проверьте ссылки. Занесите результат в отчёт.
Совместный доступ к файлу
Потоки должны синхронизировать доступ к совместно используемым файлам или каталогам, чтобы получить предсказуемый результат. ОС Windows предлагает стандартное решение данной проблемы на уровне пользователя - предоставить возможность одному из потоков захватить часть файла между двумя записями для монопольного доступа. Для этого используются Win32-функции LockFile и UnlockFile.Производитедительность файловой системы. Кэширование
Кэширование - использование быстрого устройства для оптимизации работы устройства медленного. Часть блоков файла, с которыми активно взаимодействует приложение, размещается в буфере оперативной памяти. Периодически производится синхронизация содержимого кэша и диска. Устройство КЭШа ОС Windows отличается от традиционного. В ОС Windows кэш работает на более высоком уровне, чем файловая система.
Часть считываемого (записываемого) файла проецируется 256-килобайтный буфер кэша.
Оптимальное размещение информации на диске
Важная техника - сокращение количества движений считывающей головки диска за счёт разумной стратегии размещения информации. Для этого целесообразно периодически осуществлять дефрагментацию диска (сборку мусора). Дефрагментацию можно выполнить с помощью соответствующей вкладки административной консоли панели управления.
Комментарии
Отправить комментарий