Betrifft: ASM – Raw Device Storage nein Danke!? Autor: Roland Maile, Mirko Hotzy Art der Info: Undokumentierte Parameter, Tipps und Tricks Quelle: Aus unserer Schulungs- und Beratungstätigkeit Einleitung ORACLE hat mit der neuesten Datenbankversion 10g auch im Storage Bereich Neuland betreten. Konsequent wird der Grid-Gedanke nun auch für die automatisierte Plattenplatzverwaltung fortgeführt. Bei ASM (Automatic Storage Management) handelt es sich um ein ORACLE eigenes nicht kostenpflichtiges Feature, dass über eine zusätzliche ORACLE Instanz (+ASM) verwaltet wird. Durch einfache Installation und Verwaltung des Storagesystems (Raw-Devices, Clusterfilesysteme, Mirroring, Striping…) soll die anfallenden Administrationsaufgaben vom Systemadministrator hin zum Datenbankadministrator verlagert werden. Was ist eine ASM-Instanz? Unter ORACLE 10g gibt es bei Verwendung von ASM zwei Arten von Instanzen: Datenbank- und ASM-Instanz. Die ASM-Instanz selbst enthält weder Datendateien noch Kontrolldatei. Es handelt sich hierbei lediglich um eine Instanz in der nomount Phase (status=startet) mit allen benötigten Datenbankprozessen und zusätzlichen ASM-spezifischen Prozessen. Ferner begnügt sich die ASM Instanz bereits mit einer SGA von 64 MB, da das I/O der Datenbankinstanz nicht über die ASM-Instanz ausgeführt wird. Sie verwaltet lediglich die Metadaten der gemounteten Diskgroups und tritt nur bei administrativen Tätigkeiten (z.B. Create Tablespace) der implementierten Datenbanken in Aktion. Detaillierte Beschreibungen zur ASM Technologie liefern die Trivadis Publikationen „Die Disk ist mein“ von Dr. Martin Wunderli oder „ORACLE10g: ein Blick ins Eingemachte“ von Christian Antognini und Dr. Martin Wunderli. Auch die Metalink Note:265633.1 Automatic Storage Management, Technical Best Practices liefert einen guten technischen Überblick. Erfahrungen aus der Praxis Der grundsätzlich positiven Einstellung unserer Kunden zu diesem neuen Feature steht bisher noch die Skepsis für neue Oracle Produkte gegenüber. ASM stellt für den Administrator eine „Black-Box“ dar, die über Betriebssystemmittel überhaupt nicht verwaltet werden kann. Zudem sind Backups ausschließlich mit RMAN möglich. Trivadis setzt bisher ohne nennenswerte Probleme ASM beim Kunden unter der ORACLE Standard Edition mit RAC Option ein. Backups werden dabei über das Trivadis BackupPackage, welches auf RMAN basiert, gefahren. ASM – Raw Device Storage nein Danke!? 1 von 5 Das Problem - mangelnde Testmöglichkeiten Eine exzellente Möglichkeit die kompletten ASM-Features mit Files auf Dateiebene anstelle von Raw Devices zu testen stellt der undokumentierte Parameter _asm_allow_only_raw_disks=FALSE dar. Mit einfachen Dateien, welche einzelne Platten simulieren, ermöglicht dieser Parameter die volle ASM-Funktionalität. Achtung: Oracle gewährleistet keinen Support bei Verwendung undokumentierter Parameter! Undokumentierte Parameter Über das Trivadis Script ssinipar.sql (frei verfügbar auf unser Webseite www.trivadis.com) können undokumentierte Parameter sichtbar gemacht werden. Mit dem SQL*PLUS Befehl „show parameter“ werden nur die undokumentierten, gesetzten Parameter angezeigt. Im Folgenden werden wir den Parameter _asm_allow_only_raw_disks=FALSE näher betrachten. Die gesamte ASM-Funktionalität wurde sowohl unter Windows XP als auch unter SuSE SLES9 getestet. Wie stellt man die benötigten „Disks“ für die Verwendung durch ASM bereit? Um einzelne Platten auf Dateiebene zu simulieren werden Dateien auf Betriebssystemebene mit Hilfe des Befehls DD (Disk Dump) erzeugt. Auf Windowssystemen können diese Files z.B. mittels Cygwin, einer „Linux-like“ Umgebung für Windows (Free Download unter http://www.cygwin.com) oder bei Installation eines Perl Interpreters (wie es z.B. das Trivadis BasEnv) erzeugt werden Unter Windows aus der Cywin Box oder unter Linux: rma@ltrma ~ $ dd if=/dev/zero of=D:/Ora/data/asmdisks/disk1 bs=1024k count=256 256+0 records in 256+0 records out Mit Hilfe eines PERL-Skripts: (Aufruf aus Trivadis BasEnv) rma@LTRMA:D:\Ora\data\asmdisks\ [DB10] type cre_ASM_file_perl my $s = '0' x 2**20; open(DC1,">d:/ora/data/asmdisks/disk1") || die "cannot create file - $!\n"; for (my $i=1; $i<=256; $i++) { print DC1 $s; } rma@LTRMA:D:\Ora\data\asmdisks\ [DB10] tvd_perl cre_ASM_file_perl Dieser Befehl erzeugt ein File der Größe 256M mit dem Namen „disk1“ im Verzeichnis „D:\Ora\data\asmdisks\“ Hinweis: Die ASM-Instanz benötigt Schreibzugriff auf die ASM-Disks ASM – Raw Device Storage nein Danke!? 2 von 5 Erstellen der ASM-Instanz ASM Instanzen mounten keine Datenbanken. Stattdessen verwalten sie die Metadaten, die benötigt werden um ASM-Files (entspricht je einem Datafile) für Datenbanken zur Verfügung zu stellen. Pro Server kann es nur eine ASM-Instanz geben. init+asm.ora erstellen unter Windows/Linux PFILE/SPFILE Windows PFILE/SPFILE Linux *.background_dump_dest='D:\Ora\admin\ASM\bdump' *.core_dump_dest='D:\Ora\admin\ASM\cdump' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='SHARED' *.shared_pool_size=60M *.user_dump_dest='D:\Ora\admin\ASM\udump' *._asm_allow_only_raw_disks=FALSE *.asm_diskstring='D:\Ora\data\asmdisks\disk*' *.asm_diskgroups= DATA_AREA_01 *.background_dump_dest='/opt/oracle/admin/+ASM/bdump' *.core_dump_dest='/opt/oracle/admin/+ASM/cdump' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='SHARED' *.shared_pool_size=60M *.user_dump_dest='/opt/oracle/admin/+ASM/udump' *._asm_allow_only_raw_disks='FALSE' *.asm_diskstring='/opt/oracle/oraraw/asmdisks/*' *.asm_diskgroups=DGR01, DGR02 Oracle empfiehlt aus diesem PFILE ein SPFILE zu erstellen, damit der Parameter asm_diskgroups automatisch aktualisiert wird, wenn neue Diskgroups hinzugefügt werden. Der Parameter asm_diskstring gibt das Disk Set an, das für Automatic Storage Management verwendet werden darf. Hierbei gibt es keinerlei Unterschiede zwischen den Betriebssystemen. Einfach den Parameter _asm_allow_only_raw_disks=FALSE in das PFILE/SPFILE eintragen. Hinweis: Bei Verwendung eines SPFILE wird der Parameter mit dem Alter System Befehl wie folgt implementiert: SQL> alter system set _asm_allow_only_raw_disks = true scope = spfile; alter system set _asm_allow_only_raw_disks = false * ERROR at line 1: ORA-00911: invalid character SQL> alter system set "_asm_allow_only_raw_disks" = true scope = spfile; System altered. Diskgroups erstellen Eine Diskgruppe besteht aus mehreren Platten, die als logische Einheit verwaltet werden. Diskgruppen sind intern über sog. Failgroups organisiert. Zusätzlicher Speicher wird in Einheiten von zusätzlichen Disks hinzugefügt oder entfernt. ASM verteilt die Dateien stets in 1MB Einheiten, den sog. Allocation Units, gleichmäßig auf die Platten innerhalb einer Gruppe. Es besteht die Möglichkeit zwischen drei verschieden Redundanz Leveln zu wählen (EXTERNAL keine Spiegelung, NORMAL einfache Spiegelung, HIGH doppelte Spiegelung). Failgroups sind Disks, die bei Ausfall eines Controllers oder einer oder mehrerer Platten die Daten via Spiegelung vor Datenverlust schützen. Hierbei entsteht durch den Ausfall einer oder mehrerer Platten keine Unterbrechung der Datenbankaktivität. Mögliche Redundancys hierbei sind Normal (mind. 2 Failgroups) und High (mind. 3 Failgroups). Über die Option External Redundancy wird das Mirroring komplett dem externen Plattensystem überlassen. Diese Option wird hauptsächlich im Rahmen der Verwendung eines Storage-Systems zum Einsatz kommen. ASM – Raw Device Storage nein Danke!? 3 von 5 Beispiele: Erstellen von Diskgroups: SQL> create diskgroup DATA_AREA_01 NORMAL redundancy 2 failgroup controller1 disk 'D:\Ora\data\asmdisks\disk01a', 3 'D:\Ora\data\asmdisks\disk03' 4 failgroup controller2 disk 'D:\Ora\data\asmdisks\disk01b', 5 'D:\Ora\data\asmdisks\disk04' 6 / Diskgroup created. SQL> create diskgroup DATA_AREA_02 HIGH redundancy 2 failgroup controller1 disk 'D:\Ora\data\asmdisks\disk05', 3 'D:\Ora\data\asmdisks\disk06' 4 failgroup controller2 disk 'D:\Ora\data\asmdisks\disk07', 5 'D:\Ora\data\asmdisks\disk08' 6 failgroup controller3 disk 'D:\Ora\data\asmdisks\disk09', 7 'D:\Ora\data\asmdisks\disk10' 8 / Diskgroup created. SQL> create diskgroup DATA_AREA_03 EXTERNAL redundancy 2 disk 'D:\Ora\data\asmdisks\disk36', 3 'D:\Ora\data\asmdisks\disk37', 4 'D:\Ora\data\asmdisks\disk38' 5 / Diskgroup created. SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup; NAME STATE TYPE TOTAL_MB FREE_MB ------------------------------ ----------- ------ ---------- ---------------------DATA_AREA_01 MOUNTED NORMAL 3072 2968 DATA_AREA_02 MOUNTED HIGH 3072 2916 DATA_AREA_03 MOUNTED EXTERN 3072 3018 SQL> Anmerkung: bei einem angezeigten freien Speicherplatz von 3GB stehen bei NORMAL Redundancy 1.5GB, bei HIGH 1 GB und bei EXTERN ca. 3 GB tatsächlich als Speicherplatz Die Verwendung des Underscore Parameters lässt auch hier alle Redundancy Levels abwickeln. Ein Mischbetrieb aller unterschiedlichen Einstellungen kann bequem getestet werden, völlig unabhängig ob nun tatsächlich ein High-End Storagesystem oder nur eine einzelne Notebookplatte zur Verfügung steht. Starten der ASM-Instanz Eine ASM Instanz wird mit dem Befehl „startup“ gestartet obwohl die Instanz in der nomount Phase bleibt Nach ausführen des Startup-Befehls werden Diskgroups, die der Init.ora Parameter asm_diskgroups beschreibt automatisch gemountet. Hinweis: „startup nomount“ mountet die Diskgroups nicht Î diese müssen dann explizit mit dem SQL-Befehl: ALTER DISKGROUP ALL MOUNT; gemountet werden. SQL> startup ASM instance started SQL> startup nomount ASM instance started Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SQL> > 104857600 787924 104069676 0 0 bytes bytes bytes bytes bytes Î Plattengruppen werden nicht gemountet Total System Global Area 104857600 bytes Fixed Size 787924 bytes Variable Size 104069676 bytes Database Buffers 0 bytes Redo Buffers 0 bytes ASM diskgroups mounted > Î Plattengruppen werden automatisch gemountet SQL> ALTER DISKGROUP ALL MOUNT; > Diskgroup altered. ASM – Raw Device Storage nein Danke!? 4 von 5 Vorraussetzung für das Starten einer ASM-Instanz ist der Start des Oracle Cluster Synchronisation Services Daemon (OCSSD), als Dienst unter Windows und als Eintrag in die inittab Datei unter Unixsystemen. Dieser Daemon wird bei der ASM Installation automatisch angelegt und gestartet. Achtung: Stoppt die ASM-Instanz, werden auch alle Instanzen gestoppt deren Daten über ASM verwaltet werden! Test der ASM-Funktionalitäten Die ASM-Instanz verwaltet den Speicherplatz der gemounteten Diskgruppen und Disks automatisch. Die Datenbankfiles werden innerhalb von ASM über OMF-Prinzipien (ORACLE Mananged Files) abgelegt. Hinweis: Alle Verwaltungsaufgaben innerhalb von ASM benötigen SYSDBA-Privilegien. Folgende Funktionen wurden getestet: • • • • • • • • • Hinzufügen/entfernen von Disks zu/aus Diskgroups Wiederherstellen von noch nicht vollständig entfernten Disks aus einer Diskgruppe Rebalancing-Aktionen (manuell angestoßen aber auch durch entfernen von Disks) ändern des asm_power_limits (Parameter zur Veränderung der Bereitstellung von Systemressourcen für das Rebalancing) Mounten/Dismounten von Diskgroups Löschen von ASM-Files Anlegen von Tablespaces der Testdatenbanken innerhalb von ASM Prüfen der Metadaten in ASM über ALTER Diskgroup DGR01 CHECK ALL Anlegen von Diskgruppen mit unterschiedlicher Redundancy Fazit Das neue Oracle 10g Feature ASM kann mit wenigen Handgriffen für Test- und Schulungszwecke durch Verwendung des undokumentierten Parameters _asm_allow_only_raw_disks umfangreich getestet werden. Insbesondere für die Ausarbeitung von Backup & Recovery Konzepten im Rahmen des geplanten produktiven Einsatzes des ASM-Features, kann im Voraus auf diesen Parameter zurückgegriffen werden. Es ist jedoch zu bezweifeln, dass Unternehmen, die bereits in Besitz von lizenzpflichtigen Produkten sind in diesem frühen Stadium auf die kostenneutrale ORACLE Software umsteigen. Literaturverweise: Metalink Infos: Notes:266028.1, 265633.1 Roland Maile Mirko Hotzy Infrastructure Managed Services Infrastructure Managed Services Trivadis GmbH, Stuttgart Max-Lang Strasse 56 D-70771 Leinfelden-Echterdingen Trivadis GmbH, Stuttgart Max-Lang Strasse 56 D-70771 Leinfelden-Echterdingen Tel: +49-711-903-63-230 Fax: +49-711-903-63-259 Tel: +49-711-903-63-230 Fax: +49-711-903-63-259 ASM – Raw Device Storage nein Danke!? 5 von 5