Введение
Файловая система операционных систем OpenVMS и RSX 11. Files 11 – это файловая система, используемая в операционных системах RSX 11 и OpenVMS компании Digital Equipment Corporation. Она поддерживает ввод/вывод, ориентированный на записи, удалённый сетевой доступ и версионирование файлов. Исходный уровень ODS 1 представляет собой плоскую файловую систему, а версия ODS 2 – иерархическую файловую систему с поддержкой списков управления доступом. Files 11 аналогична, но значительно превосходит файловые системы, использовавшиеся в предыдущих операционных системах Digital Equipment Corporation, таких как TOPS 20 и RSTS/E.
Files 11 is the file system used in the RSX 11 and OpenVMS operating systems from Digital Equipment Corporation. It supports record oriented I/O, remote network access, and file versioning. The original ODS 1 layer is a flat file system; the ODS 2 version is a hierarchical file system, with support for access control lists,. Files 11 is similar to, but significantly more advanced than, the file systems used in previous Digital Equipment Corporation operating systems such as TOPS 20 and RSTS/E.
История
Файловая система OpenVMS берет начало от более ранних операционных систем DEC и во многом схожа с ними, обе были разработаны Дэйвом Катлером. Главное отличие заключается в организации каталогов. Все эти файловые системы предоставляли некоторую примитивную неиерархическую структуру каталогов, как правило, основанную на назначении одного каталога для каждой учетной записи пользователя. В системе RSTS/E каждая учетная запись пользователя представлялась двумя числами – парой [проект, программист] – и имела один связанный с ней каталог. Специальные системные файлы, такие как исполняемые программы и сама операционная система, хранились в каталоге зарезервированной системной учетной записи. Хотя это было приемлемо для систем PDP 11, которые имели ограниченный объем постоянной памяти, системам VAX с гораздо большими жесткими дисками требовался более гибкий метод хранения файлов: в частности, иерархическая структура каталогов, которая стала наиболее заметным улучшением в ODS 2.
Обзор
"Файлы 11" – это общее название для пяти отдельных файловых систем, известных как уровни организации на диске (ODS) от 1 до 5. ODS 1 – это плоская файловая система, используемая операционной системой RSX 11, поддерживаемая более старыми системами VMS для обеспечения совместимости с RSX, но не использовавшаяся для поддержки самой VMS; она в значительной степени уступила место ODS 2 и ODS 5. ODS 2 является стандартной файловой системой VMS и остаётся наиболее распространённой файловой системой для системных дисков (диска, на котором установлена операционная система). Хотя их редко упоминают по обозначению уровня ODS, ODS 3 и ODS 4 представляют собой поддержку "Файлов 11" для файловых систем CD ROM ISO 9660 и High Sierra Format соответственно. ODS 5 – это расширенная версия ODS 2, доступная на платформах Alpha и IA 64, которая добавляет поддержку сохранения регистра имен файлов, содержащих символы, отличные от ASCII, и улучшает поддержку иерархических каталогов. Изначально она предназначалась для обеспечения файлового обслуживания систем Microsoft Windows или других систем, отличных от VMS, в рамках проекта "NT Affinity", но также используется на пользовательских дисках и интернет-серверах.
Размещение каталога
Все файлы и каталоги в файловой системе Files 11 содержатся в одном или нескольких родительских каталогах и, в конечном итоге, под корневым каталогом, в главном каталоге файлов (см. ниже). Таким образом, файловая система организована в виде структуры направленного ациклического графа (DAG). В этом примере (см. справа) файл 2 имеет запись в каталогах Dir 2 и Dir 3; он одновременно "находится" в обоих каталогах. Даже если его удалить из одного каталога, он все равно будет существовать в другом, пока не будет удален и оттуда. Это аналогично концепции жестких ссылок в UNIX, однако следует учитывать, что файл может быть фактически удален на дисках, не поддерживающих жесткие ссылки (доступны только на дисках ODS 5, и только если на диске включена поддержка жестких ссылок).
Организация диска и его наименование
Операционная система VMS имеет доступ к одному или нескольким онлайн-дискам, каждый из которых содержит полную, независимую файловую систему. Это может быть локальное хранилище или, в случае кластера, хранилище, совместно используемое с удаленными системами. В конфигурации кластера OpenVMS диски, не являющиеся приватными, совместно используются всеми узлами кластера (см. рисунок 1). В этой конфигурации два системных диска доступны обоим узлам по сети, но приватный диск не является общим: он монтируется для использования только конкретным пользователем или процессом на данной машине. Доступ к файлам в кластере управляется OpenVMS Distributed Lock Manager, являющимся неотъемлемой частью файловой системы. Несколько дисков могут быть объединены в один большой логический диск или набор томов. Диски также могут автоматически реплицироваться в теневые наборы для обеспечения безопасности данных или повышения скорости чтения. Диск идентифицируется либо его физическим именем, либо (чаще) логическим именем, определенным пользователем. Например, загрузочное устройство (системный диск) может иметь физическое имя $3$DKA100, но обычно оно обозначается логическим именем SYS$SYSDEVICE. Файловые системы на каждом диске (за исключением ODS 1) иерархичны. Полностью определенное имя файла состоит из имени узла, имени пользователя и пароля, имени устройства, каталога, имени файла, типа файла и номера версии в формате:
NODE"accountname password"::device:[directory.subdirectory]filename.type;ver
Например, [DIR1.DIR2.DIR3]FILE.EXT относится к последней версии FILE.EXT на текущем диске по умолчанию в каталоге [DIR1.DIR2.DIR3]. DIR1 является подкаталогом главного каталога файлов (MFD) или корневого каталога, а DIR2 – подкаталогом DIR1. MFD диска идентифицируется как [000000]. Большинство частей имени файла могут быть опущены, в этом случае они берутся из текущей спецификации файла по умолчанию. Спецификация файла по умолчанию заменяет понятие «текущего каталога» в других операционных системах, предоставляя набор значений по умолчанию для узла, имени устройства и каталога. Все процессы имеют спецификацию файла по умолчанию, которая включает имя диска и каталог, и большинство подпрограмм файловой системы VMS принимают спецификацию файла по умолчанию, которая также может включать тип файла; команда TYPE, например, по умолчанию использует ".LIS" в качестве типа файла, поэтому команда TYPE F без расширения пытается открыть файл F.LIS. Каждый файл имеет номер версии, который по умолчанию равен 1, если нет других версий с тем же именем файла (в противном случае он на единицу больше, чем наибольший номер версии). Каждый раз при сохранении файла вместо перезаписи существующей версии создается новый файл с тем же именем, но с увеличенным номером версии. Старые версии могут быть удалены явно с помощью команд DELETE или PURGE или, опционально, старые версии файла могут быть удалены автоматически при достижении лимита версий файла (установленного командой SET FILE/VERSION LIMIT). Таким образом, старые версии не перезаписываются, а хранятся на диске и могут быть извлечены в любое время. Архитектурный предел для номеров версий – 32767. Поведение версионного управления можно легко отключить, если оно не требуется. В частности, файлы, которые обновляются напрямую, такие как базы данных, не создают новые версии, если это не запрограммировано. ODS 2 ограничивается восемью уровнями подкаталогов и только именами, состоящими из заглавных букв, буквенно-цифровых символов (плюс символы подчеркивания, дефиса и знака доллара) длиной до 39.39 символов (39 для имени файла и еще 39 для расширения). ODS 5 расширяет набор символов до строчных букв и большинства других печатаемых символов ASCII, а также символов ISO Latin 1 и Unicode, увеличивает максимальную длину имени файла и позволяет использовать неограниченное количество уровней подкаталогов. При создании пути к файлу ODS 5, который использует символы, недопустимые в ODS 2, используется специальный синтаксис "^" для обеспечения обратной совместимости; например, файл "file.tar.gz;1" на диске ODS 5 будет называться "file^.tar.gz"—имя файла – "file.tar", а расширение – ".gz".
Логические названия
Логическое имя – это системная переменная, которая может ссылаться на диск, каталог или файл, или содержать другую информацию, специфичную для программы. Например, логическое имя SYS$SYSDEVICE содержит загрузочное устройство системы. Логическое имя обычно относится к одному каталогу или диску, например SYS$LOGIN:, который является каталогом (или каталогами) входа (домашним) пользователя; эти логические имена нельзя использовать как истинные имена дисков – SYS$LOGIN:[DIR]FILE не является допустимой спецификацией файла. Однако скрытые логические имена, определенные с помощью DEFINE/TRANSLATION=CONCEALED, могут использоваться таким образом; эти корневые каталоги определяются с завершающей точкой "." в спецификации каталога, следовательно, команда $ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[имя пользователя.] позволит использовать HOME:[DIR]FILE. Более распространены простые логические имена, указывающие на конкретные каталоги, связанные с каким-либо прикладным программным обеспечением, которое может располагаться на любом диске или в любом каталоге. Например, логическое имя ABC EXE может указывать на каталог исполняемых программ для приложения ABC, а ABC TEMP – на каталог временных файлов для того же приложения, и этот каталог может находиться на том же диске и в той же структуре каталогов, что и ABC EXE, или где-то на другом диске (и в другой структуре каталогов). Подобно Unix, VMS определяет несколько стандартных каналов ввода и вывода, к которым осуществляется доступ через логические имена SYS$INPUT, SYS$OUTPUT, SYS$ERROR и SYS$COMMAND. Логические имена не имеют прямого эквивалента в операционных системах POSIX. Они напоминают переменные среды Unix, за исключением того, что они расширяются файловой системой, а не командной оболочкой или прикладной программой. Они должны быть определены перед использованием, поэтому часто многие логические имена определяются в системном загрузочном файле, а также в файлах команд входа пользователя. В VMS логические имена могут ссылаться на другие логические имена (до предопределенного лимита вложенности в 10) и могут содержать списки имен для поиска существующего имени файла. Некоторые часто используемые логические имена:
$ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[username.] would allow HOME:[DIR]FILE to be used. More common are simple logicals which point to specific directories associated with some application software which may be located in on any disk or any directory. Hence logical ABC EXE may point to a directory of executable programs for application ABC and ABC TEMP may point to a directory of temporary files for that same application and this directory may be on the same disk and in the same directory tree as ABC EXE or could be somewhere on another disk (and in a different directory tree). In a manner similar to Unix, VMS defines several standard input and output channels which are accessed through the logical names SYS$INPUT, SYS$OUTPUT, SYS$ERROR and SYS$COMMAND. Logical names do not have a close equivalent in POSIX operating systems. They resemble Unix environment variables, except they are expanded by the file system, instead of the command shell or application program. They must be defined before use, so it is common for many logical names to be defined in the system startup command file, as well as user login command files. In VMS, logical names may reference other logical names (up to a predefined nesting limit of 10), and may contain lists of names to search for an existing filename. Some frequently referenced logical names are:
logical name meaningSYS$INPUT standard input used interactively, this represents the terminal keyboard. Used in a batch file, it reads batch file lines not preceded with a $ symbol, or specified as an input deck using the DECK command. SYS$OUTPUT standard output it will output to the terminal display or the batch log file depending on whether the process is interactive or not. SYS$ERROR standard error it will output to the terminal display or the batch error log file depending on whether the process is interactive or not. SYS$COMMAND source of batch file commands. It will read from the terminal or the SYS$INPUT stream depending on whether the process is interactive or not. TT the terminal associated with the processSYS$PRINT the default printer or print queueSYS$LOGIN home directory for each userSYS$SCRATCH temporary folder, directory for temporary filesSYS$SYSTEM directory containing most system programs and a few vital data files, such as the system authorization file (accounts and passwords)SYS$SHARE shared runtime libraries, executables, etc. SYS$LIBRARY system and added libraries
The closest non DEC operating system to support the concept of logical names is AmigaOS, through the ASSIGN command. AmigaOS's disk operating system, AmigaDOS, which is a port of TRIPOS, bears some resemblance to DEC operating systems. For example, physical device names follow a pattern like DF0: for the first floppy disk, CDROM2: for the 3rd CD ROM drive, etc. However, since the system can boot from any attached drive, the operating system creates the SYS: assignment to automatically reference the boot device used. Other assignments, LIBS:, PREFS:, C:, S:, et al. are also made, themselves referenced off SYS:. Users are, of course, allowed to create and destroy their own assignments too.
логическое имя | значение
---|---
SYS$INPUT | стандартный ввод – используется в интерактивном режиме, представляет собой терминальную клавиатуру. В пакетном файле он читает строки пакетного файла, не начинающиеся с символа "$", или указанные как входной набор с помощью команды DECK.
SYS$OUTPUT | стандартный вывод – он выводит данные на дисплей терминала или в пакетный лог-файл, в зависимости от того, является ли процесс интерактивным или нет.
SYS$ERROR | стандартный канал ошибок – он выводит данные на дисплей терминала или в лог-файл ошибок пакета, в зависимости от того, является ли процесс интерактивным или нет.
SYS$COMMAND | источник команд для пакетных файлов. Он читает данные с терминала или из потока SYS$INPUT, в зависимости от того, является ли процесс интерактивным или нет.
TT | терминал, связанный с процессом
SYS$PRINT | принтер по умолчанию или очередь печати
SYS$LOGIN | домашний каталог для каждого пользователя
SYS$SCRATCH | временная папка, каталог для временных файлов
SYS$SYSTEM | каталог, содержащий большинство системных программ и несколько важных файлов данных, таких как файл авторизации системы (учетные записи и пароли)
SYS$SHARE | общие библиотеки времени выполнения, исполняемые файлы и т.д.
SYS$LIBRARY | системные и добавленные библиотеки
$ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[username.] would allow HOME:[DIR]FILE to be used. More common are simple logicals which point to specific directories associated with some application software which may be located in on any disk or any directory. Hence logical ABC EXE may point to a directory of executable programs for application ABC and ABC TEMP may point to a directory of temporary files for that same application and this directory may be on the same disk and in the same directory tree as ABC EXE or could be somewhere on another disk (and in a different directory tree). In a manner similar to Unix, VMS defines several standard input and output channels which are accessed through the logical names SYS$INPUT, SYS$OUTPUT, SYS$ERROR and SYS$COMMAND. Logical names do not have a close equivalent in POSIX operating systems. They resemble Unix environment variables, except they are expanded by the file system, instead of the command shell or application program. They must be defined before use, so it is common for many logical names to be defined in the system startup command file, as well as user login command files. In VMS, logical names may reference other logical names (up to a predefined nesting limit of 10), and may contain lists of names to search for an existing filename. Some frequently referenced logical names are:
logical name meaningSYS$INPUT standard input used interactively, this represents the terminal keyboard. Used in a batch file, it reads batch file lines not preceded with a $ symbol, or specified as an input deck using the DECK command. SYS$OUTPUT standard output it will output to the terminal display or the batch log file depending on whether the process is interactive or not. SYS$ERROR standard error it will output to the terminal display or the batch error log file depending on whether the process is interactive or not. SYS$COMMAND source of batch file commands. It will read from the terminal or the SYS$INPUT stream depending on whether the process is interactive or not. TT the terminal associated with the processSYS$PRINT the default printer or print queueSYS$LOGIN home directory for each userSYS$SCRATCH temporary folder, directory for temporary filesSYS$SYSTEM directory containing most system programs and a few vital data files, such as the system authorization file (accounts and passwords)SYS$SHARE shared runtime libraries, executables, etc. SYS$LIBRARY system and added libraries
The closest non DEC operating system to support the concept of logical names is AmigaOS, through the ASSIGN command. AmigaOS's disk operating system, AmigaDOS, which is a port of TRIPOS, bears some resemblance to DEC operating systems. For example, physical device names follow a pattern like DF0: for the first floppy disk, CDROM2: for the 3rd CD ROM drive, etc. However, since the system can boot from any attached drive, the operating system creates the SYS: assignment to automatically reference the boot device used. Other assignments, LIBS:, PREFS:, C:, S:, et al. are also made, themselves referenced off SYS:. Users are, of course, allowed to create and destroy their own assignments too.
Ближайшей операционной системой, не относящейся к DEC, поддерживающей концепцию логических имен, является AmigaOS, через команду ASSIGN. Дисковая операционная система AmigaOS, AmigaDOS, являющаяся портом TRIPOS, имеет некоторое сходство с операционными системами DEC. Например, имена физических устройств следуют шаблону, такому как DF0: для первого дисковода, CDROM2: для третьего CD-ROM-привода и т.д. Однако, поскольку система может загружаться с любого подключенного диска, операционная система создает присвоение SYS: для автоматической ссылки на используемое загрузочное устройство. Другие присвоения, LIBS:, PREFS:, C:, S: и т.д., также выполняются и сами ссылаются на SYS:. Пользователи, конечно, могут создавать и удалять свои собственные присвоения.
$ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[username.] would allow HOME:[DIR]FILE to be used. More common are simple logicals which point to specific directories associated with some application software which may be located in on any disk or any directory. Hence logical ABC EXE may point to a directory of executable programs for application ABC and ABC TEMP may point to a directory of temporary files for that same application and this directory may be on the same disk and in the same directory tree as ABC EXE or could be somewhere on another disk (and in a different directory tree). In a manner similar to Unix, VMS defines several standard input and output channels which are accessed through the logical names SYS$INPUT, SYS$OUTPUT, SYS$ERROR and SYS$COMMAND. Logical names do not have a close equivalent in POSIX operating systems. They resemble Unix environment variables, except they are expanded by the file system, instead of the command shell or application program. They must be defined before use, so it is common for many logical names to be defined in the system startup command file, as well as user login command files. In VMS, logical names may reference other logical names (up to a predefined nesting limit of 10), and may contain lists of names to search for an existing filename. Some frequently referenced logical names are:
logical name meaningSYS$INPUT standard input used interactively, this represents the terminal keyboard. Used in a batch file, it reads batch file lines not preceded with a $ symbol, or specified as an input deck using the DECK command. SYS$OUTPUT standard output it will output to the terminal display or the batch log file depending on whether the process is interactive or not. SYS$ERROR standard error it will output to the terminal display or the batch error log file depending on whether the process is interactive or not. SYS$COMMAND source of batch file commands. It will read from the terminal or the SYS$INPUT stream depending on whether the process is interactive or not. TT the terminal associated with the processSYS$PRINT the default printer or print queueSYS$LOGIN home directory for each userSYS$SCRATCH temporary folder, directory for temporary filesSYS$SYSTEM directory containing most system programs and a few vital data files, such as the system authorization file (accounts and passwords)SYS$SHARE shared runtime libraries, executables, etc. SYS$LIBRARY system and added libraries
The closest non DEC operating system to support the concept of logical names is AmigaOS, through the ASSIGN command. AmigaOS's disk operating system, AmigaDOS, which is a port of TRIPOS, bears some resemblance to DEC operating systems. For example, physical device names follow a pattern like DF0: for the first floppy disk, CDROM2: for the 3rd CD ROM drive, etc. However, since the system can boot from any attached drive, the operating system creates the SYS: assignment to automatically reference the boot device used. Other assignments, LIBS:, PREFS:, C:, S:, et al. are also made, themselves referenced off SYS:. Users are, of course, allowed to create and destroy their own assignments too.
Физическая структура: структура на диске
На уровне диска ODS представляет файловую систему как массив блоков, где блок состоит из 512 последовательных байт на одном физическом диске (томе). Дисковые блоки выделяются кластерами (первоначально 3 последовательных блока, но позднее их количество увеличивалось с ростом размеров дисков). В идеале файл на диске должен быть полностью непрерывным, то есть блоки, содержащие файл, должны быть последовательными, однако фрагментация диска иногда требует размещения файла в несмежных кластерах, при этом фрагменты называются экстентами. Диски могут объединяться в наборы томов, и файлы могут храниться в любом месте этого набора дисков, но использование наборов томов сократилось с увеличением размеров дисков, поскольку управление одним физическим диском проще. Каждый файл на диске Files 11 (или в наборе томов) имеет уникальный идентификатор файла (FID), состоящий из трех чисел: номера файла (NUM), номера последовательности файла (SEQ) и относительного номера тома (RVN). NUM указывает местоположение метаданных файла в файле INDEXF.SYS (см. ниже); SEQ – это номер поколения, который увеличивается при удалении файла и создании нового файла, использующего ту же запись в INDEXF.SYS (чтобы избежать случайного обращения висячих ссылок на старый файл к новому); а RVN указывает номер тома, на котором хранится файл при использовании набора томов.
Справочники
Структурная поддержка ODS-тома обеспечивается файлом каталога — специальным файлом, содержащим список имен файлов, номеров версий файлов и связанных с ними FID, аналогично каталогам VSAM в MVS и каталогам в файловых системах Unix и NTFS. В корне структуры каталога находится главный каталог файлов (MFD), корневой каталог, который содержит (непосредственно или косвенно) каждый файл на томе. На этой диаграмме показан пример каталога, содержащего 3 файла, и способ сопоставления каждого имени файла с записью INDEXF.SYS (каждая запись INDEXF содержит больше информации; здесь показаны только первые несколько элементов).
Другие файлы
Файл битмапа хранения: BITMAP. SYS
Файл бит-карты отвечает за хранение информации об используемом и доступном пространстве на томе. Он содержит блок управления хранилищем (SCB), который включает сводную информацию, подробно описывающую ?, и битмап – массив битов, указывающий, свободен ли кластер блоков на диске или выделен. В ранних версиях VMS кластер состоял из 3 блоков, но по мере увеличения размеров дисков увеличивался и размер кластера. Файл плохих блоков: BADBLK. SYS
Файл плохих блоков содержит информацию обо всех известных поврежденных блоках на физическом томе. Его назначение – предотвратить выделение этих блоков системе для файлов. Этот файл использовался чаще в ранние годы, когда диски обычно производились с большим количеством дефектов на поверхности. Файл списка наборов томов: VOLSET. SYS
Список наборов томов находится на первом томе набора томов и содержит список меток всех томов в наборе, а также имя набора томов. Файл продолжения: CONTIN. SYS
Когда файл в многотомном наборе пересекает границу двух составляющих томов, файл продолжения используется в качестве заголовочного файла продолжения и описывает том, где находится остальная часть файла. Файл квот: QUOTA. SYS
Файл квот содержит информацию об использовании дискового пространства каждой UIC на томе. Он содержит запись для каждой UIC с выделенным ей пространством на томе, а также информацию о том, сколько пространства использует эта UIC. ПРИМЕЧАНИЕ: Функция DISK QUOTA является необязательной, и файл будет существовать только в том случае, если эта функция была включена. Профиль безопасности тома: SECURITY. SYS
Профиль безопасности тома содержит UIC-владельца тома, маску защиты тома и его список контроля доступа. Таблица разделов GUID: GPT. SYS
Этот файл перекрывает и защищает структуры дисков MBR (Master Boot Record) и GPT (GUID Partitioning Table), используемые для и поддерживаемые прошивкой, соответствующей спецификации Extensible Firmware Interface. Этот файл создается по умолчанию во время инициализации диска OpenVMS I64 и может быть создан дополнительно (с INITIALIZE/GPT) на OpenVMS Alpha.
The bitmap file is responsible for storing information regarding used and available space on a volume. It contains the storage control block (SCB), which includes summary information detailing ? ? ?, and the bitmap, an array of bits to indicate if a cluster of blocks on the disk is free or allocated. In early versions of VMS the cluster comprised 3 blocks but as disk sizes have increased, so has the cluster size. Bad block file: BADBLK. SYS
The bad block file contains all of the known bad blocks on the physical volume. The purpose is to prevent the system from allocating them to files. This file was used more in the early days when disks were typically manufactured with more bad patches on the surface. Volume set list file: VOLSET. SYS
The volume set list is located on volume 1 of a volume set, and contains a list of labels of all volumes in the set, and the set's volume name. Continuation file: CONTIN. SYS
When a file on a multi volume set crosses the boundary of two constituent volumes, the continuation file is used as its extension header and describes the volume where the rest of the file can be found. Quota file: QUOTA. SYS
The quota file contains information of each UIC's disk space usage on a volume. It contains a record for each UIC with space allocated to it on a volume, along with information on how much space is being used by that UIC. NOTE: The DISK QUOTA feature is optional and the file will only exist if the feature was ever enabled. Volume security profile: SECURITY. SYS
The volume security profile contains the volume's owner UIC, the volume protection mask, and its access control list. GUID Partitioning Table: GPT. SYS
This file overlays and protects the MBR (Master Boot Record) and GPT (GUID Partitioning Table) disk structures utilized for and by the Extensible Firmware Interface compliant firmware. This file is created by default during OpenVMS I64 disk initialization, and is optionally created (with INITIALIZE/GPT) on OpenVMS Alpha.