Dem stetigen Wachstum der Plattenspeicherkapazität und von online bereitzuhaltenden Datenbeständen wird im B2000 durch die Erweiterung der früher verfügbaren Platten- und Dateigrößen von ca. 32 GB Rechnung getragen. Es gelten folgende Grenzen:
Die maximale Kapazität eines Pubsets oder Volume-Sets beträgt ca. 4TB.
Die maximale Kapazität einer einzelnen Platte beträgt ca. 2 TB.
Die maximale Dateigröße beträgt ca. 4 TB (entspricht der maximalen Größe eines Pubsets oder Volume-Sets abzüglich SVL, F5-Label und Systemdateien).
Dies bedeutet, dass innerhalb des Betriebssystems konsequent 4-Byte-Blocknummern und 4-Byte-Zähler für Datei- und Plattengrößen verwendet werden müssen.
Die Umstellung von 3-Byte- auf 4-Byte-Felder hat Auswirkungen auf alle Komponenten, Produkte und Anwendungen, die mit diesen Feldern direkt oder indirekt arbeiten. Die TPR-Schnittstellen wurden entsprechend angepasst, aber nicht alle TU-Benutzerschnittstellen können diese großen Dateien kompatibel unterstützen.
Voraussetzungen
Es gibt zwei Pubset-Typen für große Objekte (große Dateien und Volumes):
LARGE-OBJECTS-Pubsets ohne große Dateien:
Dieser Typ erlaubt große Volumes, beschränkt aber die zulässige Dateigröße auf 32 GB. Dies bedeutet, dass der Pubset Volumes >= 32 GB enthalten darf, nicht aber notwendigerweise aktuell derartige Volumes enthält.
Diese Pubsets verhalten sich aus Anwendersicht (fast) wie konventionelle Pubsets.
LARGE-OBJECTS-Pubsets mit großen Dateien
Bei diesem Typ sind große Volumes und große Dateien zulässig, nicht aber notwendigerweise vorhanden.
Er ermöglicht die Abschottung von großen Dateien gegen Programme, die unverträgliche Schnittstellen nutzen, und unterstützt die stufenweise Einführung von großen Volumes und – in einem zweiten Schritt – großen Dateien.
Große Objekte werden sowohl auf SF- als auch auf SM-Pubsets unterstützt. Dazu wurden die zwei folgenden Attribute eingeführt:
LARGE_OBJECTS | Attribut zur Unterstützung von Volumes >= 32 GB |
LARGE_FILES_ALLOWED | Attribut steuert, ob auf dem Pubset auch große Dateien (Dateien >= 32 GB) unterstützt werden |
Analog zu Pubsets wurde für Volumes ein Attribut eingeführt: LARGE_VOLUME.
Das Attribut LARGE_VOLUME charakterisiert ein logisches Volume und zeigt an, dass das Volume eine Bruttokapazität >= 32 GB hat. Wie die Eigenschaft LARGE_OBJECTS für Pubsets ist die Eigenschaft LARGE_VOLUME für Volumes dauerhaft und wird im SVL abgelegt.
3-Byte- und 4-Byte-Felder
Zentral für die Aufhebung der 32-GB-Grenze für die Volume- und Dateigröße ist die Einführung von 4-Byte-Feldern für folgende im Katalogeintrag abgelegte Daten:
FILE-SIZE – der für die Datei allokierte Speicherplatz
HIGHEST-USED-PAGE – der davon aktuell durch Daten belegte Speicherplatz
LHP (Logical halfpage number) und PHP (physical halfpage number) der einzelnen Extents in der Extent-Liste, die den logischen Halbseiten „physikalische“ Halbseiten von Volumes zuordnet.
Blocknummern und Blockzähler sind an verschiedenen Benutzerschnittstellen des BS2000 sichtbar. Während alle neueren Ausprägungen dieser Schnittstellen konsequent 4-Byte-Felder verwenden, werden bei manchen älteren Schnittstellenversionen 3-Byte-Felder verwendet. Sind Dateien >= 32 GB vorhanden, ist mit Kompatibilitätsproblemen zu rechnen; ebenso, wenn „nur“ Volumes >= 32 GB vorhanden sind.
Mit Einführung von 4-Byte-LHPs und 4-Byte-PHPs existiert auch für die Extent-Liste ein zweites (zusätzliches) Format. Um so weit wie möglich Abwärtskompatibilität sicherzustellen, unterstützen die aktuellen BS2000-Versionen beide Formate der Extent-Liste:
Grundsätzlich wird das „alte“ Format mit 3-Byte-Blocknummern verwendet.
Nur im Fall von großen Dateien oder von Dateien, für deren Adressierung PHPs größer X'FFFFFF' benötigt werden, wird das neue Format mit 4-Byte-Blocknummern verwendet.
Extent-Listen enthalten also entweder Extents mit 3-Byte-Blocknummern oder Extents mit 4-Byte-Blocknummern.
Einschränkungen für große Dateien
Im Bereich der nichtprivilegierten Anwendungen sind folgende Einschränkungen für große Dateien zu beachten:
Die Unterstützung von Dateien >= 32 GB ist nur auf Pubsets mit
LARGE_OBJECTS=TRUE, LARGE_FILES_ALLOWED=TRUE möglich.Die Unterstützung von Dateien >= 32 GB ist nur für Nicht-Pamkey-Dateien möglich: Dateien mit BLKCTRL=PAMKEY werden nicht unterstützt, da im Systemteil des Pamkey die logische Seitennummer als 3-Byte-Feld hinterlegt ist.
EAM-Dateien >= 32 GB sind nicht möglich, da die Behälterdatei SYSEAM keine große Datei sein kann.
Übersicht über die 32-GB-relevanten DVS-Schnittstellen zur Datei-Verwaltung
Schnittstelle | Änderung |
---|---|
nicht-privilegierte Kommandos | |
ADD-FILE-LINK | neuer Operand EXCEED-32GB für Angabe der erlaubten Dateigröße (größer oder kleiner 32 GB) |
SHOW-FILE-LINK | Ausgabe des Dateiattributes „große Datei“ |
SHOW-FILE-ATTRIBUTES | erweiterte Ausgabestellen verschiedener Ausgabefelder |
Makros | |
FCB | neuer Operand LARGE_FILE für große Dateien |
FILE | neuer Operand EXC32GB für große Dateien |
FSTAT | Prüfungs- und Umstellungsaufwand bei VERSION=0/1 |
OPEN | Semantikproblem beachten |
RDTFT | Ausgabe des Dateiattributes „große Datei“ |
DIV | neuer Operand LARGE_FILE für große Dateien; vergrößerter Wertebereich für die Operanden BLOCK und SPAN |
FPAMACC | vergrößerter Wertebereich für den Operanden BLOCK |
FPAMSRV | neuer Operand LARGE_FILE für große Dateien |
Ablauffähigkeit von Programmen in Konfigurationen mit Dateien größer 32 GB
Es kann nicht davon ausgegangen werden, dass alle Programme für den Zugriff auf große Objekte vorbereitet sind, d.h. mit 4 Byte breiten Blocknummern und Blockzählern zurecht kommen, wobei Benutzerprogrammen nur Schnittstellen für Zugriff auf und Bearbeitung von Dateien und deren Metadaten zur Verfügung stehen. Deshalb beschränkt sich die folgende Betrachtung auf große Dateien. Dabei lässt sich das Verhalten von Programmen wie folgt klassifizieren:
Klasse A | Ein Programm ist in der Lage, große Dateien ohne Einschränkung zu verarbeiten. |
Klasse B: | Ein Programm ist zwar nicht auf die Bearbeitung großer Dateien und/oder ihrer Metadaten vorbereitet, ist aber in der Lage, entsprechende Zugriffe, die als fehlerhaft betrachtet werden müssen, definiert abzuweisen oder es erfolgen im Programm keine Zugriffe auf Dateien und ihre Metadaten. Dieses Verhalten wird als LARGE-FILES-kompatibel bezeichnet. |
Klasse C: | Ein Programm ist nicht auf die Bearbeitung großer Dateien vorbereitet und ist auch nicht in der Lage, entsprechende Zugriffe definiert abzuweisen. Dieses Verhalten wird als LARGE-FILES-inkompatibel bezeichnet. |
Für Konfigurationen, die große Dateien beinhalten, müssen LARGE-FILES-kompatible oder -fähige Programme vorausgesetzt werden. Dabei ist als Regelfall LARGE-FILES-Kompatibität zu sehen. Das Wachstum über 32 GB hinaus dürfte sich vorerst auf relativ wenige Dateien beschränken; nur Programme, die auf diese zugreifen, müssen LARGE-FILES-fähig sein.
Eine Zusammenstellung aller Aspekte des Einsatzes von großen Volumes und Dateien finden Sie im Handbuch „Dateien und Volumes größer 32 GB“ [18].