ASM – Raw Device Storage nein Danke!?

Werbung
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
Herunterladen