Files-11

Z Wikipedie, otevřené encyklopedie

Files-11 je souborový systém používaný operačním systémem OpenVMS původně vyvinutý pro operační systém RSX-11 na počítači PDP-11 (odkud pochází název Files-11). Má několik vývojových stupňů označovaných ODS-1ODS-5 (anglicky on-disk structure, level 1-5).

ODS-2 je základní varianta Files-11 pro OpenVMS. Podporuje hierarchické (stromové) struktury adresářů, ochranu pomocí přístupových práv a ACL, záznamově orientované vstupy/výstupy, verzování souborů, sdílení svazků v rámci počítačového clusteru i přístup k souborům z počítačů mimo cluster pomocí sítě DECnet. Jméno souboru může mít 39+39 znaků, včetně znaků dolar, podtržítko a mínus. ODS-2 se stále používá pro systémové disky.

ODS-5 je rozšířená varianta Files-11 navržená pro DEC Pathworks určená pro servery poskytující soubory stanicím s Microsoft Windows a jiným systémům v rámci projektu „NT affinity“. Jméno souboru může mít až 238 bytů (tj. 119 znaků v Unicode). ODS-5 se používá také na uživatelských discích a Internetových serverech.

Historie

Souborový systém Files-11 vychází ze systémů souborů používaných na starších operačních systémech firmy Digital Equipment Corporation, jako například TOPS-20 a RSTS/E, je však mnohem pokročilejší než jeho předchůdci. Jejich návrhářem byl Dave Cutler, který později pracoval na vývoji NTFS ve firmě Microsoft.

V systému RSTS/E je každý uživatelský účet reprezentována dvojicí čísel [projekt,uživatel] a má přiřazen jeden adresář. Systémové soubory a programy jsou uloženy v adresáři rezervovaného systémového účtu. Tato jednoduchá struktura adresářů vyhovovala na počítačích PDP-11, které mají velmi malý diskový prostor; počítače VAX s mnohem většími pevnými disky však vyžadují pružnější způsob ukládání souborů, jakou poskytuje hierarchická struktura adresářů, což je nejdůležitější vylepšení systému ODS-2.

Přehled

  • Files-11 má 5 vývojových stupňů (anglicky level) označovaných on-disk structure úrovně 1 až 5:
  • ODS-1 je nejstarší varianta Files-11 vyvinutá pro OS RSX-11. Umožňuje pracovat s dvěma úrovněmi adresářů a používat jména souborů obsahující nejvýše 9 velkých písmen a číslic, tečku a nejvýše 3 znakovou příponou (formát 9+3). ODS-1 bylo dostupné na VAX/VMS kvůli zpětné kompatibilitě s RSX-11; je překonaný systémy souborů ODS-2 a ODS-5.
  • ODS-2 je standardní systém souborů systému VMS a je nejobvyklejším systémem souborů pro systémové disky (disk, na kterém je nainstalovaný operační systém).
  • I když se označení pomocí ODS úrovně málokdy používá, ODS-3 a ODS-4 je podpora Files-11 pro systémy souborů ISO 9660 a High Sierra Format na CD-ROM.
  • ODS-5 je rozšířená verze ODS-2 dostupná na platformách Alpha a IA-64, která přidává podporu pro jména souborů zachovávající malá a velká písmena s ne-ASCII znaky a vylepšuje podporu hierarchických adresářů. ODS-5 byl původně určen pro servery poskytující soubory stanicím s Microsoft Windows a jiným systémům jako součást projektu „NT affinity“, používá se také na uživatelských discích a Internetových serverech.

Organizace a pojmenování disků

Obr. 1: Ukázka diskové konfigurace clusteru v OpenVMS

Operační systém OpenVMS může používat lokální disky i disková úložiště připojená pomocí rozhraní Fibre Channel sdílená s jinými počítači v síti.

OpenVMS cluster umožňuje sdílení všech disků, které nejsou označeny jako soukromé, všemi uzly v clusteru. Obrázek 1 ukazuje konfiguraci, ve které jsou dva systémové disky přístupné z obou uzlů pomocí sítě; jeden z uzlů má také soukromý (nesdílený) disk. Přístup k souborům v clusteru řídí OpenVMS Distributed Lock Manager, který je nedílnou součástí systému souborů.

Z několika disků lze složit rozsáhlé logické disky nazývané sada svazků (anglicky volume set). Disky mohou být také automaticky sdruženy do stínové sady (anglicky shadow set) pro zvýšení spolehlivosti a rychlejší čtení.

Každý disk je identifikován fyzickým jménem, obvykle bývá identifikován také logickým jménem definovaným uživatelem. Například systémový disk (ze kterého se zavádí operační systém) může mít fyzické jméno $3$DKA100, ale většinou se pro něj používá logické jméno SYS$SYSDEVICE.

Struktura adresářů

Ukázka hierarchie adresářů ve Files-11: společným nadřízeným všech souborů je MFD; soubor File2 je ve dvou adresářích.

Každý diskový svazek se systémem souborů Files-11 obsahuje kompletní a nezávislý systém souborů s vlastní hierarchickou (stromovou) strukturou adresářů. Každý soubor patří do nějakého adresáře a každý adresář s výjimkou hlavního souborového adresáře (kořenový adresář, viz dále) má svůj nadřízený adresář, čímž vzniká struktura orientovaného acyklického grafu.

Na obrázku je vidět, že soubor Soubor 2 má adresářovou položku jak v adresáři Dir 2, tak v Dir 3, tj. je v obou adresářích současně. Pokud bude odstraněn z jednoho adresáře, bude stále dostupný z druhého, dokud nebude odstraněn i z něj. Podobným konceptem jsou pevné odkazy v UNIXu. V OpenVMS je třeba dávat pozor na to, že na discích, na kterých nejsou možné a povolené pevné odkazy, není soubor skutečně smazán (tato vlastnost je dostupná pouze na discích s ODS-5).

Úplné jméno souboru

Úplné jména souboru v OpenVMS má tvar:

NODE"accountname heslo"::zařízení:[cesta.adresáři]jméno.přípona;verze

a skládá se ze

  • jména uzlu (node), které může být doplněno uživatelským jménem (accountname) a heslem
  • jména zařízení (disku)
  • cesty adresáři uzavřené do hranatých závorek; jména adresářů se oddělují tečkou
  • vlastního jména souboru
  • přípony (označované obvykle jako typ)
  • čísla verze

Zápis [DIR1.DIR2.DIR3]FILE.EXT znamená nejnovější verzi souboru FILE.EXT na právě implicitním disku v adresáři [DIR1.DIR2.DIR3].

DIR1 je podadresář hlavního souborového adresáře (MFD odpovídá kořenovému adresáři), DIR2 je podadresář DIR1 a DIR3 podadresář DIR2. MFD, hlavní souborový adresář má jméno [000000].

ODS-2 na systému VAX/VMS dovoluje maximálně osm úrovní adresářů, při použití kořenového logického jména až 16 úrovní. OpenVMS dovoluje až 255 úrovní adresářů. Jména souborů mohou být tvořena pouze velkými písmeny, alfanumerická jména (včetně podtržítka, pomlčky a znaku dolar) maximální délky 39+39 znaků (39 pro jméno a 39 pro příponu). ODS-5 rozšiřuje znakovou sadu o malá písmena a většinu dalších tisknutelných ASCII znaků, stejně tak jako ISO Latin-1 a Unicode znaky, zvětšuje maximální délku jména souboru. Při konstruování jmen souborů pro ODS-5 se před znaky nepovolenými v ODS-2 používá speciální znak "^" pro zachování zpětné kompatibility; například soubor „soubor.tar.gz;1“ na ODS-5 disku bude na označovaném jako „soubor^.tar.gz“ – jméno souboru je „soubor.tar“ a přípona je „.gz“.

Většina složek jména souboru může být vynechána; systém místo nich doplní složky z aktuálního implicitního jména souboru. Implicitní jméno souboru nahrazuje koncept „aktuálního adresáře“ z jiných operačních systémech tím, že poskytuje sadu implicitních hodnot pro uzel, jméno zařízení a adresář. Každý proces má své implicitní jméno souboru, které zahrnuje jméno disku a adresář, a většina funkcí pro práci se soubory systému VMS přijímá implicitní jméno souboru, které může zahrnovat i příponu souboru; například příkaz TYPE má jako implicitní příponu „.LIS“, takže příkaz TYPE F bez uvedení přípony se snaží otevřít soubor F.LIS.

Verzování souborů

Každý soubor má číslo verze, které je při vytvoření nového souboru nastaveno na hodnotu 1, pokud v adresáři neexistuje jiná verze souboru se stejným jménem (jinak se použije verze o jedničku vyšší než je nejvyšší číslo verze souboru daného jména). Pokaždé, když je soubor zapsán, místo přepsání existující verze se vytvoří nový soubor se stejným jménem a s číslem verze o jedničku větším. Starší verze souborů tedy nejsou přepisovány, ale jsou ponechány na disku a mohou být kdykoli použity. Staré verze mohou být odstraňovány ručně příkazem DELETE nebo PURGE nebo automaticky, když počet verzí přesáhne pro soubor nastavenou hodnotu (nastavenou příkazem SET FILE/VERSION_LIMIT). Nejvyšší číslo verze je 32767. U jednotlivých souborů lze verzování vypnout, jestliže je nežádoucí. Konkrétně soubory, které jsou aktualizovány přímým přístupem, jako například databáze, nové verze nevytváří, pokud to není explicitně naprogramováno.

Žolíky ve jménech souborů

Některé programy umožňují používat ve vlastním jménu souboru, příponě a čísle verze žolíkové znaky. Žolík '*' má význam libovolné posloupnosti znaků, žolík '%' má význam libovolného znaku. Oba žolíkové znaky se mohou použít i uvnitř jména (nejen na jeho konci). Některé programy umí pracovat se soubory v celém zvoleném (pod)stromě adresářů; požadavek provést určitou akci v celém podstromě za zadává pomocí tří teček na konci cesty adresáři (tj. před zavírací hranatou závorkou):

SEARCH [.TEXTS...]*.TXT "hledaný text"

Jména adresářů se zapisují dvojím způsobem. V cestě adresáři, která se píše vždy do hranatých závorek, se zapisují bez přípony a čísla verze. Pokud se zapisují jako jméno souboru (mimo hranaté závorky), mají vždy příponu .DIR a verzi 1. První způsob se kromě zápisů cesty k souboru používá i v příkazech SET DEFAULT pro nastavení implicitní cesty a CREATE /DIRECTORY pro vytvoření adresáře. Druhý způsob se používá pro nastavení práv adresáři a pro zrušení adresáře.

Přístupová práva k souborům

VMS používá dva Discretionary Access Control mechanismy zabezpečení souborů:

  • řízení přístupu na základě UIC
  • řízení přístupu na základě ACL (Access Control List)

Přístup na základě UIC

Přístup je definován pro čtyři kategorie uživatelů:

Formát zobrazení přístupových práv k souboru; chybějící práva nejsou zobrazována
  • System (systém)
  • Owner (vlastník)
  • Group (skupina)
  • World (ostatní)

Pro každou kategorii uživatelů jsou k dispozici čtyři bity udávající oprávnění k jednotlivým operacím:

  • Read (čtení)
  • Write (zápis)
  • Execute (provedení)
  • Delete (zrušení)

Pro přístup k souboru se uplatní oprávnění kategorie „systém“, pokud kód UIC uživatelovy skupiny je menší nebo roven parametru MAXSYSGROUP v SYSGEN (typicky 8, tj. 10 osmičkově) (například uživatel SYSTEM); „vlastník“ a „skupina“ platí pro vlastníka souboru a uživatelovu uživatelskou skupinu a „world“ se použije pro všechny ostatní uživatele. Změnu metadat souboru jako například ochranu souboru mohou vždy provádět pouze uživatelé kategorie „systém“ a „systém“.

Přístup podle ACL

ACL umožňuje přidělovat další práva k určitým souborům nebo adresářům libovolným uživatelům nebo skupinám. Lze také označit ACL jako dědičná (anglicky inherited), kdy se ACL adresáře uplatňuje na všechny soubory v tomto adresáři. Lze například dovolit, aby WWW server s UIC HTTP$SERVER měl právo čtení pro všechny soubory v určitém adresáři. ACL se nastavují příkazem EDIT/ACL a mají tvar dvojic identifikátor/přístup. Například ACL položka

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

umožňuje uživateli HTTP$SERVER číst a spouštět soubor.

Zvláštní oprávnění

Čtyři systémová oprávnění umožňují uživatelům, kteří je mají, přednostní přístup:

  • BYPASS: uživatel má implicitně přístup RWED ke všem souborům, bez ohledu na ochranu souboru;
  • READALL: uživatel má implicitně přístup R ke všem souborům;
  • SYSPRV: pro uživatele platí práva kategorie „systém“;
  • GRPPRV: pokud má uživatel stejnou skupinu jako vlastník souboru, platí pro něj přístupová práva kategorie „systém“

Logická jména

Logické jméno je systémová proměnná, která se může odkazovat na disk, adresář nebo soubor, nebo může obsahovat jiné informace pro určitý program. Například logické jméno SYS$SYSDEVICE obsahuje jméno zařízení, ze kterého byl zaveden operační systém. Logické jméno normálně znamená jediný adresář nebo disk, například SYS$LOGIN:, což je uživatelův přihlašovací (domovský) adresář (nebo adresáře); tato logická jména nelze používat jako jména disku – SYS$LOGIN:[DIR]FILE není správné jméno souboru. Existují ale skrývající (anglicky concealed) logická jména, definovaná příkazem DEFINE/TRANSLATION=CONCEALED, která tímto způsobem být používána mohou; tato kořenová (anglicky rooted) jména jsou definována s tečkou za jménem posledního adresáře, např.

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

což umožňuje používání úplných jmen souborů tvaru HOME:[DIR]FILE, ve kterých logické jméno plní funkci jména disku. Obvyklejší jsou jednoduchá logická jména, která ukazují na zvláštní adresáře příslušnými s některé aplikační software, který může být umístěn na libovolném disku nebo v libovolném adresáři. Logické jméno ABC_EXE může například ukazovat na adresář proveditelnými programy pro aplikaci ABC, ABC_TEMP může ukazovat na adresář dočasných souborů pro stejnou aplikaci, a tento adresář může být na stejném disku a ve stejném adresářovém stromě jako ABC_EXE, ale může být i na jiném disku (a v různých adresářových stromech).

Logická jména nemají obdobu v operačních systémech standardu POSIX. Připomínají proměnné prostředí v Unixu, jejich vyhodnocování (expanzi) však neprovádí příkazový interpret nebo aplikační program, ale systém souborů. Logická jména musí být před použitím definována, což se obvykle děje v příkazovém souboru pro start systému a v uživatelských přihlašovacích příkazových souborech.

Asi nejbližším konceptem podobným logickým jménům jsou jména definovaná v operačním systému AmigaOS pomocí příkazu ASSIGN. AmigaDOS, diskový operační systém systému AmigaOS, který je portem systému TRIPOS, v některých ohledech připomíná operační systémy firmy DEC. Například pro jména fyzických zařízení se používá DF0: pro první disketovou jednotku, CDROM2: pro třetí jednotku CD-ROM, atd. Protože AmigaOS může být zaveden z libovolného připojeného disku, přiřazuje jménu SYS: odkaz na zařízení, ze kterého byl operační systém zaveden. Existují i další přiřazení jako LIBS:, PREFS:, C:, S:, apod. jsou také vytvořena, přičemž se na ně odkazuje ze SYS:. Uživatelům je samozřejmě také povoleno vytvářet a rušit vlastní přiřazení.

V OS VMS se mohou logická jména odkazovat na jiná logická jména (až do předdefinovaného limitu 10) a mohou obsahovat seznamy adresářů, ve kterých se hledá soubor příslušného jména. Mezi často používaná logická jména patří:

logické jméno význam
SYS$INPUT implicitní vstup programu, obdoba standardního vstupu
SYS$OUTPUT implicitní výstup programu, obdoba standardního výstupu
SYS$ERROR chybový výstup programu, obdoba standardního chybového výstupu
SYS$COMMAND právě prováděný dávkový soubor (*.COM)
TT terminál přiřazený procesu
SYS$PRINT implicitní tiskárna nebo tisková fronta
SYS$LOGIN domovský adresář uživatele
SYS$SCRATCH adresář pro dočasné soubory
SYS$SYSTEM adresář obsahující většinu systémových programů a některé důležité datové soubory, například soubor pro autorizaci k systému (s účty a hesly)
SYS$SHARE sdílené běhové knihovny, spustitelné programy, atd.
SYS$LIBRARY systémové a přídavné knihovny

Záznamově orientované vstupy/výstupy: Record Management Services

Record Management Services (RMS) je vrstva operačního systému VMS implementující strukturované vstupy/výstupy. RMS poskytuje programům komplexní podporu pro práci se strukturovanými soubory, jako záznamově orientované soubory a indexované databázové soubory. Systém souborů VMS ve spojení s RMS rozšiřuje přístup k souborům za jednoduchý bytový proudy a umožňuje podporu na úrovni OS pro množství typů souborů. Každý soubor v systému souborů na VMS můžeme považovat za databázi obsahující řadu záznamů složených z několika položek. Textový soubor je například posloupnost záznamů (řádků) oddělených znaky konce řádku. RMS je příkladem záznamově orientovaného systému souborů.

RMS podporuje čtyři formáty záznamů:

  • Záznamy s pevnou délkou – všechny záznamy v souboru mají stejnou délku.
  • Záznamy s proměnnou délkou – záznamy mají proměnnou délku a každému záznamu předchází údaj o počtu bytů, který udává délku záznamu.
  • Záznamy s proměnnou délkou záznamu s řídicím blokem pevné délky – záznamy mají proměnnou délku, ale jsou uvedeny řídicím blokem pevné délky.
  • Proud – záznamy mají proměnnou délku a každý záznam je od dalšího oddělen ukončovacím znakem. Příkladem souboru s proudovým formátem jsou textové soubory, které používají znaky nový řádek a návrat vozíku pro oddělení záznamů (řádků).

RMS poskytuje čtyři záznamové přístupové metody neboli metody pro načítání existujících záznamů ze souboru:

  • Sekvenční přístup – začíná se od určitého záznamu, následující záznamy se čtou postupně, dokud se nedojde na konec souboru.
  • Přístup pomocí relativního čísla záznamu – záznamy jsou vybírány podle čísla záznamu vztaženému k začátku souboru.
  • Přístup pomocí absolutního umístění v souboru – záznamy jsou vybírány přímo podle jejich umístění v souboru (RFA nebo Record File Address).
  • Indexovaný přístup – záznamy jsou vybírány podle klíče, soubor funguje jako asociativní pole.

Fyzická struktura: On-Disk Structure

Na diskové úrovni reprezentuje ODS systém souborů jako pole bloků, kde blok je 512 souvislých bytů na jednom fyzickém disku (svazku). Několik diskových bloků tvoří cluster (původně 3 ze sebou jdoucí bloky, u větších disků více bloků). Soubor je ideálně na disku uložen souvisle, což znamená, že jednotlivé bloky obsazené souborem, jdou po sobě. Kvůli fragmentaci diskového prostoru však musí být někdy soubor rozdělen na několik částí rozmístěných v různých místech disku. Každá souvislá část se nazývá „extent“. Z několika disků lze vytvořit sadu svazků, na níž mohou být části souborů uloženy na kterémkoli místě. Při použití větších disků není používání sad svazků tak časté, protože správa jediného fyzického disku je jednodušší.

Každý soubor na Files-11 disku (nebo sadě svazků) má jednoznačnou identifikaci souboru (FID), složenou ze tří čísel: číslo soubor (NUM), pořadové číslo souboru (SEQ) a relativní číslo svazku (RVN). NUM udává, kde v souboru INDEXF.SYS (viz dále) jsou umístěna metadata souboru; SEQ je číslo generace, které se zvětšuje pokaždé, když je nějaký soubor je smazán a pak je vytvořen jiný soubor, který používá stejnou položku INDEXF.SYS (aby žádný odkaz na smazaný soubor neukazoval náhodou na nový soubor); RVN udává číslo svazku, na kterém je soubor uložen při použití sady svazků.

Adresáře

Hierarchická struktura souborů na ODS svazku je vytvářena adresářovými soubory, což jsou speciální soubory obsahující seznamy jmen, čísel verzí a FID souborů, podobně je tomu u VSAM katalogů v systému MVS. V kořeni adresářové struktury je hlavní adresář souborů (MFD), kořenový adresář, který (přímo nebo nepřímo) obsahuje každý soubor na svazku.


Ukázka adresáře se 3 soubory a způsobu, jak je každé jméno souboru namapováno na položky souboru INDEXF.SYS (položky INDEXF obsahují více informací; na obrázku je znázorněno jen několik prvních polí).

Hlavní adresář souborů

Adresář na nejvyšší úrovni (kořenový adresář) v souborovém systému ODS je označován jako hlavní adresář souborů (anglicky master file directory, MFD) a obsahuje všechny adresáře nejvyšší úrovně (včetně sebe sama) a několik systémových souborů v nichž jsou informace o souborovém systému. Na ODS-1 svazcích se používá dvouúrovňová struktura adresářů: pro každý identifikační kód uživatele (UIC) existuje uživatelský adresář souborů (anglicky user file directory, UFD), tvaru [GROUP.USER]. Na svazcích s ODS-2 nebo ODS-5 je struktura adresářů pod MFD volná, v systému VAX/VMS omezená na 8 úrovní, v OpenVMS neomezená. Na sadě svazků obsahující více disků je MFD vždy uložen na prvním svazku a obsahuje podadresáře všech svazků.

MFD obsahuje následující systémové soubory:

  • INDEXF.SYS;1 – Indexový soubor
  • BITMAP.SYS;1 – Soubor s bitovou mapou bloků
  • BADBLK.SYS;1 – Soubor se seznamem špatných bloků
  • 000000.DIR;1 – Samotné MFD
  • CORIMG.SYS;1 – Soubor s obrazem jádra
  • VOLSET.SYS;1 – Soubor obsahující seznam svazků (pouze ODS-2/5)
  • CONTIN.SYS;1 – Soubor pokračování (pouze ODS-2/5)
  • BACKUP.SYS;1 – Záloha žurnálového souboru (pouze ODS-2/5)
  • BADLOG.SYS;1 – Aktuální vadné bloky (pouze ODS-2/5)
  • SECURITY.SYS;1 – Bezpečnostní profil svazku (pouze ODS-2/5)
  • QUOTA.SYS;1 – Soubor kvót (volitelný a dostupný pouze na ODS-2/5)
  • GPT.SYS;1 – GUID tabulka oddílů (anglicky GUID Partitioning Table, GPT) (OpenVMS I64 EFI struktury pro zavedení systému, volitelné na OpenVMS Alpha)

Pro odkazy na tyto soubory nepoužívá vlastní implementace systému souborů jména, ale jejich soubor ID, která mají na všech discích stejné hodnoty. Např. INDEXF.SYS má vždy NUM = 1 a SEQ = 1.

Indexový soubor: INDEXF.SYS

Indexový soubor obsahuje většinu základních informací o sadě svazků ve Files-11.

Existují dvě organizace INDEXF.SYS: tradiční organizace a organizace používaná na discích se strukturou GPT.SYS (GUID Partition Table, GPT).

V tradiční organizaci je blok 1 blok pro zavedení systému, který obsahuje umístění primárního zaváděcího obrazu sloužícího pro načtení operačního systému VMS. Ten je vždy umístěn v logickém bloku 0 disku, takže firmware zařízení jej může načíst. Tento blok je vždy přítomný, i na svazcích, které systém neobsahují (non-bootable).

Za blokem se zavaděčem systému následuje primární domovský blok, který obsahuje jméno svazku, umístění extentů obsahujících zbytek indexového souboru, UIC vlastníka svazku a informace o přístupových právech ke svazku. Protože tyto informace jsou životně důležité pro data na svazku, existuje několik záložních kopií domovského bloku nazývaných sekundární domovské bloky, které umožňují obnovu informací o svazku, pokud by došlo k jejich přepsání nebo poškození.

Na discích s GPT.SYS, obsahuje GPT.SYS ekvivalent boot bloku (známý jako Master Boot Record (MBR)) a neexistuje žádný primární domovský blok. Všechny domovské bloky na disku s GPT jsou alternativní domovské bloky. Tyto struktury nejsou obsaženy v INDEXF.SYS a bloky souboru INDEXF.SYS nejsou použité.

Zbytek indexovaného souboru se skládá z hlaviček souborů, které pro každý soubor na svazku obsahují seznam extentů alokovaných pro soubor a metadata souboru, jako je UIC vlastníka, ACL a informace o přístupových právech. Soubor, které mají velký počet extentů mohou mít více hlaviček. Hlavička souboru má pevnou délku, ale obsahuje části pevné i proměnné délky:

  • hlavička obsahuje NUM a SEQ, informace o přístupových právech souboru a umístění zbytku hlaviček souboru.
  • část ident obsahuje účtovací metadata: jméno souboru, čas vytvoření a modifikace a čas posledního zálohování souboru.
  • map popisuje, jaké fyzické diskové bloky (extenty) se mapují na jednotlivé virtuální bloky souboru.
  • access control list obsahuje ACL informace souboru.
  • rezervované místo je prostor na konci hlavičky souboru, který operační systém nepoužívá. Může být použit pro informace o zákazníkovi nebo dodavateli.
  • Poslední dva byty hlavičky jsou kontrolní součet předchozích 255 slov, pro ověření neporušenosti hlavičky.

Pokud je to možné, je mapa a ACL část hlavičky uložena v primární hlavičce. Pokud je ale ACL příliš dlouhé nebo soubor obsahuje příliš mnoho extentů, takže v primární hlavičce není dostatek prostoru pro jejich uložení, je alokována rozšířená hlavička pro uložení informací, které se do primární hlavičky nevešly.


Struktura hlavičky INDEXF.SYS.

Hlavička souboru začíná čtyřmi offsety (IDOFFSET, MPOFFSET, ACOFFSET a ROFFSET). Protože za hlavičkou pevné délky jsou oblasti s proměnnou velikostí (například mapa a ACL), jsou zde uložené informace o umístění těchto přídavných oblastí od začátku hlavičky v 16-bitových slovech.

Jestliže soubor potřebuje více hlaviček, pole číslo rozšiřujícího segmentu (SEGNUM) obsahuje pořadové číslo této hlavičky, počítané od 0 v první položce INDEXF.SYS.

STRUCLEV obsahuje aktuální úroveň struktury (ve vyšším bytu) a verzi (v nižším bytu) systému souborů; ODS-2 má úroveň 2. Pokud při zdokonalování systému souborů byla provedena změna, která neporušuje zpětnou kompatibilitu, takže se svazkem může pracovat i starší software, zvyšuje se číslo verze. Pokud byla zpětná kompatibilita narušena, musí se zvýšit číslo úrovně.

W_FID je identifikátor souboru, který se skládá ze tří složek: FID_NUM, FID_SEQ a FID_RVN, což je číslo souboru, pořadové číslo a relativní číslo svazku); EXT_FID (opět obsahující tři složky) obsahuje umístění další rozšířující hlavičky (je-li použita). U obou hodnota 0 v RVN znamená „aktuální“ svazek (žádný svazek nemá RVN 0).

FILECHAR obsahuje několik příznaků, které udávají, jak je soubor organizován, nebo ovlivňují, jak je zpracováván:

  • NOBACKUP způsobí, že soubor nebude zálohován.
  • WRITEBACK povoluje opožděné (kešované) zápisy do souboru.
  • READCHECK způsobí, že všechna čtení souboru budou prováděna dvakrát a přečtená data budou porovnávána pro zajištění integrity dat.
  • WRITCHECK způsobí, že všechny zápisy budou ověřovány následným čtením a porovnáním.
  • CONTIGB způsobí, že OS se bude snažit pro soubor alokovat co nejsouvislejší prostor.
  • LOCKED je nastavený, jestliže soubor je deaccess-locked. Jestliže je nastavený, udává, že soubor nebyl správně zavřen po posledním použití a jeho obsah může být nekonzistentní.
  • CONTIG udává, že soubor je uložený na disku souvisle, tj. že každý virtuální blok je mapovaný na logický (fyzický) blok , pro nějakou konstantu .
  • BADACL je nastavený, jestliže soubor má chybné ACL.
  • SPOOL je nastavený, jestliže se jedná o spoolovací soubor, jako například dočasný soubor používaný pro tisk.
  • DIRECTORY je nastavený, jestliže soubor je adresář.
  • BADBLOCK je nastavený, jestliže soubor obsahuje vadné bloky.
  • MARKDEL je nastavený, jestliže soubor byl označen pro smazání, ale stále se používá; jakmile jej poslední uživatel zavře, bude smazán.
  • NOCHARGE jestliže je nastavený, způsobí, že prostor používaný souborem se nepočítá do vlastníkovy paměťové kvóty.
  • ERASE způsobí, že obsah souboru bude před smazáním přepsán.

ACCMODE popisuje úroveň oprávnění s níž musí proces běžet, aby mohl přistupovat k souboru. VMS definuje čtyři úrovně oprávnění: uživatel, supervisor, exec a jádro. Každý typ přístupu – čtení, zápis, provedení a smazání – je zakódován jako dvoubitové celé číslo.

FILEPROT obsahuje informace o ochraně souboru. Je rozdělen na 4 skupiny po 4 bitech: systém, vlastník, skupina a world. Bit 0 odpovídá čtení, 1 zápisu, 2 spuštění a 3 smazání. Nastavení bitu přístup k souboru znemožňuje; vynulování bitu přístup dovoluje.

Jestliže hlavička souboru je rozšířující hlavička, BACKLINK obsahuje souborové ID primární hlavičky; jinak obsahuje souborové ID adresáře, který obsahuje primární položku pro soubor.

Další soubory

  • Bitová mapa úložiště: BITMAP.SYS
V souboru je informace pro každou alokační jednotku disku (cluster) udávající, zda je nepoužitá nebo přidělená nějakému souboru. Další informace jsou uloženy ve struktuře storage control block (SCB). V raných verzích VMS byla velikost clusteru vždy 3 bloky, ale u větších disků se používají i větší velikosti clusterů.
  • Soubor vadných bloků: BADBLK.SYS
Soubor vadných bloků obsahuje všechny známé vadné bloky na fyzickém svazku. Účelem je, aby je systém nemohl alokovat pro soubory. Tento soubor byl velmi důležitý v minulosti, kdy disky měly obvykle už z výroby určitý počet vadných bloků.
  • Seznam svazků v sadě: VOLSET.SYS
Soubor je umístěný na svazku 1 sady svazků a obsahuje seznam návěští (jmen) svazků v této sadě svazků a jméno sady svazků.
  • Soubor pokračování: CONTIN.SYS
Pokud na vícesvazkové sadě svazků je soubor umístěn na více než jednom svazku, používá se soubor pokračování jako jeho rozšiřující hlavička, která popisuje, kde se nachází zbytek souboru.
  • Soubor kvót: QUOTA.SYS
Tento soubor kvót existuje pouze tehdy, když je povolena volitelná vlastnost diskové kvóty. Pro každý UIC obsahuje záznam s informací o alokovaném a obsazeném prostoru.
  • Přístupový profil svazku: SECURITY.SYS
Přístupový profil svazku obsahuje UIC vlastníka svazku, masku ochrany svazku a jeho Access Control List
  • GUID tabulka oddílů: GPT.SYS
Tento soubor pokrývá a chrání diskové struktury MBR (Master Boot Record) a GPT (tabulku oddílů GUID) využívané EFI firmwarem. OpenVMS I64 vytváří tento soubor implicitně při inicializaci disku, OpenVMS Alpha jej vytváří volitelně (příkazem INITIALIZE/GPT).

Související články

Reference

V tomto článku byl použit překlad textu z článku Files-11 na anglické Wikipedii.

  • Andrew C. Goldstein. Files-11 On-Disk Structure Specification. [s.l.]: VAX/VMS Software Development, 1985-01-11. 
  • Hewlett-Packard Development Company. OpenVMS System Manager's Manual, Volume 2: Tuning, Monitoring and Complex Systems. [s.l.]: [s.n.], September 2003. Kapitola Appendix: Files-11 Disk Structure. 
  • Kirby McCoy. VMS File System Internals. Bedford, Mass.: Digital Press, 1990. ISBN 1-55558-056-4. 

Externí odkazy