=====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== 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),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) == NFS Directory == Verzeichnis anlegen: mkdir /srv/VOTDISK #rechte vergeben chown grid:dba /srv/VOTDISK == NFS Directory freigeben == Verzeichnis nach außen frei geben: vi /etc/exports /srv/VOTDISK *(rw,sync,all_squash,anonuid=1101,anongid=1101) Nach dem * darf kein Leerzeichen folgen, mit dem * erlauben wir Zugriff von allen Clients! ==NFS Server starten == NFS aktiveren: #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: #Reboot reboot #Testen exportfs -v /srv/VOTDISK (rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=1101,anongid=1101,sec=sys,rw,secure,root_squash,all_squash) ---- ==== NFS Client vorbereiten ==== Folgende NFS Mount Optionen sind von Oracle freigegeben: rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600 ==Mount Point anlegen== Mount Point anlegen (auf allen Knoten!): # Als user grid oder rechte geben! mkdir /opt/oracle/VOTNFSDISK chown -R grid:asmadmin /opt/oracle/VOTNFSDISK chmod 770 /opt/oracle/VOTNFSDISK == Mount Test == Auf dem RAC Knoten testen ob sich das NFS auch mounten läßst: 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) .. ==fstab editieren und mounten== In fstab auf jeden Knoten aufnehmen: 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 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: #Als User GRID damit die Rechte auch stimmen! dd if=/dev/zero of=/opt/oracle/VOTNFSDISK/vote_nfs_disk01 bs=1M count=20476 ! 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 # X Umgebung einrichten! #Grid Home setzen asmca & {{ :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: 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 Auf die neue Platte umziehen: # 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] 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: 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 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: 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. 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: ping nfsstorage01 #Bleibt hängen! cd /opt/oracle/VOTNFSDISK ls Als root ist der NFS Mount nicht erreichbar ... etwas 2-3 Minuten warten .... Und dann plötzlich im Logfile: 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. Es hat sich selbständig repariert! ---- ==== Im Fehlerfall - NFS Mount längere Zeit nicht mehr vorhanden ==== Im Alert.log der ASM Instance: .. NOTE: waiting for instance recovery of group 3 NOTE: waiting for instance recovery of group 3 .. Vot Gruppe 3 testen: 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] 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 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 ... SQL> alter diskgroup VOTPRD online disks in failgroup OCR01_NFS; teste: [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). 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