Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:nfs_share_vot_files_oracle_rac

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:nfs_share_vot_files_oracle_rac [2018/11/30 10:13] – [ASM "Quorum" Disk einrichten] gpipperrlinux: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:asm_platten_verteilen|Oracle ASM 12c - Oracle Disk Groups über zwei Storages verteilen - Ein Oracle Cluster für zwei Brandabschnitte verteilen]]
 +
 +
 +{{ :dba:rac:vot_disk_architecture_rac_v01.png | VOT Disk Verteilung in einem Stretched RAC Cluster}}
 +
 +
 +Ablauf:
 +  * Basis Oracle Linux 7.2 Installation, minimal, Servernamen und IP Adressen konfigurieren
 +  * 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 "Quorum" Disk in einer normal Redundancy Disk Group einbinden
 +  * VOT Files auf dieser Disk Group betreiben
 +
 +
 +----
 +
 +==== NFS Server vorbereiten ====
 +
 +Nach der Basis Installation (Wie zum Beispiel =>  [[linux:linux_7_system_grundeinstellungen_oracle_datenbank_rac|Ein Oracle Linux 7 Basis System]]) muss die NFS Software, die User für NFS und ein Speicherplatz auf dem Server eingerichtet werden.
 +
 +==NFS Software==
 +
 +<code bash>
 +yum install nfs-utils 
 +</code>
 +
 +==User==
 +
 +User und Gruppe einrichten mit der gleichen ID wie auf den anzubindenden Systemen:
 +<code  bash>
 +# Auf den zielsystem racdb01 testen welche ID's vergeben wurden
 +# id grid
 +# uid=1101(grid) gid=1100(oinstall) groups=1101(dba),1002(asmadmin),1100(oinstall)
 +
 +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),1101(dba)
 +
 +</code>
 +
 +== NFS Directory ==
 +
 +Verzeichnis anlegen:
 +<code bash>
 +mkdir /srv/VOTDISK
 +
 +#rechte vergeben
 +chown grid:dba /srv/VOTDISK
 +
 +</code>
 +
 +== NFS Directory freigeben ==
 +
 +Verzeichnis nach außen frei geben:
 +<code bash>
 +vi /etc/exports
 +
 +/srv/VOTDISK *(rw,sync,all_squash,anonuid=1101,anongid=1101)
 +
 +</code> Nach dem * darf kein Leerzeichen folgen, mit dem * erlauben wir Zugriff von allen Clients!
 +
 +
 +==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
 +
 +</code>
 +
 +
 +==Reboot test==
 +
 +Prüfen ob NFS nach einem Reboot der Maschine auch noch das NFS freigegeben ist:
 +
 +<code bash>
 +#Reboot
 +reboot
 +
 +#Testen
 +exportfs -v
 +/srv/VOTDISK    <world>(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=1101,anongid=1101,sec=sys,rw,secure,root_squash,all_squash)
 +
 +</code>
 +
 +
 +----
 +
 +==== NFS Client vorbereiten ====
 +
 +
 +Folgende NFS Mount Optionen sind von Oracle freigegeben: 
 +<code>
 +rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600
 +</code>
 +
 +==Mount Point anlegen==
 +
 +Mount Point anlegen (auf allen Knoten!):
 +<code bash>
 +# Als user grid oder rechte geben!
 +mkdir /opt/oracle/VOTNFSDISK
 +
 +chown -R grid:asmadmin /opt/oracle/VOTNFSDISK
 +chmod 770  /opt/oracle/VOTNFSDISK 
 +
 +</code>
 +
 +== Mount Test ==
 +
 +Auf dem RAC Knoten testen ob sich das NFS auch mounten läßst:
 +
 +<code bash>
 +ping nfsstorage01
 +
 +showmount -e nfsstorage01
 +
 +
 +
 +mount nfsstorage01:/srv/VOTDISK /opt/oracle/VOTNFSDISK
 +
 +#prüfen
 +mount
 +..
 +nfsstorage01:/srv/VOTDISK on /opt/oracle/VOTNFSDISK type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.10.194,local_lock=none,addr=10.10.10.110)
 +..
 +</code>
 +
 +==fstab editieren und mounten==
 +
 +In fstab auf jeden Knoten aufnehmen:
 +<code bash>
 +vi /etc/fstab
 +nfsstorage01:/srv/VOTDISK /opt/oracle/VOTNFSDISK nfs rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600 0 0
 +</code>
 +
 +Auf allen Knoten durchführen und mounten!
 +
 +
 +----
 +
 +
 +====ASM "Quorum" Disk einrichten ====
 +
 +
 +== 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=/dev/zero of=/opt/oracle/VOTNFSDISK/vote_nfs_disk01 bs=1M count=20476
 +
 +</code> 
 +
 +! Muss die gleiche Größe wie die anderen Platten haben sonst wird mit "asmca" die Platte nicht hinzugefügt!
 +
 +
 +== Platte einbinden==
 +
 +
 +Weiter geht es nun mit der graphischen Oberfläche
 +
 +"asmca" als User Grid starten und eine Platte hinzufügen
 +
 +<code bash>
 +# X Umgebung einrichten!
 +#Grid Home setzen
 +asmca &
 +</code>
 +
 +{{ :dba:rac:asmca_add_quorum_disk_v01.png?400 |asmca starten und Diskgroup für neue Platte auswählen}}
 +
 +Disk Suchstring um die zuvor erzeugte leere Quorum Disk ergänzen:
 +
 +{{ :dba:rac:asmca_add_quorum_disk_v02.png?500 |ASM Suchpfad anpassen}}
 +
 +Platte als Quorum Platte hinzufügen:
 +{{ :dba:rac:asmca_add_quorum_disk_v03.png?500 |ASM NFS Disk als Quorum Disk hinzufügen}}
 +
 +
 +==VOT Files umziehen ==
 +
 +VOT Files überprüfen:
 +
 +<code bash>
 +export GRID_HOME=/opt/12.1.0.2/grid
 + 
 +$GRID_HOME/bin/crsctl query css votedisk
 +# in meinen Fall zurzeit die VOT Files auf einer anderen Diskgroup
 +</code>
 +
 +Auf die neue Platte umziehen:
 +<code bash>
 +
 +# auf die VOT Platten mit dem NFS wieder verschieben 
 +
 +$GRID_HOME/bin/crsctl replace votedisk +VOT
 +
 +#Prüfen:
 + $GRID_HOME/bin/crsctl query css votedisk
 +##  STATE    File Universal Id                File Name Disk group
 +--  -----    -----------------                --------- ---------
 + 1. ONLINE   1b6bd6a3b36e4f81bf9fdf23867327a0 (/dev/oracleasm/disks/VOT1) [VOT]
 + 2. ONLINE   cd7ffb34ad164fe8bfb27a467e281044 (/dev/oracleasm/disks/VOT1_02) [VOT]
 + 3. ONLINE   7d28fd91bf6f4fc5bff78a2879bacb0c (/opt/oracle/VOTNFSDISK/vote_nfs_disk01) [VOT]
 +
 +</code>
 +
 +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:34:03.795000 +02:00
 +
 +2016-09-12 21:34:55.444 [OCSSD(3302)]CRS-1615: No I/O has completed after 50% of the maximum interval. Voting file /dev/oracleasm/disks/VOT1_02 will be considered not functional in 99150 milliseconds
 +
 +...
 +2016-09-12 21:35:25.118 [OCSSD(3302)]CRS-1649: An I/O error occurred for voting file: /dev/oracleasm/disks/VOT1_02; details at (:CSSNM00059:) in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc.
 +2016-09-12 21:35:25.118 [OCSSD(3302)]CRS-1649: An I/O error occurred for voting file: /dev/oracleasm/disks/VOT1_02; details at(:CSSNM00060:) in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc.
 +2016-09-12 21:35:26.115000 +02:00
 +2016-09-12 21:35:26.115 [OCSSD(3302)]CRS-1649: An I/O error occurred for voting file: /dev/oracleasm/disks/VOT1_02; details at (:CSSNM00060:) in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc.
 +2016-09-12 21:35:26.834 [OCSSD(3302)]CRS-1626: A Configuration change request completed successfully
 +2016-09-12 21:35:26.843 [OCSSD(3302)]CRS-1601: CSSD Reconfiguration complete. Active nodes are racdb01 racdb02 .
 +2016-09-12 21:35:27.456000 +02:00
 +
 +2016-09-12 21:35:27.455 [OCSSD(3302)]CRS-1672: The number of voting files currently available 2 has fallen to the minimum number of voting files required 2.
 +
 +....
 +
 +2016-09-12 21:35:27.456000 +02:00
 +
 +</code>
 +
 +
 +Sehr interessant bei den Fehlermeldungen ist hier die Zeile mit dem "No I/O has completed after 50% of the maximum interval. Voting file /dev/oracleasm/disks/VOT1_02 will be considered not functional in 99150 milliseconds"
 +
 +=> 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 "eingeschlafen"
 +
 +CRS Log Messages:
 +<code bash>
 +2016-09-12 22:34:58.870000 +02:00
 +2016-09-12 22:34:58.870 [OCSSD(3302)]CRS-1719: Cluster Synchronization Service daemon (CSSD) clssnmvDiskPingThread_0 not scheduled for 15730 msecs.
 +
 +.....
 +
 +2016-09-12 22:37:12.225 [OCSSD(3302)]CRS-1614: No I/O has completed after 75% of the maximum interval. Voting file /opt/oracle/VOTNFSDISK/vote_nfs_disk01 will be considered not functional in 49910 milliseconds
 +
 +....
 +
 +2016-09-12 22:37:42.234 [OCSSD(3302)]CRS-1613: No I/O has completed after 90% of the maximum interval. Voting file /opt/oracle/VOTNFSDISK/vote_nfs_disk01 will be considered not functional in 19900 milliseconds
 +
 +....
 +
 +2016-09-12 22:38:02.251000 +02:00
 +2016-09-12 22:38:02.251 [OCSSD(3302)]CRS-1604: CSSD voting file is offline: /opt/oracle/VOTNFSDISK/vote_nfs_disk01; details at (:CSSNM00058:) in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc.
 +
 +2016-09-12 22:38:02.251 [OCSSD(3302)]CRS-1672: The number of voting files currently available 2 has fallen to the minimum number of voting files required 2.
 +
 +...
 +
 +2016-09-12 22:39:22.957 [OCSSD(3302)]CRS-1719: Cluster Synchronization Service daemon (CSSD) clssnmvWorkerThread_0 not scheduled for 279820 msecs.
 +
 +...
 +
 +2016-09-12 22:42:59.030 [OCSSD(3302)]CRS-1719: Cluster Synchronization Service daemon (CSSD) clssnmvWorkerThread_0 not scheduled for 495900 msecs.
 +</code>
 +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 /opt/oracle/VOTNFSDISK
 +ls
 +
 +</code>
 +
 +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:23:40.341 [OCSSD(3302)]CRS-1605: CSSD voting file is online: /opt/oracle/VOTNFSDISK/vote_nfs_disk01; details in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc.
 +
 +</code>
 +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
 +..
 +</code>
 +
 +Vot Gruppe 3 testen:
 +<code bash>
 + crsctl query css votedisk
 +##  STATE    File Universal Id                File Name Disk group
 +--  -----    -----------------                --------- ---------
 + 1. ONLINE   as______________________________  (/dev/oracleasm/disks/OCR01_S1) [VOTPRD]
 + 2. ONLINE   a______________________________   (/dev/oracleasm/disks/OCR01_S2) [VOTPRD]
 + 3. OFFLINE  7______________________________ ( /opt/oracle/votnfsdisk/vote_nfs_disk01) [VOTPRD]
 +
 +
 +</code>
 +
 +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>  @asm_failgroup.sql VOTPRD
 +
 +Parameter 1 = Data Group Name          => VOTPRD
 +
 +
 +ASM Failgroups of a Diskgroup
 +
 +Group                Failgroup                      Disk                 Disk                           Mode
 +name                 name                           name                 path                           Status
 +-------------------- ------------------------------ -------------------- ------------------------------ --------------
 +VOTPRD               NFS                            OCR01_NFS            /opt/oracle/votnfsdisk/vote_nf OFFLINE
 +                                                                         s_disk01
 +VOTPRD               STORAGE1                       OCR01_S1             /dev/oracleasm/disks/OCR01_S1  ONLINE
 +VOTPRD               STORAGE2                       VOTPRD_0001          /dev/oracleasm/disks/OCR01_S2  ONLINE
 +
 +... to online / offline all disks in a failgroup
 +... ALTER diskgroup VOTPRD online|offline disks in failgroup <fail_group>
 +...
 +SQL> alter diskgroup VOTPRD online disks in failgroup OCR01_NFS;
 +
 +</code>
 +
 +teste:
 +
 +<code bash>
 +[grid@db01:~ ]$ crsctl query css votedisk
 +##  STATE    File Universal Id                File Name Disk group
 +--  -----    -----------------                --------- ---------
 + 1. ONLINE   as______________________________  (/dev/oracleasm/disks/OCR01_S1) [VOTPRD]
 + 2. ONLINE   bs______________________________  (/dev/oracleasm/disks/OCR01_S2) [VOTPRD]
 + 3. ONLINE   cs______________________________  (/opt/oracle/votnfsdisk/vote_nfs_disk01) [VOTPRD]
 +Located 3 voting disk(s).
 +
 +</code>
 +
 +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://www.oracle.com/technetwork/database/clusterware/overview/grid-infra-thirdvoteonnfs-131158.pdf7
 +
 +RedHat:
 +
 +  * https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/s1-nfs-start.html
  
linux/nfs_share_vot_files_oracle_rac.txt · Zuletzt geändert: 2020/10/17 10:52 von gpipperr