Files-11

Files-11은 디지털 이큅먼트 코퍼레이션의 RSX-11, IAS, OpenVMS 운영체제에서 사용하는 파일 시스템이다. 이 파일 시스템은 레코드 지향 입출력, 원격 네트워크 접근, 파일 버전 관리를 지원한다. 초기의 ODS-1 계층은 평면 파일 시스템이며, ODS-2 버전은 접근 제어 목록을 지원하는 계층적 파일 시스템이다.

Files-11은 TOPS-20이나 RSTS/E와 같은 이전 디지털 이큅먼트 코퍼레이션 운영체제에서 사용되던 파일 시스템과 유사하지만, 훨씬 더 발전된 형태이다.

역사

Files-11의 초기 ODS-1 버전은 사용자 계정당 하나의 디렉토리를 할당하는 방식에 기반한 기초적인 비계층적 디렉토리 구조를 제공했다. 각 사용자 계정은 [프로젝트,프로그래머]라는 두 개의 숫자로 표시되었으며 하나의 연관된 디렉토리를 가졌다. 이는 RSTS/E 파일 시스템과 유사했다. 프로그램 실행 파일이나 OS 자체와 같은 특수 시스템 파일들은 예약된 시스템 계정의 디렉토리에 저장되었다.

이 방식은 영구 저장 용량이 제한적인 PDP-11 시스템에는 적합했지만, 훨씬 더 큰 하드 디스크를 가진 VAX 시스템은 더 유연한 파일 저장 방식이 필요했다. 이에 따라 VMS에 도입된 Files-11의 ODS-2 버전은 특히 계층적 디렉토리 레이아웃을 제공하게 되었다.

개요

"Files-11"은 온디스크 구조(ODS) 레벨 1부터 5까지 알려진 다섯 개의 개별 파일 시스템을 일컫는 일반적인 용어이다.

ODS-1은 RSX-11 OS에서 사용하는 평면 파일 시스템이다. 구형 VMS 시스템에서 RSX 호환성을 위해 지원되었으나, VMS 자체를 지원하는 데 사용된 적은 없다. 이 시스템은 대체로 ODS-2와 ODS-5로 대체되었다.

ODS-2는 원래의 VMS 파일 시스템이다. ODS-1과 비교하여 계층적 파일 시스템이다.

ODS 레벨 명칭으로 자주 언급되지는 않지만, ODS-3와 ODS-4는 각각 CD-ROM ISO 9660 및 하이 시에라 포맷 파일 시스템에 대한 Files-11 지원이다.

ODS-5는 알파, IA-64, X86-64 플랫폼에서 사용할 수 있는 ODS-2의 확장 버전이다. 이 버전은 대소문자 유지 파일 이름(비 ASCII 문자 포함)에 대한 지원을 추가하고 계층적 디렉토리 지원을 개선했다. 본래 "NT Affinity" 프로젝트의 일환으로 마이크로소프트 윈도우나 기타 비 VMS 시스템에 파일 서비스를 제공하기 위해 의도되었으나, 사용자 디스크와 인터넷 서버에서도 사용된다.

디렉토리 레이아웃

전형적인 Files-11 디렉토리 계층: 모든 파일은 마스터 파일 디렉토리를 루트로 하며, File2는 두 개의 디렉토리에 속해 있다

Files-11 파일 시스템의 모든 파일과 디렉토리는 하나 이상의 상위 디렉토리 내에 포함되며, 결국 루트 디렉토리인 마스터 파일 디렉토리(아래 참조) 아래에 위치한다. 따라서 파일 시스템은 방향성 비순환 그래프(DAG) 구조로 조직화된다.

이 예시(오른쪽 참조)에서 File 2는 Dir 2와 Dir 3 모두에 디렉토리 항목을 가지고 있다. 즉, 동시에 두 디렉토리 "내부"에 존재한다. 한 디렉토리에서 제거되더라도 다른 디렉토리에서 제거될 때까지는 여전히 존재한다. 이는 유닉스의 하드 링크 개념과 유사하지만, 하드 링크가 설정되지 않은 디스크(ODS-5 디스크에서 하드 링크가 활성화된 경우에만 사용 가능)에서는 실제로 파일이 삭제되지 않도록 주의해야 한다.

디스크 구성 및 명명

운영 중인 VMS 시스템은 하나 이상의 온라인 디스크에 접근할 수 있으며, 각 디스크는 완전하고 독립적인 파일 시스템을 포함한다. 이는 로컬 저장소이거나 클러스터의 경우 원격 시스템과 공유되는 저장소이다.

그림 1: 샘플 OpenVMS 클러스터 디스크 구성

OpenVMS 클러스터 구성에서 비공개 디스크가 아닌 디스크들은 클러스터의 모든 노드 간에 공유된다(그림 1 참조). 이 구성에서 두 개의 시스템 디스크는 네트워크를 통해 두 노드 모두에서 접근할 수 있지만, 비공개 디스크는 공유되지 않으며 해당 머신의 특정 사용자나 프로세스만 사용하도록 마운트된다. 클러스터 전반에 걸친 파일 접근은 파일 시스템의 필수 구성 요소인 OpenVMS 분산 잠금 관리자에 의해 관리된다.

여러 디스크를 결합하여 하나의 큰 논리적 디스크인 볼륨 세트를 형성할 수 있다. 디스크는 데이터 보안이나 더 빠른 읽기 성능을 위해 섀도우 세트로 자동 복제될 수도 있다.

디스크는 물리적 이름이나(더 흔하게는) 사용자 정의 논리적 이름으로 식별된다. 예를 들어, 부팅 장치(시스템 디스크)는 물리적 이름 $3$DKA100을 가질 수 있지만, 일반적으로 논리적 이름 SYS$SYSDEVICE로 참조된다.

각 디스크의 파일 시스템(ODS-1 제외)은 계층적이다. 완전히 지정된 파일 이름은 노드 이름, 사용자 이름 및 암호, 장치 이름, 디렉토리, 파일 이름, 파일 형식, 버전 번호로 구성되며 형식은 다음과 같다.

NODE"accountname password"::device:[directory.subdirectory]filename.type;ver

예를 들어, [DIR1.DIR2.DIR3]FILE.EXT는 현재 기본 디스크의 [DIR1.DIR2.DIR3] 디렉토리에 있는 FILE.EXT의 최신 버전을 참조한다.

DIR1은 마스터 파일 디렉토리(MFD) 또는 루트 디렉토리의 하위 디렉토리이며, DIR2는 DIR1의 하위 디렉토리이다. 디스크의 MFD는 [000000]으로 식별된다.

파일 이름의 대부분은 생략할 수 있으며, 이 경우 현재 기본 파일 사양에서 가져온다. 기본 파일 사양은 노드, 장치 이름 및 디렉토리에 대한 기본값 세트를 제공함으로써 다른 운영체제의 "현재 디렉토리" 개념을 대체한다. 모든 프로세스는 디스크 이름과 디렉토리를 포함하는 기본 파일 사양을 가지며, 대부분의 VMS 파일 시스템 서브루틴은 파일 형식을 포함할 수 있는 기본 파일 사양을 허용한다. 예를 들어 TYPE 명령은 파일 형식의 기본값으로 ".LIS"를 사용하므로, 확장자 없이 TYPE F를 입력하면 F.LIS 파일을 열려고 시도한다.

모든 파일에는 버전 번호가 있으며, 동일한 파일 이름의 다른 버전이 없으면 1이 기본값이다(그렇지 않으면 가장 큰 버전보다 1이 높은 값이 부여됨). 파일을 저장할 때마다 기존 버전을 덮어쓰는 대신, 동일한 이름에 버전 번호가 증가된 새 파일이 생성된다. 이전 버전은 DELETE 또는 PURGE 명령으로 명시적으로 삭제할 수 있거나, 파일의 버전 제한(SET FILE/VERSION_LIMIT으로 설정)에 도달하면 자동으로 삭제되도록 선택할 수 있다. 따라서 이전 버전은 덮어쓰이지 않고 디스크에 보관되어 언제든지 검색될 수 있다. 버전 번호의 구조적 제한은 32767이다. 버전 관리 동작은 원치 않을 경우 쉽게 재정의할 수 있다. 특히 데이터베이스처럼 직접 업데이트되는 파일은 명시적으로 프로그래밍하지 않는 한 새 버전을 생성하지 않는다.

ODS-2는 8단계의 하위 디렉토리로 제한되며, 최대 39.39자(파일 이름 39자, 확장자 39자)의 대문자 영숫자(및 밑줄, 대시, 달러 기호)만 사용할 수 있다. ODS-5는 문자 집합을 소문자와 대부분의 다른 인쇄 가능한 ASCII 문자로 확장하고, ISO Latin-1 및 유니코드 문자를 허용하며, 최대 파일 이름 길이를 늘리고 하위 디렉토리 수준을 무제한으로 허용한다. ODS-2에서 허용되지 않는 문자를 사용하는 ODS-5 파일에 대해 경로명을 구성할 때는 하위 호환성을 유지하기 위해 특수한 "^" 구문이 사용된다. 예를 들어 ODS-5 디스크의 "file.tar.gz;1" 파일은 "file^.tar.gz"로 참조된다. 여기서 파일의 이름은 "file.tar"이고 확장자는 ".gz"이다.

파일 보안: 보호 및 ACL

접근 제어는 사용자 식별 코드(UIC)에 기반한다. UIC에는 사용자 번호와 그룹 번호가 포함되며, 후자는 프로젝트 번호라고도 한다. 로그인한 사용자는 UIC를 가지며, 파일은 UIC에 의해 소유된다.

RSX-11 및 IAS

RSX-11 및 IAS에서 접근 제어는 네 가지 권한 그룹에 의해 관리된다:

시스템 소유자 그룹 월드
RWED RWED RWED RWED
파일 보호 표시 형식;
부여되지 않은 권한은 표시되지 않음
  • 시스템
  • 소유자
  • 그룹
  • 월드

그리고 네 가지 권한 비트:

  • 읽기 (Read)
  • 쓰기 (Write)
  • 확장 (Extend)
  • 삭제 (Delete)

"시스템" 접근은 UIC 그룹 번호가 팔진법 10(십진법 8) 이하인 모든 사용자에게 적용되며, "소유자"와 "그룹"은 파일 소유자와 해당 사용자의 사용자 그룹에 적용되고, "월드"는 다른 모든 사용자에게 적용된다.

VMS

VMS에서 네 가지 권한 비트는 다음과 같다.

  • 읽기
  • 쓰기
  • 실행 (Execute)
  • 삭제

확장 권한 대신 실행 권한이 있다.

"시스템" 접근은 UIC 그룹 번호가 시스템 매개변수 MAXSYSGROUP(보통 8 또는 팔진법 10) 이하인 모든 사용자에게 적용된다. 다섯 번째 권한 비트인 "제어(Control)"도 존재하는데, 이는 보호와 같은 파일 메타데이터를 변경하기 위한 접근을 결정하는 데 사용된다. 이 그룹은 명시적으로 설정할 수 없으며, 항상 시스템과 소유자에 대해 설정되고 그룹이나 월드에 대해서는 절대 설정되지 않는다.

파일 보안은 사용자가 이를 보유할 경우 접근 제어를 무시할 수 있게 하는 네 가지 시스템 특권에 의해서도 영향을 받는다.

  • BYPASS: 사용자는 파일 보호와 관계없이 모든 파일에 대해 암묵적으로 RWED 접근 권한을 가짐.
  • READALL: 사용자는 모든 파일에 대해 암묵적으로 R 접근 권한을 가짐.
  • SYSPRV: 사용자는 시스템 보호에 따라 파일에 접근할 수 있음.
  • GRPPRV: 사용자의 UIC 그룹이 파일의 그룹과 일치하면 시스템 보호에 따라 파일에 접근할 수 있음.

VMS 4.0은 ACL 기반 접근 제어를 추가했다. ACL을 사용하면 사용자 또는 그룹별로 추가적인 특권을 할당할 수 있다. 예를 들어, 웹 서버의 UIC에 특정 디렉토리의 모든 파일에 대한 읽기 접근 권한을 부여할 수 있다. ACL은 상속 가능으로 표시할 수 있으며, 이 경우 디렉토리 파일의 ACL이 그 아래의 모든 파일에 적용된다. ACL은 EDIT/ACL 명령을 사용하여 수정하며 식별자/접근 쌍의 형태를 취한다. 예를 들어 다음 ACL 항목은

(IDENTIFIER=HTTP$SERVER,ACCESS=READ+EXECUTE)

사용자 HTTP$SERVER가 파일을 읽고 실행하도록 허용한다.

논리적 이름

논리적 이름은 디스크, 디렉토리 또는 파일을 참조하거나 기타 프로그램별 정보를 포함할 수 있는 시스템 변수이다. 예를 들어, 논리적 SYS$SYSDEVICE는 시스템의 부팅 장치를 포함한다. 논리적 이름은 일반적으로 단일 디렉토리나 디스크를 참조한다(예: 사용자의 로그인(홈) 디렉토리인 SYS$LOGIN:). 이러한 논리적 이름은 실제 디스크 이름으로 사용할 수 없다(SYS$LOGIN:[DIR]FILE은 유효한 파일 사양이 아님). 그러나 DEFINE/TRANSLATION=CONCEALED로 정의된 은폐(concealed) 논리적 이름은 그런 방식으로 사용할 수 있다. 이러한 루트 디렉토리는 디렉토리 사양 끝에 "."을 붙여 정의되므로

$ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[username.]

명령은 HOME:[DIR]FILE을 사용할 수 있게 한다. 더 흔한 것은 어떤 디스크나 디렉토리에 위치할 수 있는 응용 소프트웨어와 관련된 특정 디렉토리를 가리키는 단순한 논리적 이름이다. 따라서 논리적 이름 ABC_EXE는 응용 프로그램 ABC의 실행 프로그램 디렉토리를 가리킬 수 있고, ABC_TEMP는 동일한 응용 프로그램의 임시 파일 디렉토리를 가리킬 수 있다. 이 디렉토리는 ABC_EXE와 같은 디스크, 같은 디렉토리 트리에 있을 수도 있고, 다른 디스크(다른 디렉토리 트리)에 있을 수도 있다.

유닉스와 유사한 방식으로, VMS는 논리적 이름 SYS$INPUT, SYS$OUTPUT, SYS$ERROR 및 SYS$COMMAND를 통해 접근되는 여러 표준 입력 및 출력 채널을 정의한다.

논리적 이름은 POSIX 운영체제에 대응하는 유사한 것이 거의 없다. 이는 유닉스 환경 변수와 비슷하지만, 명령 셸이나 응용 프로그램 대신 파일 시스템에 의해 확장된다는 점이 다르다. 사용하기 전에 정의되어야 하므로 시스템 시작 명령 파일 및 사용자 로그인 명령 파일에 많은 논리적 이름을 정의하는 것이 일반적이다. VMS에서 논리적 이름은 다른 논리적 이름을 참조할 수 있으며(최대 10단계의 중첩 제한), 기존 파일 이름을 검색하기 위한 이름 목록을 포함할 수 있다. 자주 참조되는 논리적 이름은 다음과 같다.

논리적 이름의미
SYS$INPUT표준 입력 - 대화식으로 사용될 경우 터미널 키보드를 나타낸다. 배치 파일에서 사용될 경우 $ 기호가 앞에 오지 않거나 DECK 명령을 사용하여 입력 데크로 지정된 배치 파일 행을 읽는다.
SYS$OUTPUT표준 출력 - 프로세스의 대화식 여부에 따라 터미널 디스플레이나 배치 로그 파일로 출력한다.
SYS$ERROR표준 오류 - 프로세스의 대화식 여부에 따라 터미널 디스플레이나 배치 오류 로그 파일로 출력한다.
SYS$COMMAND배치 파일 명령의 소스. 프로세스의 대화식 여부에 따라 터미널이나 SYS$INPUT 스트림에서 읽는다.
TT프로세스와 관련된 터미널
SYS$PRINT기본 프린터 또는 인쇄 대기열
SYS$LOGIN각 사용자의 홈 디렉토리
SYS$SCRATCH임시 폴더, 임시 파일을 위한 디렉토리
SYS$SYSTEM대부분의 시스템 프로그램과 시스템 권한 부여 파일(계정 및 암호) 같은 몇몇 필수 데이터 파일을 포함하는 디렉토리
SYS$SHARE공유 런타임 라이브러리, 실행 파일 등
SYS$LIBRARY시스템 및 추가 라이브러리

논리적 이름 개념을 지원하는 가장 가까운 비 DEC 운영체제는 ASSIGN 명령을 사용하는 아미가OS이다. 트라이포스(TRIPOS)의 포트인 아미가도스는 DEC 운영체제와 어느 정도 유사성을 띤다. 예를 들어 물리적 장치 이름은 첫 번째 플로피 디스크의 경우 DF0:, 세 번째 CD-ROM 드라이브의 경우 CDROM2:와 같은 패턴을 따른다. 그러나 시스템은 연결된 모든 드라이브에서 부팅할 수 있으므로, 운영체제는 부팅 장치를 자동으로 참조하기 위해 SYS: 할당을 생성한다. LIBS:, PREFS:, C:, S: 등 다른 할당들도 생성되며, 이들 역시 SYS:를 참조한다. 물론 사용자는 자신만의 할당을 생성하거나 삭제할 수 있다.

레코드 지향 입출력: 레코드 관리 서비스

레코드 관리 서비스는 VMS 운영체제의 구조화된 입출력 계층이다. RMS는 레코드 기반 및 인덱스된 데이터베이스 파일과 같은 구조화된 파일을 관리하기 위한 포괄적인 프로그램 지원을 제공한다. RMS와 결합된 VMS 파일 시스템은 파일 접근을 단순한 바이트 스트림 이상으로 확장하며, 다양한 풍부한 파일 형식에 대한 OS 수준의 지원을 가능하게 한다. VMS 파일 시스템의 각 파일은 일련의 레코드를 포함하는 데이터베이스로 간주할 수 있으며, 각 레코드는 하나 이상의 개별 필드를 가진다. 예를 들어 텍스트 파일은 줄 바꿈 문자로 구분된 레코드(줄)의 목록이다. RMS는 레코드 지향 파일 시스템의 한 예이다.

RMS에 의해 정의된 네 가지 레코드 형식은 다음과 같다.

파일에서 기존 레코드를 검색하기 위한 네 가지 레코드 접근 방식은 다음과 같다.

물리적 레이아웃: 온디스크 구조

디스크 수준에서 ODS는 파일 시스템을 블록의 배열로 나타내며, 블록은 하나의 물리적 디스크(볼륨)에서 512개의 연속된 바이트이다. 디스크 블록은 클러스터(원래 3개의 연속 블록이었으나 디스크 크기가 커짐에 따라 증가함) 단위로 할당된다. 디스크상의 파일은 이상적으로는 완전히 연속적이어야 한다. 즉, 파일을 포함하는 블록들은 순차적이어야 하지만, 디스크 단편화로 인해 때때로 파일이 불연속적인 클러스터에 위치해야 할 때가 있으며, 이 경우 조각들을 익스텐트라고 부른다. 디스크들은 다른 디스크와 결합하여 볼륨 세트를 형성하고 해당 볼륨 세트 전체에 걸쳐 파일이 저장될 수 있지만, 디스크 크기가 커짐에 따라 단일 물리적 디스크 관리자가 더 단순하기 때문에 볼륨 세트의 사용은 줄어들었다.

Files-11 디스크(또는 볼륨 세트)의 모든 파일은 고유한 파일 식별자(FID)를 가지며, 이는 파일 번호(NUM), 파일 시퀀스 번호(SEQ), 상대 볼륨 번호(RVN)라는 세 개의 숫자로 구성된다. NUM은 INDEXF.SYS 파일(아래 참조) 내에서 해당 파일의 메타데이터가 위치한 곳을 나타낸다. SEQ는 파일이 삭제되고 동일한 INDEXF.SYS 항목을 재사용하여 다른 파일이 생성될 때 증가하는 생성 번호이다(따라서 이전 파일에 대한 유령 참조가 실수로 새 파일을 가리키지 않도록 함). RVN은 볼륨 세트를 사용할 때 파일이 저장된 볼륨 번호를 나타낸다.

디렉토리

ODS 볼륨의 구조적 지원은 디렉토리 파일에 의해 제공된다. 이는 파일 이름, 파일 버전 번호 및 관련 FID의 목록을 포함하는 특수 파일로, MVS의 VSAM 카탈로그나 유닉스 파일 시스템 및 NTFS의 디렉토리와 유사하다. 디렉토리 구조의 루트에는 볼륨의 모든 파일을 (직간접적으로) 포함하는 루트 디렉토리인 마스터 파일 디렉토리(MFD)가 있다.


이 다이어그램은 3개의 파일을 포함하는 예시 디렉토리와 각 파일 이름이 INDEXF.SYS 항목에 매핑되는 방식을 보여준다(각 INDEXF 항목은 더 많은 정보를 포함하지만 여기서는 처음 몇 가지만 표시됨).

마스터 파일 디렉토리

ODS 파일 시스템의 최상위 수준에는 마스터 파일 디렉토리(MFD)가 있으며, 여기에는 모든 최상위 디렉토리 파일(자신 포함)과 파일 시스템 정보를 저장하는 데 사용되는 여러 시스템 파일이 포함된다. ODS-1 볼륨에서는 2단계 디렉토리 구조가 사용된다. 각 사용자 식별 코드 (UIC)는 [그룹.사용자] 형식의 사용자 파일 디렉토리(UFD)를 가진다. ODS-2 이상 볼륨에서는 MFD 아래의 디렉토리 레이아웃이 자유 형식이며, 디렉토리 중첩 제한(ODS-2는 8단계, ODS-5는 무제한)을 받는다. 다중 볼륨 세트에서 MFD는 항상 첫 번째 볼륨에 저장되며 모든 볼륨의 하위 디렉토리를 포함한다.

ODS MFD에는 다음 시스템 파일들이 존재한다.

파일 시스템 구현 자체는 이 파일들을 이름으로 참조하지 않고 항상 동일한 값을 가지는 파일 ID로 참조한다는 점에 유의하라. 따라서 INDEXF.SYS는 항상 NUM = 1 및 SEQ = 1인 파일이다.

인덱스 파일: INDEXF.SYS

인덱스 파일은 Files-11 볼륨 세트에 대한 가장 기본적인 정보를 포함한다.

INDEXF.SYS에는 두 가지 구성이 있는데, 전통적인 구성과 GPT.SYS를 가진 디스크에서 사용되는 구성이다.

전통적인 구성에서 블록 1은 부팅 블록이며, 여기에는 VMS 운영체제를 로드하는 데 사용되는 기본 부트스트랩 이미지의 위치가 포함된다. 이것은 항상 디스크의 논리 블록 0에 위치하여 하드웨어 펌웨어가 읽을 수 있게 한다. 이 블록은 비시스템(부팅 불가능) 볼륨에서도 항상 존재한다.

부팅 블록 뒤에는 기본 홈 블록이 있다. 여기에는 볼륨 이름, 인덱스 파일의 나머지 부분을 구성하는 익스텐트의 위치, 볼륨 소유자의 UIC, 볼륨 보호 정보가 포함된다. 볼륨이 분실되거나 손상될 경우 복구할 수 있도록 보조 홈 블록이라고 불리는 추가적인 홈 블록 복사본이 일반적으로 여러 개 존재한다.

GPT.SYS가 있는 디스크에서 GPT.SYS는 부팅 블록(마스터 부트 레코드(MBR))과 동일한 역할을 하며, 기본 홈 블록은 없다. GPT 기반 디스크에 존재하는 모든 홈 블록은 대체 홈 블록이다. 이 구조들은 INDEXF.SYS에 포함되지 않으며 INDEXF.SYS 파일의 블록들은 사용되지 않는다.

인덱스 파일의 나머지 부분은 파일 헤더로 구성되며, 이는 볼륨에 상주하는 파일에 할당된 익스텐트와 소유자 UIC, ACL, 보호 정보와 같은 파일 메타데이터를 설명한다. 각 파일은 하나 이상의 파일 헤더로 설명되며, 파일이 많은 익스텐트를 가질 경우 여러 개가 필요할 수 있다. 파일 헤더는 고정 길이 블록이지만 고정 길이 섹션과 가변 길이 섹션을 모두 포함한다.

가능하다면 헤더의 맵 및 ACL 섹션은 기본 헤더에 완전히 포함된다. 그러나 ACL이 너무 길거나 파일에 너무 많은 익스텐트가 포함된 경우 기본 헤더에 저장할 공간이 부족할 수 있다. 이 경우 오버플로우 정보를 저장하기 위해 확장 헤더가 할당된다.


INDEXF.SYS 헤더의 레이아웃.

파일 헤더는 4개의 오프셋(IDOFFSET, MPOFFSET, ACOFFSET, ROFFSET)으로 시작한다. 고정 길이 헤더 뒤의 영역(맵 및 ACL 영역 등) 크기가 가변적일 수 있기 때문에 이 추가 영역들을 찾기 위해 오프셋이 필요하다. 각 오프셋은 파일 헤더 시작부터 해당 영역 시작까지의 16비트 워드 수이다.

파일에 여러 헤더가 필요한 경우 확장 세그먼트 번호(SEGNUM)가 이 헤더의 시퀀스 번호를 포함하며, INDEXF.SYS의 첫 번째 항목에서 0으로 시작한다.

STRUCLEV는 파일 시스템의 현재 구조 레벨(상위 바이트)과 버전(하위 바이트)을 포함하며, ODS-2는 구조 레벨 2이다. 버전 번호의 증가는 구형 소프트웨어가 무시할 수 있는 하위 호환 변경을 나타내며, 구조 레벨 자체의 변경은 호환되지 않는다.

W_FID(3개의 값인 FID_NUM, FID_SEQ, FID_RVN을 포함하며 각각 파일 번호, 시퀀스 번호, 상대 볼륨 번호에 대응)는 이 파일의 ID를 포함한다. EXT_FID(역시 3개의 값으로 구성)는 다음 확장 헤더의 위치를 보관한다(있는 경우). 이 두 값 모두에서 RVN은 "현재" 볼륨을 나타내기 위해 0으로 지정된다(0은 일반적으로 유효한 RVN이 아님).

FILECHAR는 파일이 처리되거나 구성되는 방식에 영향을 주는 여러 플래그를 포함한다.

ACCMODE는 파일에 접근하기 위해 프로세스가 실행되어야 하는 특권 수준을 설명한다. VMS는 사용자, 관리자(supervisor), exec, 커널이라는 4가지 특권 수준을 정의한다. 읽기, 쓰기, 실행, 삭제의 각 접근 유형은 2비트 정수로 인코딩된다.

FILEPROT는 파일에 대한 임의 접근 제어 정보를 포함한다. 이는 시스템, 소유자, 그룹, 월드라는 4비트씩 4개 그룹으로 나뉜다. 비트 0은 읽기 접근, 1은 쓰기, 2는 실행, 3은 삭제에 대응한다. 비트를 설정하면 특정 그룹의 접근을 거부하고, 비트를 지우면 허용한다.

파일 헤더가 확장 헤더인 경우 BACKLINK는 기본 헤더의 파일 ID를 포함하고, 그렇지 않으면 파일의 기본 항목을 포함하는 디렉토리 파일의 파일 ID를 포함한다.

기타 파일

비트맵 파일은 볼륨의 사용 공간 및 가용 공간에 관한 정보를 저장한다. 여기에는 ???에 대한 요약 정보를 자세히 설명하는 스토리지 제어 블록(SCB)과 디스크의 블록 클러스터가 비어 있는지 또는 할당되었는지 나타내는 비트 배열인 비트맵이 포함된다. 초기 VMS 버전에서는 클러스터가 3개의 블록으로 구성되었으나 디스크 크기가 커짐에 따라 클러스터 크기도 커졌다.
불량 블록 파일은 물리적 볼륨의 모든 알려진 불량 블록을 포함한다. 목적은 시스템이 이를 파일에 할당하지 못하도록 방지하는 것이다. 이 파일은 디스크 표면에 제조 결함이 더 많았던 초기 시절에 더 많이 사용되었다.
볼륨 세트 목록은 볼륨 세트의 볼륨 1에 위치하며 세트 내 모든 볼륨의 레이블 목록과 세트의 볼륨 이름을 포함한다.
다중 볼륨 세트의 파일이 두 구성 볼륨의 경계를 넘을 때, 연속 파일이 확장 헤더로 사용되어 파일의 나머지 부분을 찾을 수 있는 볼륨을 설명한다.
할당량 파일은 볼륨 내 각 UIC의 디스크 공간 사용량 정보를 포함한다. 여기에는 볼륨에 공간이 할당된 각 UIC에 대한 기록과 해당 UIC가 사용 중인 공간에 대한 정보가 들어 있다. 참고: 디스크 할당량 기능은 선택 사항이며 해당 기능이 활성화된 적이 있을 경우에만 파일이 존재한다.
볼륨 보안 프로필은 볼륨의 소유자 UIC, 볼륨 보호 마스크, 접근 제어 목록을 포함한다.
이 파일은 확장 펌웨어 인터페이스 호환 펌웨어에서 사용되는 MBR(마스터 부트 레코드) 및 GPT(GUID 파티션 테이블) 디스크 구조를 덮어쓰고 보호한다. 이 파일은 OpenVMS I64 및 x86-64 디스크 초기화 중에 기본적으로 생성되며, OpenVMS 알파에서는 선택적으로(INITIALIZE/GPT를 사용하여) 생성된다.

같이 보기

각주

  1. ↑ 《RSX-11D User's Guide》 (PDF). 디지털 이큅먼트 코퍼레이션. November 1975. 3.2.8 Volume And File Protection. DEC-11-0XDUA-8-D.
  2. ↑ 《RSX-11M Operator Procedures Manual》 (PDF). 디지털 이큅먼트 코퍼레이션. September 1975. 3.2.1 File Protection. DEC-11-OMOGA-B-D.
  3. ↑ 《IAS System Management Guide》 (PDF). 디지털 이큅먼트 코퍼레이션. May 1990. 6.2.3 Protection. AA-2520F-TC.
  4. ↑ Andrew C. Goldstein (1975년 6월 19일). 《Files-11 On-Disk Structure Specification》 (PDF). 디지털 이큅먼트 코퍼레이션. 3.4.1.7 H.FPRO 2 Bytes File Protection Code.
  5. ↑ “OpenVMS User's Manual” (PDF). 《vmssoftware.com》. VSI. July 2020. Chapter 14, Advanced Programming with DCL. 2021년 4월 9일에 확인함.

더 읽어보기

외부 링크