Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:ds3400_sas_failover

IBM DS3500 Storage im Einsatz mit SAS Karten für ein Oracle RAC 11g Cluster

Voraussetzung

DS3500 ist verkabelt, IP Adresse vergeben, IBM DS Storage Manager kann auf beide Köpfe zugreifen.

Siehe auch Redbook für die DS3500

Die Notwendige Software ermitteln

Wie in der IBM Welt üblich, ist das Finden der Information, welche notwendigen Software mit welcher Version verwendet werden soll, eine etwas mühselige Aufgabe.

Schritt 1 - Kompatibilitäts Matrix einsehen

  • Firmware Version der DS3500 ermitteln, in meinen Fall: 07.36.32.00
  • SAS Karte Version ermitteln, in meinen Fall die 46M0907 ( IBM HBA/LSI onboard 6 Gigbit SAS )
    • Um den verbauten Kartentyp zu ermitteln auf der Managment Console der Server anmelden „ .. The IMM is set initially with a user name of USERID and password ofPASSW0RD (with a zero, not the letter O) as dfault … siehe Doku hier IBM Integrated Management Module “ und leider dort nichts darüber finden, daher über das OS „lspci -v | grep SAS“

Auf der Webseite : IBM System Storage Interoperation Center (SSIC)) die Komponenten für das gewählte Betriebssystem auf dem Servern auswählen und die Suche starten, dabei zuerst die DS3500 unter Storage Model suchen und dann die Karte 46M0907 auswählen, dann die Linux Version, ganz unten „submit“ wählen.

Auf der nächsten Seite über Show Details die passende Excel Datei suchen und laden ( müsste die Version des Storage Kopfes im Namen enthalten wie 2EMD_SSIC_Addendum_07.86.xls„.

Den passenden Reiter für das OS auswählen:

 Übersicht über die Zertifizierung

Wir können also für die Umgebung den OS Device Mapper verwenden und benötigen die min. Version 13.0 für den Karten Treiber.

Diesen finden wir evtl. hier Support und Downloads .

Leider hier nur die Version 15.00 gefunden : IBM HBA or LSI Onboard 6 Gb SAS/SATA/SSD Driver update 15.00.00.00 for Red Hat Enterprise Linux 6 (RHEL6)

Evtl. helfen diese Seiten wieder etwas weiter

Storage konfigurieren

Vorüberlegung:

  • Uns stehen 44 * 300GB SAS Platten und 4 * 200GB SSD's zur Verfügung
  • Die SAS Platten werden in einen Disk Pool zusammengefasst (SSD wird in Disk Pool nicht unterstützt)
    • Die Platten in einen Disk Pool werden als Raid 6 zusammengefasst und die Daten über alle Platten verteilt
  • Die SSD Platten werden als RAID 10 zusammengefasst

Plattenplatz einteilen

IBM DS Storage Manager starten:

Storage Subsystems anlegen

Ein Storage Subystem anlegen (Wizard dazu verwenden).

Auf dem Subsystem den Disk Pool erzeugen

  • 10% Spare einplanen (3 Platten stehen dann als Reserve zur Verfügung)
  • Entsprechend die Warning und Critical Thresold anpassen, damit keine Wartung generiert wird
  • Damit werden 10 Logical Drives a 796 GB netto erzeugt, die für die Datenplatten zur Verfügung stehen
  • Nach dem Anlegen kann mit Rename ein einheitlicher Name vergeben werden (wie ora_dg2_disk01 usw…)

Ablauf:

  1. Menü aufrufen
  2. Pool erstellen
  3. Spare und Lun Anzahl definieren

Array für die SSD mit Raid 1 anlegen

  1. Logical Drives für den Cluster Stack und tmp/undo Tablespace + Redo Logs anlegen
  2. RAID 1 Level auswählen

Tipp: erst die kleine Platten anlegen und dann den restlichen freien Platz durch zwei Teilen damit es auch vollständig aufgeht.

Logical Drive zu einem Array hinzufügen:

 Logical Drive hinzufügen

 Logical Drive definieren

Luns den Servern zuordnen

IBM DS Storage Manager starten:

A) Eine Host Gruppe für die beiden Cluster Knoten definieren

  1.  Host Gruppe erzeugen
  2.  Host Gruppe definieren

B) Die Hosts anlegen

Dazu muss die passende PORT ID bekannt des Hosts bekannt sein.

# bei Bedarf installieren
yum install sysfsutils
 
systool -c sas_host -v
systool -c scsi_host -v
 
# ID's filteren
systool -c scsi_host -v | grep host_sas_address

Ergebniss:

 SAS Host mapping IDs erkennen

Die Ports den Hosts zuordnen

  1.  Hostname vergeben
  2.  ID's zuordenen
  3.  Betriebsystem auswählen

C) Luns vergeben - Mapping erstellen

Da es sich hier um ein Cluster handelt werden alle Platten der Host Gruppe zugewiesen.

Storage Luns der Host Gruppe zuweisen:

  •  Eine Lun zuweisen
  •  Übersicht über die Luns

Luns im Host für Oracle ASM vorbereiten

Bekannte Luns in OS anzeigen lassen

# falls lsscsi nicht vorhanden:
yum install lsscsi
 
# SCSI Devices anzeigen lassen:
 
lsscsi -l

Neu hinzugefügte Luns müssen aber zuerst neu erkannt werden.

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
 
lsscsi -i

Die “- - -„ ⇒ The three values stand for channel, SCSI target ID, and LUN. The dashes act as wildcards meaning „rescan everything“

Welche Karte und Treiber

Die IBM SAS Karte verwendet den LSISAS2008 Chip Satz:

[lspci  | grep SAS2008
 
11:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)
20:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)

Für die IBM SAS Karte auf Basis des LSI Modules bietet sich der Einsatz von LSIUitl an ( http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip) an.

Fehlermeldung: „0 MPT Ports found“ → d.h. wohl das der MPT Treiber noch nicht aktiviert ist.

Driver

Laut Matrix wird der Treiber 13.101.00.00 benötigt

Prüfen ob das Kernel Modul geladen ist (mpt2sas):

lsmod | grep mpt
 
mptctl                 97678  0
mptbase                99360  1 mptctl
mpt2sas               257510  0
scsi_transport_sas     34071  1 mpt2sas
raid_class              4330  1 mpt2sas
 
modinfo mpt2sas
filename:       /lib/modules/3.8.13-16.2.1.el6uek.x86_64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
version:        17.00.00.00

Device Mapper Multipath über das OS

Tools installieren:

# Tools installiern falls noch nicht da
yum install device-mapper-multipath

# einfache default konfiguration starten
# Multipath daemon wird gestartet

mpathconf --enable --with_multipathd y


# check  status 
multipath -l

#check autostart
chkconfig | grep mul

# Refresh map by any change
multipath -r

Für die parameter in der multipath.con siehe auch ⇒ https://help.ubuntu.com/12.04/serverguide/multipath-dm-multipath-config-file.html

Auf jeden Server im Cluster!

siehe auch ⇒ https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/DM_Multipath/mpio_setup.html

RDAC für Multipath

Laut Matrix wird die Version 09.03.0C05.0652 or Later benötigt:

Download von:

Nicht getestet

Was wird nun im OS daraus ?

# übersicht:
cat /proc/partitions
 
# falls sg_map nicht vorhanden
yum install sg3_utils
 
#Übersicht
 
sg_map -x

Erster Test:

# Platten Geometrie anzeigen, damit da ja doch keine interne oder bereits verwendete Platte ist!
 
fdisk /dev/mapper/mpathd
 
 
# Mit dd 10G auf das Storage schreiben:
 
dd if=/dev/zero of=/dev/mapper/mpathd bs=1M count=10000
 
#
hdparm -tT /dev/mapper/mpathd

Um später Fehler wie: “WARNING: Re-reading the partition table failed with error 22: Invalid argument. The kernel still uses the old table. The new table will be used at the next reboot„ beim Formatieren für das Anlegen der ASM Platten zu vermeiden, ist ein reboot der Server empfehlenswert.

Ein Logical Volumen zu einem OS Multipath Device zuordnen

Storage

Im Storage Manager ein Logical Drive aussuchen und Logical Drive ID auslesen:

Logical Drive ID ermitteln

Diese ID kopieren, in diesen Beispiel: „60:08:0e:50:00:37:07:86:00:00:03:b6:52:ac:33:a5“ und alle “:„ entfernen um mit diesen String auf dem Host zu suchen.

Host

Auf dem Host mit „multipath“* den Device Mapper abfragen:

multipath -l | grep -A 6 60080e5000370786000003b652ac33a5

Ergebnis: Mapping zwischen den ID's

Aus dem Ergebnis können wir herauslesen:

  • Mapper Device mpathf verweist auf das Logical Drive „ora_dg2_disk01“ mit der ID „60:08:0e:50:00:37:07:86:00:00:03:b6:52:ac:33:a5“
  • Mapper Device mpathf linkt auf das dm-6 Devices
  • dm-6 besteht aus den beiden physikalischen Devices sdv und sdf

ASM Platten definieren

Oracle Linux 6 ASM Lib konfigurieren

Als User Root auf allen Knoten:

# install library
yum install oracleasm
yum install oracleasm-support
 
 
# Configure
oracleasm configure -i
 
Configuring the Oracle ASM library driver.
 
This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.
 
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y 
Writing Oracle ASM library driver configuration: done
 
 
# Load
 
/usr/sbin/oracleasm init
 
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm

ASM Platten einbinden

Knoten 1 als root

Mit der Information welche Logical Driver zu einem mpath Device gehört können wir nun unsere ASM Platten auf dem ersten Knoten erzeugen:

  1. Das richtige Mapper Device zum Logical Drive suchen
  2. Partitionieren, fdisk /dev/mapper/mpathf ( „n“, „p“, „1“, „Return“, „Return“, „p“ and „w“. )
  3. Als ASM disk registrieren /usr/sbin/oracleasm createdisk DG_A_01 /dev/mapper/mpathfp1
  4. mit “/usr/sbin/oracleasm listdisks„ das Ergebniss pürfen

Falls etwas nicht stimmt, kann eine ASM Platte auch mit „dd if=/dev/zero of=/dev/dm-x bs=8192 count=2“ wieder „gelöscht“ werden.

oracleasm deletedisk OCR_VOT_01
 
Clearing disk header: failed
Unable to clear disk "OCR_VOT_01"
 
dd if=/dev/zero of=/dev/dm-18  bs=8192 count=2
 
2+0 records in
2+0 records out
16384 bytes (16 kB) copied, 0.000345647 s, 47.4 MB/s
 
oracleasm scandisks
Fehler: Re-reading the partition table failed with error 22

Tritt beim Anlegen einer Partition der folgende Fehler auf:

WARNING: Re-reading the partition table failed with error 22: Invalid argument. The kernel still uses the old table. The new table will be used at the next reboot

A) Partitionstabellen mit partprobe einlesen

partprobe 

B) Device pointer mit „kpartx“ anlegen

# Partition wurde mit Warning anlegen
 
fdisk /dev/mapper/mpathc
 
  # ( „n“, „p“, „1“, „Return“, „Return“, „p“ and „w“. )
 
  WARNING: Re-reading the partition table failed with error 22: Invalid argument.
  The kernel still uses the old table. The new table will be used at
  the next reboot or after you run partprobe(8) or kpartx(8)
 
 
#anschauen:
kpartx -l /dev/dm-3
  mpathcp1 : 0 8385867 /dev/dm-3 63
 
#anlegen:
kpartx -a -v  /dev/dm-3
   add map mpathcp1 (252:21): 0 8385867 linear /dev/dm-3 63
 
#test im OS
ls -la  /dev/mapper/mpathcp1
  .. /dev/mapper/mpathcp1 -> ../dm-21
 
ls -la /dev/dm-21
 brw-rw---- 1 root disk 252, 21 Dec 15 19:03 /dev/dm-21
 
#ASM Platte anlegen
oracleasm createdisk OCR_VOT_03 /dev/mapper/mpathcp1
 
ls -la  /dev/oracleasm/disks/OCR_VOT_03
brw-rw---- 1 oracle dba 252, 21 Dec 15 19:03 /dev/oracleasm/disks/OCR_VOT_03

Beim Test auf die Minor,Minor Device Id's achten (in unsere Fall die (252, 21) ), damit lassen sich die Devices wieder zusammen suchen.

Fehler: Tritt der Fehler "Device or resource busy" auf
oracleasm createdisk OCR_VOT_01  /dev/dm-18
 
Unable to open device "/dev/mapper/mpathr": Device or resource busy

A) Pürfen, ob die Platte nicht /dev/mapper/mpathrp1 heißen muss!

 Muss immer die erste Partition auf der Platte sein!

B) Die Platte kann auch mit folgenden Befehl angelegt werden

/usr/sbin/asmtool -C -l /dev/oracleasm -n OCR_VOT_01 -s /dev/mapper/mpathr -a force=yes

Dabei wird dann aber NICHT die Partition „mpathrp1“ verwendet, sondern die vollständige Platte „mpathr“ eingebunden.

Bei Fehler auch immer das Logfile von ASM unter /var/log/oracleasm auswerten!

Zweiten Knoten einbinden

Knoten 2 als root

Nach dem Anlegen der Disk auf dem ersten Knoten auf dem zweiten Knoten die Platten einlesen:

/usr/sbin/oracleasm scandisks
 
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
 
/usr/sbin/oracleasm listdisks

Werden nun die auf Knoten 1 erzeugten Platten (besonders die mti kpartx registrierten) nicht erkannt, hilft nur ein kpartx -a -v <device> auch auf den zweiten Server um einen Boot zu vermeiden.

Auf jeden Knoten als root

Nach dieser Zuordnung aller Platten darauf achten, dass beim nächsten Boot die ASM Lib auch wirklich das Mapper device verwendet.

Dazu den Disk Such Pfad in “/etc/sysconfig/oracleasm„ anpassen auf “ ORACLEASM_SCANORDER=„mpath“ und ORACLEASM_SCANEXCLUDE=„sd“ (damit nur die Mapping Devices gefunden werden!) „

Nun ist es empfehlenswert, das System neu zu booten um zu testen ob alles auch richtig erkannt wird.

Erste Performance Messungen

Test a)

100G Dauerbetrieb auf eine SAS Lun/Logical Drive auf einem Disk Pool (Raid 6) über 41 Platten.

dd if=/dev/zero of=/dev/mapper/mpatho bs=1M count=100000
 
100000+0 records in
100000+0 records out
104857600000 bytes (105 GB) copied, 419.792 s, 250 MB/s
 
 
##########################
#Wieder einlesen
 
100000+0 records in
100000+0 records out
104857600000 bytes (105 GB) copied, 284.36 s, 369 MB/s
 
real    4m44.365s
user    0m0.075s
sys     1m28.012s

Auswertung der Performance über das Storage(Background Performance Monitor):

 MBs/s

 IO/s

100G Dauerbetrieb auf eine SSD Lun/Logical Drive auf einem DISK Array (Raid 10) über 4 Platten.

19:28
 
dd if=/dev/zero of=/dev/mapper/mpathe bs=1M count=100000
 
100000+0 records in
100000+0 records out
104857600000 bytes (105 GB) copied, 434.208 s, 241 MB/s
 
 
##########################
#Wieder einlesen
 
time dd if=/dev/mapper/mpathe of=/dev/null bs=1M
 
100000+0 records in
100000+0 records out
104857600000 bytes (105 GB) copied, 266.207 s, 394 MB/s
 
real    4m26.209s
user    0m0.059s
sys     1m26.988s

Leider wurden in dem Background Performance Monitor keine Charts generiert.

Über die Datenbank:

CONN / AS SYSDBA
 
SET SERVEROUTPUT ON
DECLARE
  l_latency  PLS_INTEGER;
  l_iops     PLS_INTEGER;
  l_mbps     PLS_INTEGER;
BEGIN
   DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 45, 
                                       max_latency        => 10,
                                       max_iops           => l_iops,
                                       max_mbps           => l_mbps,
                                       actual_latency     => l_latency);
 
  DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
  DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
  DBMS_OUTPUT.put_line('Latency  = ' || l_latency);
END;
/
 
MAX IOPS = 24826
MAX MBPS = 1134
Latency  = 5

Übersicht bei diesem Lauf:

 Test Lauf mit DBMS_RESOURCE_MANAGER.calibrate_io über alle Platten  Test Lauf mit DBMS_RESOURCE_MANAGER.calibrate_io zweiter Teil

Mehr zu DBMS_RESOURCE_MANAGER.calibrate_io und Oracle I/O Performance siehe auch:

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
linux/ds3400_sas_failover.txt · Zuletzt geändert: 2016/05/02 13:59 von gpipperr