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-1 až ODS-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 minus. 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ňů () označovaných ú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ů
náhled|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ů (). Disky mohou být také automaticky sdruženy do stínové sady () 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ářů
náhled|vpravo|252px|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éno 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ů:
náhled|vpravo|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á (), 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í () logická jména, definovaná příkazem DEFINE/TRANSLATION=CONCEALED, která tímto způsobem být používána mohou; tato kořenová () jména jsou definována s tečkou za jménem posledního adresáře, např.
$ DEFINE/TRANS=CONCEAL HOME DISK$USERS:[username.]