linux:nfs_share_vot_files_oracle_rac
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:nfs_share_vot_files_oracle_rac [2018/11/30 09:56] – [NFS Client vorbereiten] gpipperr | linux:nfs_share_vot_files_oracle_rac [2020/10/17 10:52] (aktuell) – [Im Fehlerfall - NFS Mount längere Zeit nicht mehr vorhanden] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====NFS für einen VOT File einem 12c Oracle Real Applikation Clusters unter Linux 7 verwenden===== | ||
+ | |||
+ | **Aufgabe: | ||
+ | |||
+ | Für ein Oracle RAC über zwei Storages benötigen wir für eine vollständige Architektur noch einen dritten gesharten Speicherplatz. | ||
+ | |||
+ | Siehe => [[dba: | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Ablauf: | ||
+ | * Basis Oracle Linux 7.2 Installation, | ||
+ | * NFS Server im DNS Server für das RAC Clusters aufnehmen | ||
+ | * NFS Server Software einrichten | ||
+ | * NFS Client an die RAC Server anbinden | ||
+ | * Disk im NFS Share anlegen | ||
+ | * Disk als " | ||
+ | * VOT Files auf dieser Disk Group betreiben | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== NFS Server vorbereiten ==== | ||
+ | |||
+ | Nach der Basis Installation (Wie zum Beispiel => [[linux: | ||
+ | |||
+ | ==NFS Software== | ||
+ | |||
+ | <code bash> | ||
+ | yum install nfs-utils | ||
+ | </ | ||
+ | |||
+ | ==User== | ||
+ | |||
+ | User und Gruppe einrichten mit der gleichen ID wie auf den anzubindenden Systemen: | ||
+ | < | ||
+ | # Auf den zielsystem racdb01 testen welche ID's vergeben wurden | ||
+ | # id grid | ||
+ | # uid=1101(grid) gid=1100(oinstall) groups=1101(dba), | ||
+ | |||
+ | groupadd -g 1100 oinstall | ||
+ | groupadd -g 1101 dba | ||
+ | |||
+ | useradd -u 1101 -g oinstall -G dba grid | ||
+ | passwd grid | ||
+ | |||
+ | id grid | ||
+ | uid=1101(grid) gid=1100(oinstall) groups=1100(oinstall), | ||
+ | |||
+ | </ | ||
+ | |||
+ | == NFS Directory == | ||
+ | |||
+ | Verzeichnis anlegen: | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | |||
+ | #rechte vergeben | ||
+ | chown grid:dba / | ||
+ | |||
+ | </ | ||
+ | |||
+ | == NFS Directory freigeben == | ||
+ | |||
+ | Verzeichnis nach außen frei geben: | ||
+ | <code bash> | ||
+ | vi / | ||
+ | |||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==NFS Server starten == | ||
+ | |||
+ | NFS aktiveren: | ||
+ | |||
+ | <code bash> | ||
+ | #rpc bind prüfen | ||
+ | systemctl status rpcbind | ||
+ | |||
+ | #muss zuvor laufen! | ||
+ | |||
+ | #NFS Service aktivieren | ||
+ | systemctl enable nfs-server.service | ||
+ | |||
+ | #starten | ||
+ | systemctl start nfs | ||
+ | |||
+ | #testen | ||
+ | systemctl status nfs | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==Reboot test== | ||
+ | |||
+ | Prüfen ob NFS nach einem Reboot der Maschine auch noch das NFS freigegeben ist: | ||
+ | |||
+ | <code bash> | ||
+ | #Reboot | ||
+ | reboot | ||
+ | |||
+ | #Testen | ||
+ | exportfs -v | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== NFS Client vorbereiten ==== | ||
+ | |||
+ | |||
+ | Folgende NFS Mount Optionen sind von Oracle freigegeben: | ||
+ | < | ||
+ | rw, | ||
+ | </ | ||
+ | |||
+ | ==Mount Point anlegen== | ||
+ | |||
+ | Mount Point anlegen (auf allen Knoten!): | ||
+ | <code bash> | ||
+ | # Als user grid oder rechte geben! | ||
+ | mkdir / | ||
+ | |||
+ | chown -R grid: | ||
+ | chmod 770 / | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Mount Test == | ||
+ | |||
+ | Auf dem RAC Knoten testen ob sich das NFS auch mounten läßst: | ||
+ | |||
+ | <code bash> | ||
+ | ping nfsstorage01 | ||
+ | |||
+ | showmount -e nfsstorage01 | ||
+ | |||
+ | |||
+ | |||
+ | mount nfsstorage01:/ | ||
+ | |||
+ | #prüfen | ||
+ | mount | ||
+ | .. | ||
+ | nfsstorage01:/ | ||
+ | .. | ||
+ | </ | ||
+ | |||
+ | ==fstab editieren und mounten== | ||
+ | |||
+ | In fstab auf jeden Knoten aufnehmen: | ||
+ | <code bash> | ||
+ | vi /etc/fstab | ||
+ | nfsstorage01:/ | ||
+ | </ | ||
+ | |||
+ | Auf allen Knoten durchführen und mounten! | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ====ASM " | ||
+ | |||
+ | |||
+ | == Disk anlegen== | ||
+ | |||
+ | |||
+ | In diesem Mount Point wird nun die ASM Disk von einem der RAC Knoten vorbereitet: | ||
+ | <code bash> | ||
+ | |||
+ | #Als User GRID damit die Rechte auch stimmen! | ||
+ | |||
+ | dd if=/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ! Muss die gleiche Größe wie die anderen Platten haben sonst wird mit " | ||
+ | |||
+ | |||
+ | == Platte einbinden== | ||
+ | |||
+ | |||
+ | Weiter geht es nun mit der graphischen Oberfläche | ||
+ | |||
+ | " | ||
+ | |||
+ | <code bash> | ||
+ | # X Umgebung einrichten! | ||
+ | #Grid Home setzen | ||
+ | asmca & | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Disk Suchstring um die zuvor erzeugte leere Quorum Disk ergänzen: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Platte als Quorum Platte hinzufügen: | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | ==VOT Files umziehen == | ||
+ | |||
+ | VOT Files überprüfen: | ||
+ | |||
+ | <code bash> | ||
+ | export GRID_HOME=/ | ||
+ | |||
+ | $GRID_HOME/ | ||
+ | # in meinen Fall zurzeit die VOT Files auf einer anderen Diskgroup | ||
+ | </ | ||
+ | |||
+ | Auf die neue Platte umziehen: | ||
+ | <code bash> | ||
+ | |||
+ | # auf die VOT Platten mit dem NFS wieder verschieben | ||
+ | |||
+ | $GRID_HOME/ | ||
+ | |||
+ | #Prüfen: | ||
+ | | ||
+ | ## STATE File Universal Id File Name Disk group | ||
+ | -- ----- ----------------- | ||
+ | 1. ONLINE | ||
+ | 2. ONLINE | ||
+ | 3. ONLINE | ||
+ | |||
+ | </ | ||
+ | |||
+ | Nun haben wir unser Ziel erreicht, wir haben 3 Vot Files an drei Storage Locations. | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== Test des Fehlerfalles ==== | ||
+ | |||
+ | Fällt nun eines der beiden Storages aus bzw., die ganze entsprechenden Abschnitte verbleiben immer noch 2 VOT Files für die Cluster Synchronisation. | ||
+ | |||
+ | Meldungen beim Ausfalltest: | ||
+ | |||
+ | <code bash> | ||
+ | 2016-09-12 21: | ||
+ | |||
+ | 2016-09-12 21: | ||
+ | |||
+ | ... | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | 2016-09-12 21: | ||
+ | |||
+ | 2016-09-12 21: | ||
+ | |||
+ | .... | ||
+ | |||
+ | 2016-09-12 21: | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Sehr interessant bei den Fehlermeldungen ist hier die Zeile mit dem "No I/O has completed after 50% of the maximum interval. Voting file / | ||
+ | |||
+ | => in 2*99150 ms = 198300ms = 198,3s ist der Timeout abgelaufen und die VOT Disk wird deaktivert. | ||
+ | |||
+ | |||
+ | == Test Ausfall des NFS == | ||
+ | |||
+ | Was passiert aber nun wenn das NFS auffällt? | ||
+ | |||
+ | NFS Storage wird " | ||
+ | |||
+ | CRS Log Messages: | ||
+ | <code bash> | ||
+ | 2016-09-12 22: | ||
+ | 2016-09-12 22: | ||
+ | |||
+ | ..... | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | |||
+ | .... | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | |||
+ | .... | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | 2016-09-12 22: | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | |||
+ | ... | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | |||
+ | ... | ||
+ | |||
+ | 2016-09-12 22: | ||
+ | </ | ||
+ | Es dauert etwas länger bis sich das beruhigt hat, hier scheinen automatisch die timeouts etwas größer zu sein. | ||
+ | |||
+ | Nach mehr als 30 Minuten NFS Storage wieder gestartet. | ||
+ | |||
+ | Als root testen ob der Mount Point wieder erreichbar ist: | ||
+ | |||
+ | <code bash> | ||
+ | ping nfsstorage01 | ||
+ | |||
+ | #Bleibt hängen! | ||
+ | cd / | ||
+ | ls | ||
+ | |||
+ | </ | ||
+ | |||
+ | Als root ist der NFS Mount nicht erreichbar ... etwas 2-3 Minuten warten .... | ||
+ | |||
+ | Und dann plötzlich im Logfile: | ||
+ | <code bash> | ||
+ | |||
+ | 2016-09-12 23: | ||
+ | |||
+ | </ | ||
+ | Es hat sich selbständig repariert! | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Im Fehlerfall - NFS Mount längere Zeit nicht mehr vorhanden ==== | ||
+ | |||
+ | Im Alert.log der ASM Instance: | ||
+ | <code bash> | ||
+ | .. | ||
+ | NOTE: waiting for instance recovery of group 3 | ||
+ | NOTE: waiting for instance recovery of group 3 | ||
+ | .. | ||
+ | </ | ||
+ | |||
+ | Vot Gruppe 3 testen: | ||
+ | <code bash> | ||
+ | | ||
+ | ## STATE File Universal Id File Name Disk group | ||
+ | -- ----- ----------------- | ||
+ | 1. ONLINE | ||
+ | 2. ONLINE | ||
+ | 3. OFFLINE | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Vot Disk auf NFS ist offline | ||
+ | |||
+ | |||
+ | Lösung | ||
+ | |||
+ | NFS Mount wieder aktivieren | ||
+ | |||
+ | Dann wieder die Platte neu in die Diskgruppe aufnehmen: | ||
+ | Test mit eigenen Script, siehe github für den Code | ||
+ | <code sql> | ||
+ | |||
+ | SQL> | ||
+ | |||
+ | Parameter 1 = Data Group Name => VOTPRD | ||
+ | |||
+ | |||
+ | ASM Failgroups of a Diskgroup | ||
+ | |||
+ | Group Failgroup | ||
+ | name | ||
+ | -------------------- ------------------------------ -------------------- ------------------------------ -------------- | ||
+ | VOTPRD | ||
+ | | ||
+ | VOTPRD | ||
+ | VOTPRD | ||
+ | |||
+ | ... to online / offline all disks in a failgroup | ||
+ | ... ALTER diskgroup VOTPRD online|offline disks in failgroup < | ||
+ | ... | ||
+ | SQL> alter diskgroup VOTPRD online disks in failgroup OCR01_NFS; | ||
+ | |||
+ | </ | ||
+ | |||
+ | teste: | ||
+ | |||
+ | <code bash> | ||
+ | [grid@db01: | ||
+ | ## STATE File Universal Id File Name Disk group | ||
+ | -- ----- ----------------- | ||
+ | 1. ONLINE | ||
+ | 2. ONLINE | ||
+ | 3. ONLINE | ||
+ | Located 3 voting disk(s). | ||
+ | |||
+ | </ | ||
+ | |||
+ | Platte ist wieder online | ||
+ | |||
+ | |||
+ | Siehe auch => ASM Instance Is Hanging in an Extended Cluster When the Third Voting Disk on NFS Is Unavailable (Doc ID 1551786.1) | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ====Quellen ==== | ||
+ | |||
+ | Oracle: | ||
+ | * http:// | ||
+ | |||
+ | RedHat: | ||
+ | |||
+ | * https:// | ||
linux/nfs_share_vot_files_oracle_rac.txt · Zuletzt geändert: 2020/10/17 10:52 von gpipperr