Операционная система NetWare всегда была оптимизирована для использования сетевого сервера, чего нельзя сказать об операционных системах общего назначения, таких как Unix, Windows NT, OS/2, Macintosh и DOS. Файловая система NetWare во многом отличается от файловых систем, предлагаемых данными операционными системами. Это включает в себя несколько ключевых моментов, в том числе обеспечение целостности данных в NetWare и высокой производительности, а также удивительную емкость файловой системы NetWare.
При создании файловой системы NetWare были запроектированы следующие цели (которые перечислены в порядке их важности):
Ядро файловой системы операционной системы NetWare 4.0 включает в себя программы, перенесенные из NetWare 3.x. Таким образом, большинство интерфейсов API файловой системы NetWare 4.0 обладает обратной совместимостью с NetWare 3.1 и старше. Однако, файловая система NetWare 4.0 предлагает несколько новых возможностей, включая интерфейс с монитором файловой системы.
В данной главе вы познакомитесь с некоторыми важными моментами, включая получение информации о файле и каталоге, работа с файлом и атрибутами каталога, работа с файлом и списком полномочий каталога и управление ограничением доступа пользователя к томам NetWare.
Основной структурой данных в файловой системе NetWare является том. Том состоит из физической памяти, логической файловой информации (записи о файле и каталоге), информации о пространстве имен (Name Space) для поддержки отличных от DOS форматов и систем обеспечения отказоустойчивости, включая средство оперативной коррекции (Hot-Fix) и систему отслеживания транзакций (Transaction Tracking).
Один сервер NetWare 4.0 может иметь одновременно до смонтированных 32 томов. Каждый из томов может иметь до 32 терабайт физической памяти (если этот сервер имеет остаточно оперативной памяти для кэширования структур данных тома, включая таблицу FAT (File Allocation Table) тома).
Том NetWare аналогичен "файловой системе" Unix. То есть, вы можете монтировать и демонтировать том NetWare аналогично тому, как монтируется и демонтируется файловая система Unix. После монтирования том NetWare обеспечивает логическую связь единиц физической памяти и объединение их в "файлы". Однако, внутренняя структура тома NetWare весьма отлична от файловой системы Unix.
Физический носитель, который с помощью тома NetWare становится доступным для приложений, состоит из блоков. Блок тома соответствует последовательности секторов на соответствующем физическом носителе. Блок тома по умолчанию имеет размер 4К (восемь секторов), хотя возможен и больший размер. Том NetWare - это последовательность блоков. Чем больше число блоков, тем больше том. Таким образом, корректно рассматривать том NetWare как массив блоков. Каждый блок состоит из массива секторов. Каждый сектор в блоке представляет область соответствующего физического носителя.
Блоки тома должны ассоциироваться с соответствующим физическим носителем. Этот носитель состоит из "сегментов". Сегменты представляет собой области физического носителя, которые разбиты по разделам для использования в качестве части тома NetWare. Сегмент разбивается на секторы физического носителя, которые распределяются файловой системой NetWare как блоки тома. Таким образом, базовая структура тома NetWare состоит из
Тома NetWare могут состоять из нескольких сегментов. Таким образом, соответствующий физический носитель тома NetWare может распространяться на несколько дисководов. Многосегментные тома подчиняются следующим правилам:
Заметим, что многосегментные тома переопределяют базовой структура тома NetWare. Вы все равно можете рассматривать многосегментный том как массив блоков, каждый блок - как массив секторов, а каждый сектор как находящийся на сегменте физического носитель, разбитый на разделы для использование его NetWare.
По определению, многосегментный том может занимать физические носители нескольких устройств. Это допускает автоматическое распределение данных. Распределение данных означает, что файловая система NetWare "разбрасывает" данные по сегментам конкретного тома таким образом, так что отдельные операции чтения/записи могут согласованно выполняться всеми физическими устройствами, обеспечивающим память для этого тома. Например, если том NetWare занимает четыре различных сегмента, то операция чтения или записи для этого тома часто будет выполняться всеми четырьмя совместно работающими устройствами. Это может существенно улучшить производительность файловой системы.
Логическая файловая система позволяет приложениям NetWare просматривать данные, которые хранятся на физическом носителе в виде логических файлов - последовательности байт данных с указанием начала и конца и информационными атрибутами, такими как имя файла, дату доступа, дату создания, владельца, права доступа и др.
Поначалу многие думают, что все записи файловой системы хранятся в каталоге Directory, но это не так. Файловая система здесь в основном та же самая, что и раньше: на каждом NetWare-сервере находятся таблицы DET (Directory Entry Table), содержащие информацию о файлах, каталогах и полномочиях. Не путайте DET с DIB (Directory Information Database). Если вы знаете, где находится том с заданными именем, то доступ к файловой системе на этом томе управляется операционной системой NetWare-сервера (на той машине, где находится NetWare-сервер). Здесь действуют все прежние правила назначения полномочий и наследования.
Для определения при применении защиты доступа к файловой системе эквивалентов защиты и членства в группах и для отслеживания взаимоотношений объектов в сети используется Directory. Если вы не использует NetWare Directory Services, то те же взаимоотношения хранятся в Bindery. Если вам знакома взаимосвязь Bindery и файловой системы сервера, то вам знакома и взаимосвязь с этой файловой системой Directory.
Каждый том NetWare имеет две структуры данных, являющихся для логической файловой системы ключевыми: таблицу распределения файлов тома - FAT (File Allocation Table) и таблицу записей каталога тома - DET (Directory Entry Table).
FAT тома содержит запись для каждого блока тома. Конкретная запись FAT непосредственно соответствует конкретному физическому тому, а также содержит информацию, используемую логической файловой системой для обслуживания файлов. В этой информации записи FAT среди прочего указывается, распределена ли эта запись как часть файла, где находится (логически), соответствующая запись в файле, и где находится следующая запись для данного файла.
В ходе монтирования тома NetWare всегда кэширует всю таблицу FAT тома. Это позволяет физической файловой системе быстрее выполнять операции ввода-вывода. Кроме того, NetWare поддерживает дополнительную копию FAT тома, что делает логическую файловую систему более отказоустойчивой в случае аппаратных ошибок или сбоев системы.
Таблица DET (Directory Entry Table) содержит по крайней мерке одну запись для каждого хранящегося на томе файла. Если том поддерживает несколько пространств имен, то каждый файл имеет в таблице DET одну запись для каждого поддерживаемого томом пространства имен. (О пространстве имен мы кратко расскажем ниже.)
Среди информации, хранимой в конкретной записи данной таблицы (записи каталога) - имя файла, атрибуты файла, полномочия доступа к нему и первая запись FAT для данного файла. Таким образом, файл состоит по крайней мере из одной записи в DET тома и цепочке записей в FAT тома.
Логическая файловая система NetWare может считать, прочитав сначала запись файла в Directory Entry Table. Во-вторых, логическая файловая система использует первую запись FAT файла (содержащуюся в записи каталога) для чтения первого блока файла с физического носителя. Далее, логическая файловая система использует первую запись FAT файла для получения следующей записи FAT и чтения следующего блока с физического носителя. Это продолжается до тех пор, пока логическая файловая система не считает весь файл.
Таким образом, логический файл состоит из цепочки блоков тома. На первый блок в цепочке указывает запись файла в Directory Entry Table. Второй блок файла указывается первой записью FAT файла, третий блок файла указывается второй записью FAT и т.д. Последняя запись FAT цепочки файла всегда содержит маркер конца файла.
NetWare кэширует Directory Entry Table тома динамически на основе использования конкретных файлов. Когда логическая файловая система считывает запись каталога (Directory Entry), NetWare кэширует эту запись. NetWare будет держать запись каталога в кэше, пока не окажется, что в течении определенного периода времени к ней нет обращений. Вы можете настроить динамику кэширования записи каталога, с помощью команды SET консоли NetWare. Чтобы сделать логическую файловую систему отказоустойчивой (в случае отказа аппаратуры или краха системы), NetWare всегда поддерживает дополнительную копию Directory Entry Table тома.
Чтобы обеспечить хорошую производительность файловой системы, NetWare выполняет динамическое кэширование файла данных. Когда приложение или клиент считывают данные из файла или записывают их в файл, NetWare копирует соответствующие блоки данных файла в кэш-память (если эти блоки еще не находятся в кэш памяти). Когда файловая кэш-память NetWare оказывается полностью занятой данными файла, кэш-буферы обновляются по алгоритму Least Recently Used ("наименее используемый").
NetWare конфигурирует свою файловую кэш-память в ходе процесса инициализации операционной системы. После распределения памяти для структур данных операционной системы и инициализации динамических таблиц, для начала конфигурации NetWare преобразует всю оставшуюся память в файловый кэш-буфер. Таким образом, общий объем памяти NetWare, доступной для кэширования файла непосредственно после инициализации операционной системы зависит от того, сколько памяти инсталлировано на машине сервера.
После того, как операционная система инициализирована и запущена, NetWare постоянно кэширует данные файла, когда на эти данные ссылается приложение или клиент. Общий объем памяти, выделяемой NetWare для файлового кэша, уменьшается NLM или другими модулями операционной системы, которым требуется динамически распределять память. Например, если NetWare требуется выделить дополнительные приемные буферы локальной сети, она может получить эту память, уменьшив память, выделенную для файлового кэша. NetWare 4.0 позволяет модулям NLM возвращать динамически распределенную память в системный файловый кэш, когда NLM завершает использование этой памяти. (Для более младших версий NetWare это не так.)
NetWare кэширует данные файла поблочно. Это позволяет файловой системе NetWare поддерживать тесную синхронизацию между файловыми кэш-буферами и физической памятью, что помогает обеспечить целостность данных файла и дает большой выигрыш в производительности.
Поскольку NetWare является мультинитевой операционной системой, часто несколько нитей будут конкурировать при доступе к общим файлам. NetWare обеспечивает полный комплект API для управления параллельным файловым вводом-выводом. Эти API управления параллельным доступом включают в себя блокировку физического файла и записи на нижнем уровне и работу с семафорами. Когда часть файла становится доступной, NLM могут получать уведомление.
Система NetWare допускает до 100000 параллельных блокировок файла и до 200000 параллельных блокировок записи (с учетом всех смонтированных сервером томов).
Управление транзакциями позволяет превратить в элементарную единицу взаимодействия последовательность операций файлового ввода-вывода, которые обычно независимы друг от друга. Например, с помощью транзакций вы можете логически связать последовательность операций записи в различные файлы в одну транзакцию. NetWare будет обеспечивать успешность выполнения каждой операции записи в транзакции. Либо, если какая-либо из операций записи завершается неуспешно, NetWare будет отменять все другие операции записи. Таким образом, транзакция предлагает выбор типа "все или ничего": либо все операции транзакции выполняются успешно, либо NetWare не допускает выполнения ни одной из них.
Например, система бухгалтерского учета с базой данных должна выполнять транзакции с помощью метода учета с двойной записью. Каждая единичная транзакция состоит из дебита и кредита, которые должны балансировать друг с другом. Каждая учетная единица состоит из отдельного файла данных. Чтобы выполнить транзакцию, система бухучета с базой данных должна обновить два файла.
Используя контроль транзакций, NetWare может обеспечить, что учетная база данных всегда находится в сбалансированном состоянии. Например, если одно обновление завершается неудачно, то NetWare отменяет другую транзакцию. Для каждой единичной транзакции должны обновляться либо все обновления, либо NetWare восстанавливает файлы данных в то состояние (сбалансированное), которое было для транзакции.
NetWare реализует управление транзакциями с помощью своей системы отслеживания транзакций (TTS). TTS реализуется на нижних уровнях логической файловой системы NetWare. TTS имеет простой в использовании интерфейс API, основное достоинство которого в том, что он реализует автоматическую блокировку записи, избавляя ваc NLM от необходимости устанавливать такие блокировки.
Если на сервере у вас есть несколько файловых систем, например, файлы Macintosh и файлы DOS, то пространства имен (Name Spaces) в своей системе вы уже используете. Для каждой установленной на сервере файловой системы используется соответствующее пространство имен, где информация о файла хранится в естественном для этой файловой системы формате. Это означает, что для каждого файла в каждом пространстве имен, независимо от того, к какой файловой системе он принадлежит, существует запись. Естественно, это увеличивает объем используемой для хранения файла информации.
Данные файла не дублируются. Дублируется только отличающаяся файловая информация. Разделение пространства имен необходимо из-за разницы в ограничениях наименования. Например, файл DOS имеет стандартное ограничение имени файла по схеме 8 + 3 символа, которое не действует в других файловых системах. Разделение пространства имен необходимо также, поскольку некоторые системы имеют такую информацию и данные, которая отсутствует в других системах. Файлы Macintosh имеют "вилку ресурсов", на которую нужно ссылаться, а файлы DOS ее не имеют.
С каждой платформы (с некоторыми минимальными настройками в соответствии с их различиями) вы можете выполнять стандартные операции с файлами, такие как переименование файла, копирование или перемещение файла.
Каждая файловая система имеет собственный набор интерфейсов API этой файловой системы. При установке пространств имен операционная система сервера не спутает, к какому именно пространству имен нужно обращаться при получении запроса к файловой системе.
Поскольку приложения DOS ожидают от вас форматы файлов DOS, если вам заведомо не известно, что форматы двух файловых систем совместимы, ваши приложения DOS должны обращаться только к файлам DOS. Например, файлы текстового формата (ASCII) могут редактироваться текстовым редактором DOS или текстовым редактором Macintosh.
С помощью пространств имен (Name Spaces) и потоков данных файловая система NetWare поддерживает форматы файлов, отличные от DOS. Пространства имен представляют собой дополнительные записи каталога, в которых хранится альтернативная информация о файлах. Например, Например, имена файлов Macintosh, Unix и HPFS могут быть длиннее, чем имена файлов формате DOS, и иметь отличные от них атрибуты файла. Когда на томе активно соответствующее пространство имен, NLM и клиенты могут записывать и считывать файлы, используя отличные от DOS имена файлов и атрибуты.
Каждое пространство имен на томе NetWare автоматически добавляет для каждого файла этого тома дополнительную запись каталога. Пространство имен DOS рассматривается как основное пространство имен. Таким образом, на томе с активным пространством имен Macintosh будет, таким образом, хранится две записи каталога для каждого файла: основная запись каталога и запись каталога Macintosh. Запись каталога Macintosh будет содержать длинное (формата MAcintosh) имя файла и другую информацию о файле, специфическую для Macintosh.
Хотя на томе с несколькими активными пространствами имен для каждого файла будет храниться несколько записей каталога, сам файл будет записываться только один раз. Однако, один файл может иметь несколько потоков данных. Например, на Maciontosh файлы хранятся с использованием двух потоков данных или "вилок". Одна вилка содержит информацию о ресурсе Macintosh для этого файла (вилка ресурса), а другая содержит фактические данные (вилка данных). Чтобы хранить в файле Macintosh обе вилки, NetWare поддерживает для этого файла два потока данных. Поток данных представляет собой цепочку записей FAT. Файл с несколькими потоками данных - это файл, который имеет несколько цепочек записей FAT.
Благодаря пространствам имен, доступ к общим файлам могут получить различные типы операционных систем. Каждая операционная система клиента может обращаться к общим файлам. При этом каждая клиентная операционная система получает информацию о файле в ожидаемом ей формате. NLM могут обращаться к пространствам имен и потокам данных с помощью API File Engine (FE).
Пространства имен и потоки данных - это два обобщенных, но элегантных механизма записи файла. С помощью пространств имен и потоков данных файловая система NetWare может хранить данные практически в любом формате. Таким образом, файловая система NetWare параллельно поддерживает все многообразие файловых система клиентов.
Неплотные файлы - это файловые цепочки, содержащие нераспределенные блоки. Неплотные части файла не занимают места на томе, но влияют на сообщаемый NetWare размер файла
Неплотные файлы используются почти исключительно в системах управления базами данных, использующих в качестве смещения записи в файле данных некоторый тип хэшированного ключа. Таким образом, неплотные файлы обеспечивают эффективный и простой способ считывания в таких СУБД конкретной записи базы данных. Неплотные файлы упрощают также для систем управления базами данных создание очень больших файлов данных с фиксированной длиной.
NetWare создает неплотные файлы, когда NLM или клиент выполняют поиск после конца существующего файла. Таким образом, можно создать неплотный файл случайно, что может привести к труднораспознаваемым ошибкам NLM.
Файловая система NetWare 4.0 обеспечивает "интеллектуальное" сжатие файла, прозрачное для NLM и клиентов. Для определения необходимости сжатия файла NetWare использует пороги доступа к данным. Например, чтобы задать порог сжатия 30 дней, оператор сервера может использовать команду консоли SET. После этого NetWare будет сжимать (упаковывать) файлы, к которым не обращались более 30 дней. При обращении NLM или клиента к упакованному файлу NetWare распаковывает его прозрачным для приложения образом. Упаковка файла выполняется в фоновом режиме при обычной работе сервера. До версии 4.0 NetWare упаковка не являлась частью файловой системы.
До версии 4.0 NetWare наименьшей единицей распределения в файловой системе был блок тома. Например, если размер блока тома равен 4К, то каждый записанный на томе файл занимает 4К (один блок). И это справедливо даже для файлов размером в 1 байт.
В NetWare 4.0 наименьшей единицей распределения в файловой системе является один сектор или 512 байт. И это не зависит от размера блока. Таким образом, секторы в блоке тома могут содержать данные из различных файлов. Вторичное распределение выполняется прозрачно на нижнем уровне файловой системы. Файловая система NetWare 4.0 более эффективна в плане использования носителя, чем ее предшественники.