(ASM) – wie

Werbung
58_73_214638_DOAG
26.07.2006
Datenbank
8:54 Uhr
Seite 64
ASM
Oracle Automatic Storage Management
(ASM) – wie “automatisch” ist Automatic?
Autor: Markus Michalewicz, ORACLE Deutschland GmbH
Mit ASM hat Oracle bei der Datenbank 10g
einen beachtenswerten Vorstoß in Richtung
Speicherverwaltung unternommen. Offen
blieben zwei Fragen: Wie kann ASM die gesamte Speicherverwaltung automatisieren?
Und für wen eignet sich ASM?
Beide Fragen lassen sich ca. zwei Jahre nach der Einführung
von ASM klar beantworten: ASM automatisiert den Speicherbereich, der für die Datenbank-Dateien verwendet
wird. Und ASM wendet sich aufgrund seiner SchnittstellenFunktion sowohl an DBAs als auch an System- bzw.
Speicherverwaltungsadministratoren, die sich bei der Verwendung von ASM bereits im Vorfeld abgleichen sollten,
wie bei [1] beschrieben.
64
News Q3-2006
Dieser Abgleich zwischen allen beteiligten Gruppen ist die
Grundvoraussetzung, um mit ASM nicht nur eine hochverfügbare (im Sinne der Absicherung von Daten vor einem
Disk-Ausfall) Speicherverwaltung zu schaffen, sondern
auch eine performante (im Sinne guter I/O- und Durchsatzwerte). Gerade dieses Problem lässt sich gemäß [2] relativ leicht lösen, indem eine "geschickte Kombination"
von ASM und Funktionen des Speicher-Subsystems (wie
RAID- und Striping-Verfahren) gewählt wird. Um jedoch
entscheiden zu können, was eine geschickte Kombination
ist, müssen zunächst einmal die grundlegenden Eigenschaften sowie die Besonderheiten von ASM bekannt sein.
Dennoch kann es keine allgemeine Empfehlung für das
ideale Layout geben, da immer die jeweiligen Eigenschaften des Speicher-Subsystems und dessen Architektur zu
berücksichtigen sind.
www.doag.org
58_73_214638_DOAG
21.07.2006
9:45 Uhr
Seite 65
ASM
Grundlegende Eigenschaften von ASM
Prinzipiell gilt:
• Die kleinste, logische Einheit von ASM ist die ASMDisk, die wiederum in eine Disk-Gruppe aufgenommen werden kann.
• Die Disk-Gruppe selbst beinhaltet [1..n] ASM-Disks,
die mittels Failgroups weiter logisch unterteilt werden
können.
• Failgroups legen Beziehungen zwischen ASM-Disks
hinsichtlich einer Ausfall-Toleranz fest.
• Die Ausfall-Toleranz kann gesteigert werden, indem
Spiegelungsmechanismen von ASM genutzt werden
(ASM bietet keine paritätsbasierte Absicherung an).
• Eine Spiegelung kann in der Stufung "External Redundancy" (keine Spiegelung von ASM, sondern extern), "Normal Redundancy" (einfache Spiegelung)
oder "High Redundancy" (doppelte Spiegelung) vorgenommen werden.
• Die Festlegung des Spiegelungsgrades wird für die
Disk-Gruppe vorgenommen und ist danach bindend.
Eine nachträgliche Änderung bedingt ein Neu-Anlegen der Disk-Gruppe.
Datenbank
Mirroring-Verfahren eingesetzt zu werden, das in Abbildung 1 angedeutet ist. An dieser Stelle sei ergänzend
bemerkt, dass ein Host-Based-Mirroring auch auf Basis nur
eines Servers aufgesetzt werden kann. Im Cluster-Verbund
erscheint dieses Konstrukt jedoch häufiger.
Grundlagen und Abhängigkeiten am Beispiel
Host-Based-Mirroring mit ASM
Aus diesen bereits oft zitierten Grundtechniken von ASM
ergeben sich einige Abhängigkeiten, die auch heute noch
besonderer Bemerkung bedürfen:
• ASM verteilt alle Daten (Extents) über alle Disks in einer Disk-Gruppe.
• Diese Verteilung von neu anzulegenden Extents (Striping) kann nicht abgeschaltet werden. Sind in einer
Disk-Gruppe mehr als eine Disk enthalten, wird ASM
die Daten über alle diese Disks verteilen.
• Failgroups sind in diesem Zusammenhang abstrakt
zu sehen. Es wird festgelegt, dass bei Ausfall aller Disks
einer Failgroup und "Normal Redundancy" auf Basis
einer weiteren Failgroup weitergearbeitet werden
kann – jedoch nicht auf Basis welcher.
• Eine Failgroup bedingt keine Festlegung, wo das so genannte Primär- und das Spiegel-Extent angelegt wird
(keine typische Primär-/Sekundär-Spiegelung).
• Kommt es zu einer lesenden Anfrage, wird immer von
dem jeweiligen Primär-Extent gelesen (solange verfügbar).
Besondere Relevanz kommt diesen Tatsachen immer dann
zu, wenn ASM verwendet werden soll, um im Host-Based-
www.doag.org
Abbildung 1: Host-Based-Mirroring mit ASM
Dieses Verfahren kann mit ASM deshalb relativ problemlos umgesetzt werden, da ASM im so genannten UserMode läuft und daher bei einer geeigneten Verbindung der
Speicher-Subsysteme gar nicht erkennen kann, dass einige
Disks aus dem einen, andere aber aus dem anderen Speicher-Subsystem kommen. Generell gilt: ASM kann als Disk
nur das sehen, was ihm das unterliegende Betriebssystem
anbietet.
An dieser Stelle wird deutlich, dass die Grundüberlegungen zum Aufsetzen einer solchen Konstruktion von
allen beteiligten Gruppen gemeinsam erfolgen müssen. So
ist es sicherlich für den speicherverwaltenden Administrator problemlos möglich, eine LUN aus jedem der SpeicherSubsysteme bereitzustellen. Er sollte dabei allerdings
wissen, dass diese LUNs auf einer höheren Ebene logisch
zusammengefasst werden.
Hieraus ergeben sich einige Abhängigkeiten, die unbedingt beachtet werden sollten – sowohl im Falle des HostBased-Mirroring-Verfahrens als auch generell:
• In einer ASM-Disk-Gruppe sollten immer Disks bzw.
LUNs derselben physischen Größe verwendet werden.
• Nach Möglichkeit ist auf ein ähnliches bzw. gleiches
I/O-Verhalten der LUNs zu achten.
Aus beiden Aussagen geht hervor, dass beide SpeicherSubsysteme selbst ein ähnliches Verhalten bei deren Zugriff
sicherstellen sollten. Dies bedeutet, dass etwa ein HostBased-Mirroring-Verfahren auf Basis unterschiedlicher
Speicher-Subsystem-Arten (z.B. ein mit Fibre Channel angebundenes SAN und ein mittels Ethernet erreichbares
NAS-System) eher als nicht ideal bezeichnet werden muss,
News Q3-2006
65
58_73_214638_DOAG
21.07.2006
Datenbank
9:45 Uhr
Seite 66
ASM
obwohl es technisch durchaus möglich wäre. Hintergrund
ist, dass in diesem Fall schon aufgrund der Zuleitung ein
unterschiedliches I/O-Verhalten erwartet werden kann,
was innerhalb einer Disk-Gruppe nicht erstrebenswert ist.
In diesem Zusammenhang wird auch deutlich, dass eine zu starke räumliche Trennung eines der beiden SpeicherSubsysteme vom Server, der den I/O-absetzt, ebenfalls eine
negative Auswirkung auf das I/O-Verhalten in dieser DiskGruppe haben kann. Entsprechende Tests und eventuelle
Optimierungen sollten daher vor oder während der Installation vorgenommen werden.
Aus demselben Grund sollte auch auf einer weiteren
Ebene, nämlich der eigentlichen LUNs aus dem jeweiligen
Speicher-Subsystem, auf ein ähnliches I/O-Verhalten
geachtet werden. So kann, ohne an dieser Stelle eine Bewertung dieser Verfahren vornehmen zu wollen, generell
davon ausgegangen werden, dass spiegelungsbasierte, lokale Absicherungsverfahren ein anderes Verhalten aufweisen als paritätsbasierte (RAID1- vs. RAID>2-Vergleich). Es
empfiehlt sich daher, alle LUNs einer Disk-Gruppe sowohl
in dem hier diskutierten Verfahren als auch generell immer
gleichartig aufzusetzen.
Abschließend sei zum Host-Based-Mirroring-Verfahren
mit ASM noch erwähnt, dass ASM grundsätzlich nur einmal spiegeln kann. Hier spiegelt ASM indirekt zwischen
den beiden Speicher-Subsystemen. Diese sollten selbst jedoch eine interne, lokale Datensicherung vorhalten. Zwar
kann ein Ausfall einer einzelnen Disk auch mit ASM abgesichert werden, nur bedeutet dies beim Host-Based-Mirroring, dass indirekt wiederum eine Absicherung über die
Speicher-Subsysteme erfolgt, was für die Sache selbst zu aufwändig sein dürfte.
ASM-Metadaten
Das Erstaunliche bei ASM ist, dass die Disk-Verwaltung
selbst völlig ohne externe Datenhaltung erfolgt. Abgesehen
von dem zum Starten der ASM-Instanz verwendeten PFILE
bzw. der initASM.ora und dem eventuell separat vom
Datenbank-Home erstellten ASMHome (ab 10gR2 eine mögliche Installationsvariante) benötigt ASM
keinerlei Datenhaltung außerhalb
dieser intern von ASM verwalteten
Informationen.
Die ASM-Metadaten werden im
Header der ASM-Disk verwaltet. Dabei muss bedacht werden, was genau
die ASM-Disk ist. In Frage kommen:
• Die gesamte Disk – ein Block Device wird vollständig
für ASM verwendet (10gR2)
• Die gesamte Disk, aber ein RAW-Device
• Eine partitionierte Disk – in der Regel ebenfalls als
RAW-Device verwendet
Der Header der ASM-Disk ist dabei immer relativ zu der
vom Betriebssystem zur Verfügung gestellten Disk. Wird
immer die gesamte Disk für ASM verwendet, bedeutet dies,
dass der Anfang der betriebssystemseitigen Disk auch der
Header der ASM-Disk ist. Wird die Disk auf BetriebssystemEbene partitioniert (Slices gebildet), verändert sich der
ASM-Disk-Header in Relation zu dem Header der Betriebssystem-Disk (er "rutscht" nach hinten).
66
News Q3-2006
Wird zudem die Menge der Informationen berücksichtigt,
die ASM in den Metadaten hinterlegen muss (z.B. Informationen darüber, welche Disk in welcher Failgroup eingebunden ist, oder welche Failgroups zu welcher
Disk-Gruppe gehören), wird deutlich, dass die Pflege der
Metadaten einen wichtigen Punkt bei den administrativen
Aufgaben von ASM darstellt.
Abbildung 2: ASM-Metadaten – stilisiert
Für die Verwaltung der ASM-Metadaten gibt es allerdings
keinen eigenen Prozess, und auch ein "Resilvering" dieser
Daten ist derzeit leider nicht möglich. Die notwendigen
Operationen (Updates der Metadaten z.B. durch Abhängigkeitsänderung beim Hinzufügen oder Entfernen von
Disks) werden im Zuge eines so genannten Rebalancings
vorgenommen. Einzig die Allokation von neuen Extents
erfolgt ohne einen expliziten Rebalancing-Vorgang.
Der typische "Praxis-Test"
Ungeachtet eines fehlenden Resilverings für ASM-Metadaten erfolgt ein erster, "praxisnaher Ausfalltest" allerdings in
einer Weise, in der ASM seine Stärken leider nicht ausspielen kann. Ein entsprechender – aber zu vermeidender –
Misserfolg ist daher oft die Folge.
Abbildung 3: Typische Test-Architektur
Dabei geht die typische Test-Architektur oftmals von einer
Disk-Gruppe mit 2 Failgroups (in Abbildung 3 rot und grün
innerhalb der Disk-Gruppe markiert) aus. In den Failgroups
selbst sind jeweils [1..n] Disks eingebunden und die DiskGruppe wurde mit "Normal Redundancy" angelegt. Die
typische Testabfolge ist dann:
1. Gleichmäßige Disk-Auslastung generieren (in der Regel durch Datenbank-Erstellung)
2. Eine Disk/Alle Disks einer Failgroup plötzlich und
ohne Vorwarnung entfernen
3. ASM-Verhalten beobachten – erwartet wird:
a. Erkennung des Disk-Ausfalls
www.doag.org
58_73_214638_DOAG
21.07.2006
9:45 Uhr
Seite 67
ASM
Datenbank
ob alle Rebalancing- bzw. Disk-Gruppen-Operationen bereits abgeschlossen sind, sollte dabei nicht allein anhand
einer Prozessauflistung (ps –ef |grep bal) auf BetriebssystemEbene erfolgen.
Die Dauer des Rebalancings ist direkt abhängig von der
Menge der zu verlagernden Daten innerhalb der DiskGruppe und dem Wert des Initialisierungsparameters
ASM_POWER_LIMIT. Dieser kann die Werte 0 bis 11 annehmen, wobei "0" für "kein Rebalancing" steht und generell nicht empfohlen ist. Der Wert "11" hingegen gibt
an, möglichst schnell das Rebalancing abschließen zu
wollen, indem mehrere Prozesse zur Verlagerung der Daten
gestartet werden. Dabei ist zu beachten, dass es sich um I/Oselect disk_number,failgroup,Mount_
status,
Header_status,mode_status,stabezogene Prozesse handelt und nicht um eine Berücksichte,path
tigung der CPU-Auslastung.
from v$asm_disk;
Ferner sei bemerkt, dass ein Wert über "5" für das
asm_power_limit nur in wenigen Fällen eine deutliche
Beschleunigung bewirken wird. Auch der Einsatz eines
RACs kann diesen Vorgang bezogen auf eine einzelne Diskwird nach absehbarer Zeit der in Ausgabe 1 dargestellte AusGruppe nicht weiter verbessern, da ein Rebalancing zu
gangszustand zurückerwartet:
einem bestimmten
Zeitpunkt für eine
DISK_NUMBER FAILGROUP MOUNT_S HEADER_STATU MODE_ST STATE
PATH
Disk----------- ---------- ------- ------------ ------- -------- -------------- bestimmte
Gruppe nur von
--1 T3_2
CACHED MEMBER
ONLINE NORMAL
/dev/raw/raw8
einer Instanz durch0 T3_1
CACHED MEMBER
ONLINE NORMAL
/dev/raw/raw7
geführt
werden
kann. Ein Failover
zu einer anderen
Ausgabe 1: Disk-Normalzustand in der Test-Architektur
ist zwar möglich,
eine Parallelisierung
DISK_NUMBER FAILGROUP MOUNT_S HEADER_STATU MODE_ST STATE
PATH
des Vorgangs über
----------- ---------- ------- ------------ ------- -------- ------------Instanzen hinweg
-jedoch nicht.
1
CLOSED MEMBER
ONLINE NORMAL
/dev/raw/raw7
Zur Vermeidung
1 T3_2
CACHED MEMBER
ONLINE NORMAL
/dev/raw/raw8
0
MISSING CANDIDATE
OFFLINE HUNG
eines Zustands wie
in Ausgabe 2 dargestellt, ist die MetaAusgabe 2: Hung-Status nach Schritt 4 des Testplans
daten-Pflege
von
ASM bei Schritt 4 des Testplans zu berücksichtigen.
Der in Ausgabe 1 dargestellte Normalzustand besagt, dass
Die Besonderheit in Ausgabe 2 besteht im Status "OFFdie Disks /dev/raw/raw[7..8] in der Disk-Gruppe T3 sind
LINE HUNG" für eine nicht weiter spezifizierte Disk. Nur
und jeweils der Failgroup T3_1 und T3_2 zugewiesen wuraus der ersten Zeile ist zu erkennen, dass mit diesem Einden.
trag die Disk /dev/raw/raw7 gemeint ist, da diese laut erster
Oft kommt es aber dazu, dass dieses Verhalten nicht wie
Zeile zwar ein Member ist, aber weder einer Failgroup noch
gewünscht eintritt. Der Grund dafür liegt jedoch nicht alsonst wie zugewiesen werden konnte.
lein bei ASM, zumindest nicht dann, wenn einige der beDer Grund für diese Ausgabe ist, dass hier Schritt 4
reits diskutierten ASM-Spezifika berücksichtigt werden.
höchstwahrscheinlich vor Beendigung des RebalancingSo sollte zunächst sichergestellt werden, dass der
Vorgangs durchgeführt wurde, ohne die Disk vorher komRebalancing-Vorgang, der sofort nach der Erkennung des
plett gelöscht zu haben.
Disk-Ausfalls gestartet wird, auch beendet wurde. Ein
In diesem Fall sind noch Metadaten, die zuvor in dem
Disk-Ausfall kann von ASM übrigens nur dann erkannt
Disk-Header eingetragen wurden, auf der Disk enthalten.
werden, wenn das Betriebssystem den Ausfall bereits erfasst
Zudem wird die Disk /dev/raw/raw7 dem System wieder
hat (zu prüfen in den System-Logs). Sollte also überhaupt
unter demselben Namen zugeführt. Dies "verwirrt" ASM,
kein Rebalancing einsetzen, kann dies eine mögliche
das ja noch im Begriff ist, diese Disk einem Rebalancing zu
Ursache sein.
unterziehen. Mit anderen Worten, es wird dem System
Ein einmal gestarteter Rebalancing-Vorgang kann zwar
eine Disk hinzugefügt, die offiziell – und so sagen es auch
im Notfall mit alter diskgroup <DG-Name> rebalandie Metadaten auf der Disk – ja noch Bestandteil des
ce power 0; gestoppt werden. Dies sollte in der Regel aber
Systems ist.
nicht erforderlich sein. Zudem kann er erneut gestartet
Eine präventive Maßnahme, die auch hier hilft, ist das
werden mit alter diskgroup <DG-Name> rebalance;
Löschen der Metadaten auf der Disk. Dazu reicht es aus, die
und seine vermutliche Laufzeit über die View v$asm_opeersten 2 MB der ASM-Disk mittels DD zu löschen. Unter
ration eingesehen werden. Eine Entscheidung darüber,
b. Einsetzen des Rebalancings
c. Sicherstellen einer reorganisierten Disk-Struktur
bei durchgehender Zugriffsmöglichkeit auf die
Daten
4. "Instandsetzen der Konfiguration" durch Hinzufügen
der zuvor entfernten Disk
Während die ersten drei Schritte kein Problem darstellen,
tritt mit Schritt 4 des "Testplans" ein Verhalten ein, das von
vielen Anwendern anders erwartet wird. Gemessen an dem
Output eines
www.doag.org
News Q3-2006
67
58_73_214638_DOAG
21.07.2006
Datenbank
9:45 Uhr
Seite 68
ASM
Windows kann entweder das Oracle-Werkzeug logpartformat, ocopy oder ein frei verfügbares DD-Werkzeug für
Windows verwendet werden.
Wird der Disk-Header bereits vor der erneuten Zuführung der Disk zum System mit DD gelöscht, sollte der
in Ausgabe 2 dargestellte Zustand erst gar nicht eintreten.
Für eine Anwendung nach bereits eingetretenem "HUNG"
empfiehlt sich ein DD, gefolgt von einem:
alter diskgroup T3
add failgroup T3_1
disk '/dev/raw/raw7' force;
Der Vorteil des sofortigen Absetzens der Erweiterung "force" besteht darin, dass eine unnötige Angabe dieses
Parameters in der Regel sofort mit einer entsprechenden
Meldung quittiert wird und danach ein Hinzufügen der
Disk ohne "force" erfolgen kann. In jedem Fall sollte das
Systemverhalten anschließend für eine "angemessene Zeitspanne" (v$asm_operation) beobachtet und das Ende des
mit dem "add disk"-Befehl erneut gestarteten Rebalancings
abgewartet werden. Ein unkontrolliertes oder mehrfaches
Absetzen von "add disk"- und "drop disk"-Operationen,
eventuell sogar mit dem Parameter "force", wird das Problem nicht lösen!
dann, wenn nur noch eine Disk in der Disk-Gruppe enthalten ist – diese enthält ja auch Metadaten).
ASM geht bei einem Ausfall der Disk von einem Verlust
der Daten aus. Ist dies nicht der Fall, sollte der Administrator, wenn er diesen Ausfall willentlich herbeiführt, dafür
Sorge tragen, dass ASM den Ausfall akzeptiert, z.B. durch
ein vorheriges Dismount der Disk-Gruppe. Alternativ kann
er auch durch einen präventiven DD oder einen DD, der
im akuten Bedarfsfall abgesetzt wurde, zumindest den Verlust der im Header enthaltenen Metadaten forcieren. Der
Rest erfolgt dann aber (voll-)automatisch.
Literatur
• [1] Michalewicz, M., Czarski, C.: Effektive Datenbankund Storage-Layouts (im Vergleich), Foliensatz,
ORACLE Deutschland GmbH, 2005, www.oracle.com/
global/de/feedback/massendaten/Oracle_Effektive_
Datenbank_und_Storage-Layouts.pdf
• [2] Shakian, A.: Take the Guesswork out of Database
Layout and I/O Tuning with Automatic Storage
Management, Oracle Corporation, December 2005,
www.oracle.com/pls/wocprod/docs/page/ocom/tech
nology/products/database/asm/pdf/take%20the%20
guesswork%20out%20of%20db%20tuning%2001
06.pdf
Fazit
Der hier dargestellte "Praxis-Test" ist allenfalls beispielhaft
für kurzfristige Ausfälle. Diese gibt es für ASM nicht. Geht
eine Disk verloren, werden sofort nach der Erkennung des
Verlustes die dargestellten Operationen eingeleitet (auch
Kontakt:
Markus Michalewicz
[email protected]
DOAG-Schulungstag 17.11.2006
Unsere Schulungsthemen in diesem Jahr:
•
•
•
•
•
•
•
•
Optimierte Datensicherung in Oracle 10g:
Backup und Recovery schnell und sicher!
MD Consulting & Informationsdienste GmbH
Backup und Recovery mit dem Oracle Recovery Manager
msg systems ag
Datenbank Security
MuniQSoft GmbH
SQL Statement Tuning
OPITZ CONSULTING GmbH
Advanced PL/SQL
ORDIX AG
Entwurf wohlstrukturierter Prozesse und ihre
Umsetzung mit BPEL
PROMATIS software GmbH
Power of OLAP
TEAM GmbH
High Availability and beyond
Trivadis GmbH
Anmeldung unter: www.doag.org/go/schulung
68
News Q3-2006
www.doag.org
Herunterladen