Anmelden

View Full Version : Dateisystem der iSeries - ein paar Fragen



auxilium
09-06-12, 13:27
Hallo zusammen,

Zur Zeit möchte ich mich mit dem IFS der iSeries ein wenig auseinander setzen.

Dabei sind mir ein paar Fragen aufgekommen:

Es ist doch richtig, dass IFS genauso wie das Betriebssystem an sich als virtuell zu bezeichnen sind? Also gar nicht direkt auf die Hardware zugreifen?

Wie werden generell Objekte physisch auf der iSeries gespeichert?

Wenn ich ein Objekt anlege, wird dieses dann direkt über den SLIC auf der Platte irgendwie gespeichert oder ist da noch eine Datenbank dazwischen, also dass das Objekt , z.B. ein PGM Objekt in einer Datenbank gespeichert wird, und von dort die Speicherung über SLIC auf der Platte erfolgt?

Ich frage hier, weil die Englische Wikipedia das Dateisystem der OS/400 explizit als Database file system bezeichnet.
http://en.wikipedia.org/wiki/File_system#Database_file_systems

Werden also auch Physische Dateien, Programme, Bibliotheken echt noch in Tabelle(n) auf der DB2 Datenbank gespeichert?

AS400.lehrling
09-06-12, 15:15
Ruf doch bei IBM an und frag die :p

Endschuldigung, aber das ist eine komische Frage.

Gruß AS400.lehrling

Pikachu
09-06-12, 16:07
Wie werden generell Objekte physisch auf der iSeries gespeichert?
Sieh dir mal die Befehle DMPOBJ und DMPSYSOBJ an, und im STRSST den Display/Alter/Dump (D/A/D).

auxilium
10-06-12, 15:18
danke pikachu für deine antwort,

Leider habe ich keine eigene iSeries, wo ich das mal testen könnte.
Das letzte Mal, wo ich damit arbeiten konnte, war in einem Praktikum.

Meine Frage meint konkret:

Repräsentiert QSYS.LIB die DB2?

Also, dass ein Objekt z.B. ein Physical File irgendwo und irgendwie in einer DB2-Tabelle gespeichert ist?

Pikachu
10-06-12, 21:35
Sieh mal hier (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rbam6/rbam6objecttypes.htm) und hier (http://www.mcpressonline.com/rpg/want-to-know-all-the-mi-object-types-supported-by-your-ibm-i.html). Die einzelnen Objekte, die OS/400 kennt, bestehen ihrerseits aus einem oder mehreren MI-Objekten (MI = Machine Interface). Ein MI-Objekt hat einen Typ und Subtyp (Objektart), einen Kontext (Bibliothek) und einen Namen (maximal 30 Zeichen). So gesehen ist also die Art, wie das MI seine Objekte verwaltet, das Dateisystem, das du suchst. Dieses hat soweit ich weiß keinen eigenen Namen.

auxilium
11-06-12, 06:20
Ah danke dir pikachu,

Ich werde mal schauen, ob ich da noch weitere Informationen zum "eigentlichen" Dateisystem dann finde.

Nun die andere Frage:
QSYS.LIB ist in dem Sinne ja ein virtuelles Dateisystem.

Speichert QSYS.LIB denn alle Obejkte in der DB2, sodass der Wikipedia Artikel stimmt, dass das Dateisystem auf Ebene des BS OS/400 (nicht das Machine Interface), also QSYS.LIB alle Objekte in der Datenbank DB2 hält?

Bis auf den Wikipedia Artikel konnte ich dazu leider nix finden.

Die Spezifikation zum IFS sagt allerdings, dass im Dateisystem QSYS.LIB nur Dateien vom Typ "Record" abgespeichert werden und Record hört sich ja schon stark datenbankmäßig an .

B.Hauser
11-06-12, 07:45
Das Problem ist, Du wirst relativ wenig genaue Informationen im Internet finden, da IBM nicht offenlegt, wie und wo und in welcher Form die Objekte gespeichert und im Speicherbereich aufgeteilt werden.
Das ist im Betriebssystem auf der untersten Ebene integriert und abgeschottet!

Die Datenbank selber ist im Betriebssystem integriert. (Im Gegensatz zu allen anderen Datenbanken auf allen anderen Systemen, bei denen die Datenbank auf dem Betriebssystem sitzt.)

Auch wenn die Datenbank im Betriebssystem integriert ist, bedeutet das noch lange nicht, dass deswegen alles in der Datenbank gespeichert werden muss.

Datenbanken-Objekte, wie Tabellen (physische Dateien), Views, Indexes, Sequences etc. sowie deren Definition sind in der Datenbank gespeichert (da nach SQL Standard eine Datenbank selbstbeschreibend sein muss).

Sicher ist, IBM i ist kein PC-System und mit einem solchen nicht unbedingt vergleichbar!

Birgitta

Pikachu
11-06-12, 08:59
Im MI (Machine Interface) hat alles seine feste Speicheradresse (einstufiger Speicher). Datenbankdateien, Datenbankteildateien, Befehle, Programme, Bibliotheken, auch die Bibliotheken QSYS, QGPL, ... Alles hat seine feste Speicheradresse. Es gibt auch mehrere Bibliotheken QTEMP... Die Suche nach einem bestimmten Objekt erfolgt anhand seines Namens, seiner Objektart und der Bibliothek (Kontext) in der es sich befindet. Zum schnelleren Wiederfinden kann es für Folgeaufrufe über seine (ermittelte) Speicheradresse gefunden werden. Objekte sind intern über Zeiger miteinander verbunden. Je nachdem was man unter DB2 für i versteht, könnte DB2 für i auch das MI umfassen. Per SQL wird man diese Objekte aber nicht erreichen können (Programme zum Beispiel bestehen nicht aus Daten in Spaltenform, sondern aus durch Zeiger miteinander verbundenen Speicherbereichen).

Im Gegensatz dazu ist das Spoolsystem großteils in der Datenbank abgelegt, zumindest die Spooldaten stehen in Datendateien in der Bibliothek QSPL. Aber auch hier gibt es spezielle MI-Objekte, die man erst mittels DMPSYSOBJ OBJ(QSPL) CONTEXT(*MCHCTX) sieht, näheres siehe zum Beispiel hier (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/experience/spool_performance.pdf).

Christian Bartels
14-06-12, 13:03
Ich versuche mal, die Sache etwas zu strukturieren:

"Ganz unten" hat jedes Objekt auf IBM i eine systemweit eindeutige virtuelle Adresse. Extern sichtbare Objekte, also Dateien, Programme, Verzeichnisse, Benutzerprofile und so weiter fangen in der Regel an einer 16MB-Boundary an. Die LIC-Komponente "Storage Management" weiss, welche physikalische Speicherstelle (Platte, Main Storage) zu jeder virtuellen Adresse gehört, alle anderen Komponenten greifen nur über die virtuelle Adresse auf Objekte zu.

Dateisysteme (QSYS.LIB, IFS) regeln, wie man die Objekte finden kann. Dabei gibt es zwei wesentliche Sichten auf das Ganze:

1. QSYS (oder Dateisystem QSYS.LIB):
Dies ist die traditionelle AS/400-Sicht. Es gibt nur eine flache Hierarchie: Unten liegt die Bibliothek QSYS. In dieser liegen alle Bibliotheken, Benutzerprofile, Leitungs-, Controler- und Einheitenbeschreibungen und ein paar andere Dinge (erkennbar daran, dass beim entsprechenden CRTxxx-Befehl keine Bibliothek angegeben werden kann), außerdem "normale" Objekte, die auch in jeder anderen Bibliothek liegen könnten. Darüber liegen alle Bibliotheken, und in den Bibliotheken liegen dann die übrigen Objekte, also Programme, Physische und Logische Dateien, Subsystembeschreibungen und was es sonst noch alles gibt, allerdings keine Bibliotheken, so dass die Hierarchie flach bleibt. Objekte sind eindeutig identifiziert über Bibliotheksnamen, Objektnamen und Objektart, also z.B. QGPL/QCLSRC *FILE oder QSYS/QCMD *PGM. Objekte in hierarchischen Dateisystemen (siehe unten) können normalerweise nicht aus QSYS angesprochen werden.

2. IFS:
Das Integrated File System ist hierarchisch aufgebaut und vereinigt Sichten auf verschiedene Dateisysteme. Jedes Dateisystem hat eigene Eigenschaften, unter anderem gibt es Dateisystem QSYS.LIB, das oben beschrieben wird, ein Dateisystem /QOpenSys, das Unix-artig hierarchisch und case-sensitiv ist, und das sogenannte Dateisystem "EPFS", das ähnlich wie ein Windows-Dateisystem hierarchisch, aber nicht case-sensitiv ist (z.B. /QIBM/ProdData/...). Direkt nach dem Root-Verzeichnis wird gegebenenfalls in ein anderes Dateisystem verzweigt, danach kommen dann je nach Dateisystem unterschiedlich aufgebaute Pfadnamen. Objekte in QSYS können auch über nach dem folgenden Schema angesprochen werden: /QSYS.LIB/QGPL.LIB/QCLSRC.FILE/MYMEMBER.MBR oder /QSYS.LIB/QCMD.PGM.

Die Datenbank DB2 für IBM i setzt sich aus Objekten im QSYS-Dateisystem zusammen: Bibliotheken als Schema, Physische Dateien als Tabellen, Logische Dateien als Views und Indizes, Programme als Stored Procedures, außerdem Journale und Journalempfänger für Commitment-Control. Da die Objektnamen in QSYS und den Bibliotheken nur 10 Zeichen lang sein können, werden aus längeren SQL-Namen kürzere Objektnamen generiert. Die Verbindung zwischen SQL- und Objektnamen erfolgt über die Systemkataloge (SYSTABLES etc.), die auf den sogenannten Cross-Reference-Dateien in der Bibliothek QSYS basieren.

Es liegen also alle Datenbankobjekte im QSYS-Dateisystem gespeichert, aber nicht alle Objekte im QSYS-Dateisystem sind Datenbankobjekte. Über IFS kann auf alle QSYS-Objekte zugegriffen werden (mit Einschränkungen), aber es gibt im IFS weitere Objekte (Verzeichnisse, Stream-Files und Symbolic Links), auf die nicht über QSYS zugegriffen werden kann.

Ich hoffe, das beantwortet die Ausgangsfrage.

Mit freundlichen Grüßen,
Christian Bartels.