====== iSCSI Target für das Bereitstellen von Cluster Platten in VMWare unter Linux 7======
**01.2015 - Update 09.2016**
Siehe für Linux 6 die älteren Anmerkungen zu diesem Thema => [[vmware:iscsi_target_for_shared_disks_linux6|iSCSI Target für das Bereitstellen von Cluster Platten in VMWare unter Linux 6]]
== Intention==
Folgende Problematik hat sich bei mir mit VMWare Workstation 10 ergeben:
Shared Disk möglich ABER => Gleichzeitiges Öffnen vom Controlfile im Oracle Rac Cluster führt zum Fehler.
Läuft nur einer der beiden Knoten, kann der jeweilige Knoten problemlos das Controlfile auf einer gemeinsame ASM Platte verwenden, laufen beide Knoten kann der Knoten 2 die Platte lesen, auf die Platte schreiben aber NICHT das Controlfile öffnen.
=> Wir brauchen ein Shared Storage für eine echte VMWare Oracle Cluster Lösung
===Terminologie===
* iSCSI = Internet Small Computer System Interface
* LUN = Logical Unit Number - virtuelle Festplatte aus Sicht eines Betriebssystems
* iSCSI Target => Server der den iSCSI Dienst und damit die Lun’s zur Verfügung stellt
* iSCSI Initiatoren => Clients die diese LUN‘S einbinden können
=== Aufgabe==
Folgende Lun’s sollen für die 12c RAC Umgebung konfiguriert werden:
{{ :dba:rac:platten_konfiguration_rac_12c_v01.png | Oracle 12c Rac - Eine minimale Platten Konfiguration}}
Die "Luns" werden aus alle aus einem Volumen „racstore01“ auf heraus angelegt und dann über iSCSI propagiert.
----
====Das Betriebssystem installieren und vorbereiten====
==Grundinstallation==
Zum Einsatz kommt ein Oracle Linux 7.0 - minimale Grundinstallation ohne X, allerdings manuell die Platte konfiguriert, das Default Layout verwendet viel Platz für den User Home Pfad mit RAM = 2GB, eine virtuelle CPU, 40GB / Root Platte
Alternativ könnten auch eine NAS Appliance wie [[http://www.openfiler.com|OpenFiler]] (schon seit längeren nicht mehr gepflegt?) oder aktueller [[http://www.freenas.org/|FreeNAS]] zum Einsatz kommen.
Allerdings benötigt der FreeNAS ~8GB RAM, was die mögliche Anzahl von gleichzeitigen VM’s auf einem Notebook stark einschränkt.
Per Yum Update dann am 22.03.2015 auf Oracle 7.1 upgedated, soweit keine Probleme aufgetaucht.
==Weitere Schritte==
* Yum Repository prüfen, Konfiguration bei Bedarf anlegen (normalerweise bereits automatisch erfolgt(
# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol7.repo
* Update mit yum update
* Firewalld unter linux7 deaktivieren :
systemctl disable firewalld
systemctl stop firewalld
* IP V6 ausschalten
vi /etc/sysctl.conf
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
sysctl -p
#Testen mit:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
# 1=Ausgeschaltet!
* SELinux deaktivieren:
vi /etc/selinux/config
..
SELINUX=disabled
..
reboot
getenforce
Disabled
* Netzwerk einrichten und darauf achten das in etc/hosts der Server in der Form "10.10.10.180 storage01.pipperr.local storage01" hinterlegt ist und hostname -a / -f auch entsprechend den Namen der Maschine zurückgeben
* Zeitdienst einrichten , siehe auch => [[linux:linux_rac_ntp|Die Uhrzeit unter Linux für eine Oracle Cluster Installation überwachen/prüfen und kontrollieren]]
* Interface Name wieder auf eth0 konfigurieren, siehe [[linux:linux7_et_interface_name_anpassen| Unter Linux 7 den Netwerk Interface Namen wieder auf Standard Verhalten umstellen]]
* Falls das „tmp“ Verzeichnis als eigene Disk gemountet ist, darauf achten das "Execute" gesetzt ist und nicht mit "noexec" gemounted wurde
Hinweis:
Ab der Linux 7 Versionen ist der ifconfig Befehlt mit pifconfig ersetzt worden!
----
==== Die Lun‘s in einem eigenen Volumen anlegen ====
Die per iSCSI dann zur Verfügung gestellten Platten liegen in einem eigenen Volumen.
Ablauf:
* Eine neue Platte mit 150GB an die Maschine "konfigurieren"
* LVM „volume group“ anlegen
vgcreate racstore01 /dev/sdb
* LVM logical volume für jede benötigte RAC Lun anlegen
lvcreate --size 6G -n vota01 racstore01
lvcreate --size 6G -n votb01 racstore01
lvcreate --size 6G -n votc01 racstore01
lvcreate --size 10G -n redoa01 racstore01
lvcreate --size 10G -n redob01 racstore01
lvcreate --size 20G -n data01 racstore01
lvcreate --size 20G -n data01 racstore01
lvcreate --size 20G -n data02 racstore01
lvcreate --size 20G -n data03 racstore01
lvcreate --size 20G -n acfs01 racstore01
#Devices dazu identifizieren:
cd /dev/racstore01
ls -l
lrwxrwxrwx 1 root root 8 Mar 8 17:24 acfs01 -> ../dm-10
lrwxrwxrwx 1 root root 7 Mar 8 17:24 data01 -> ../dm-7
lrwxrwxrwx 1 root root 7 Mar 8 17:24 data02 -> ../dm-8
lrwxrwxrwx 1 root root 7 Mar 8 17:24 data03 -> ../dm-9
lrwxrwxrwx 1 root root 7 Mar 8 17:24 redoa01 -> ../dm-5
lrwxrwxrwx 1 root root 7 Mar 8 17:24 redob01 -> ../dm-6
lrwxrwxrwx 1 root root 7 Mar 8 17:22 vota01 -> ../dm-2
lrwxrwxrwx 1 root root 7 Mar 8 17:24 votb01 -> ../dm-3
lrwxrwxrwx 1 root root 7 Mar 8 17:24 votc01 -> ../dm-4
----
==== Breitstellen der Cluster Platten über iSCSI - Konfiguration der Targets mit "targetcli"====
Ab Linux 7 werden die Targets mit "targetcli" konfiguriert.
==Notwendige Pakete einspielen==
yum install targetd
yum install targetcli
Um das folgende spätere Problem beim Starten des „targetd“ zu vermeiden, ein Password in der targetd.yaml hinterlegen:
#Probem
CRITICAL:root:password not set in /etc/target/targetd.yaml
vi /etc/target/targetd.yaml
..
vi /etc/target/targetd.yaml
#Password eintragen
password: abcde1234!
#vg eintragen
pool_name: racstore01
user: root
ssl: false
#Target Namen dann später in der Konfiguration verwenden!
target_name: iqn.2015-03.pipperr.local:server
! Darauf achten das nach dem ":" immer ein Leerzeichen folgen muss!
==Vorhandene Cluster Platten aus dem LVM anzeigen lassen==
lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
..
acfs01 racstore01 -wi-a----- 20.00g
data01 racstore01 -wi-a----- 20.00g
data02 racstore01 -wi-a----- 20.00g
data03 racstore01 -wi-a----- 20.00g
redoa01 racstore01 -wi-a----- 10.00g
redob01 racstore01 -wi-a----- 10.00g
vota01 racstore01 -wi-a----- 2.00g
votb01 racstore01 -wi-a----- 2.00g
votc01 racstore01 -wi-a----- 2.00g
===Konfiguration erstellen===
Die Konfiguraton wird mit dem „targetcli“ Utility erstellt.
==Zuvor evtl. alten targetcli Konfigurationen löschen==
targetcli clearconfig confirm=true
All configuration cleared
==targetcli aufrufen==
targetcli
Um Fehlermeldung beim Anlegen zu vermeiden, folgende Eigenschaft setzen:
targetcli:
cd /
/> set global export_backstore_name_as_model=false
==Die vorbereiteten LV's als "backstores" vom Type "block" anlegen/bekanntgeben==
targetcli:
/> cd backstores/block
create rac01-vota01 /dev/racstore01/vota01
create rac01-acfs01 /dev/racstore01/acfs01
create rac01-data01 /dev/racstore01/data01
create rac01-data02 /dev/racstore01/data02
create rac01-data03 /dev/racstore01/data03
create rac01-redoa01 /dev/racstore01/redoa01
create rac01-redob01 /dev/racstore01/redob01
create rac01-votb01 /dev/racstore01/votb01
create rac01-votc01 /dev/racstore01/votc01
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 9]
o- rac01-acfs01 ........................................................ [/dev/racstore01/acfs01 (20.0GiB) write-back deactivated]
o- rac01-data01 ........................................................ [/dev/racstore01/data01 (20.0GiB) write-back deactivated]
o- rac01-data02 ........................................................ [/dev/racstore01/data02 (20.0GiB) write-back deactivated]
o- rac01-data03 ........................................................ [/dev/racstore01/data03 (20.0GiB) write-back deactivated]
o- rac01-redoa01 ...................................................... [/dev/racstore01/redoa01 (10.0GiB) write-back deactivated]
o- rac01-redob01 ...................................................... [/dev/racstore01/redob01 (10.0GiB) write-back deactivated]
o- rac01-vota01 ......................................................... [/dev/racstore01/vota01 (2.0GiB) write-back deactivated]
o- rac01-votb01 ......................................................... [/dev/racstore01/votb01 (2.0GiB) write-back deactivated]
o- rac01-votc01 ......................................................... [/dev/racstore01/votc01 (2.0GiB) write-back deactivated]
==IQN / WWN des Server hinterlegen==
targetcli:
cd /
cd /iscsi
create iqn.2015-03.pipperr.local:server
Created target iqn.2015-03.pipperr.local:server.
Created TPG 1.
ls
==ACL's hinterlegen==
targetcli:
cd /iscsi/iqn.2015-03.pipperr.local:server/tpg1/acls
/iscsi/iqn.20...ver/tpg1/acls>
create iqn.2015-03.pipperr.local:client
create iqn.2015-03.pipperr.local:racdb01
create iqn.2015-03.pipperr.local:racdb02
ls
o- acls .................................................................................................................. [ACLs: 3]
o- iqn.2015-03.pipperr.local:client ............................................................................. [Mapped LUNs: 0]
o- iqn.2015-03.pipperr.local:racdb01 ............................................................................ [Mapped LUNs: 0]
o- iqn.2015-03.pipperr.local:racdb02 ............................................................................ [Mapped LUNs: 0]
==LUN's anlegen==
targetcli:
cd /iscsi/iqn.2015-03.pipperr.local:server/tpg1/luns
create /backstores/block/rac01-acfs01
create /backstores/block/rac01-data01
create /backstores/block/rac01-data02
create /backstores/block/rac01-data03
create /backstores/block/rac01-redoa01
create /backstores/block/rac01-redob01
create /backstores/block/rac01-vota01
create /backstores/block/rac01-votb01
create /backstores/block/rac01-votc01
ls
o- luns .................................................................................................................. [LUNs: 9]
o- lun0 ............................................................................ [block/rac01-acfs01 (/dev/racstore01/acfs01)]
o- lun1 ............................................................................ [block/rac01-data01 (/dev/racstore01/data01)]
o- lun2 ............................................................................ [block/rac01-data02 (/dev/racstore01/data02)]
o- lun3 ............................................................................ [block/rac01-data03 (/dev/racstore01/data03)]
o- lun4 .......................................................................... [block/rac01-redoa01 (/dev/racstore01/redoa01)]
o- lun5 .......................................................................... [block/rac01-redob01 (/dev/racstore01/redob01)]
o- lun6 ............................................................................ [block/rac01-vota01 (/dev/racstore01/vota01)]
o- lun7 ............................................................................ [block/rac01-votb01 (/dev/racstore01/votb01)]
o- lun8 ............................................................................ [block/rac01-votc01 (/dev/racstore01/votc01)]
==Portal anlegen==
targetcli:
cd /iscsi/iqn.2015-03.pipperr.local:server/tpg1/portals
/iscsi/iqn.20.../tpg1/portals> create
Using default IP port 3260
Binding to INADDR_ANY (0.0.0.0)
Created network portal 0.0.0.0:3260.
==Konfiguration überprüfen und speichern==
targetcli:
cd /
ls
saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
exit
==Den targetd service aktiveren==
systemctl enable targetd
systemctl status targetd
=== Testen auf dem lokalen Client===
Mit den iSCSI Client auf der lokalen Maschine überprüfen.
# Client installieren
yum install iscsi-initiator-utils
# Client configurieren
cd /etc/iscsi/
vi initiatorname.iscsi
InitiatorName=iqn.2015-03.pipperr.local:client
#scsi service neu starten
systemctl restart iscsid
systemctl restart iscsi
Testen mit:
iscsiadm -m discovery -t sendtargets -p storage01
10.10.10.180:3260,1 iqn.2015-03.pipperr.local:server
iscsiadm --mode node --targetname iqn.2015-03.pipperr.local:server --portal storage01 --login
#alle Block Devices anzeigen lassen, die neuen Platten sollten am Ende angezeigt werden
lsblk --scsi
#prüfen das die Platte nicht auf Readonly (RM=1) steht!
lsblk | egrep "NAME|sdk"
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdk 8:160 0 2G 0 disk
#Meldung ausgeben lassen das neue Platten gebunden wurden
dmesg
#Neue Devices anzeigen lassen
fdisk -l | grep Disk
Quellen:
* http://linux-iscsi.org/wiki/Targetcli
* http://www.certdepot.net/rhel7-configure-iscsi-target-initiator-persistently/
* https://wiki.rvijay.in/index.php/Configuring_iSCSI_target_using_%27targetcli%27
* https://www.youtube.com/watch?v=P21EAIeQf4g
----
==== Bereitstellen der iSCSI Lun auf dem Zielsystem ====
Zielsystem : Oracle Linux 7.0 64bit
== Namensauflösung für iSCSI Server prüfen oder statisch einrichten ==
In Host Datei eintragen:
vi /etc/hosts
..
10.10.10.180 storage01.pipperr.local storage01
==Paket "iSCSI -initiator-utils" installieren==
yum install iscsi-initiator-utils
systemctl enable iscsid
systemctl enable iscsi
== InitiatorName anpassen ==
cd /etc/iscsi
#Namen anpassen!
vi initiatorname.iscsi
InitiatorName=iqn.2015-03.pipperr.local:racdb01
Fehler: "SCSI_ERR_TCP_CONN_CLOSE: TCP Connection Closed" - Darauf achten das in einer geklonten Umgebung der Name des iSCSI - Initiators auch unique ist!
==Konfigurieren der Luns über die Datei iscsid.conf==
vi /etc/iscsi/iscsid.conf
..
node.startup = automatic
..
==Starten==
#scsi service neu starten
systemctl restart iscsid
systemctl restart iscsi
==Targets erkennen==
# netz testen
ping storage01
# Was stellt der Server zur Verfügung
iscsiadm -m discovery -t sendtargets -p storage01
10.10.10.180:3260,1 iqn.2015-03.pipperr.local:server
#Eigenschaften des Servers
iscsiadm -m node -o show
==Anmelden==
iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2015-03.pipperr.local:server, portal: 10.10.10.180,3260] (multiple)
Login to [iface: default, target: iqn.2015-03.pipperr.local:server, portal: 10.10.10.180,3260] successful.
Session anzeigen:
iscsiadm -m session -P 3
==Überwachen==
iscsiadm -m session -o show
== Platten anzeigen lassen ==
lsblk --scsi
Partition anzeigen lassen:
cat /proc/partitions
...
8 112 104856223 sdh
==Disk wieder abmelden==
iscsiadm -m node -T iqn.2015-03.pipperr.local:server -u
==Automatisch anmelden==
iscsiadm -m node -T iqn.2015-03.pipperr.local:server -p storage01 --op update -n node.startup -v automatic
bzw: mit "iscsiadm -m node -T iqn.2015-03.pipperr.local:server -p storage01 --op update -n node.startup -v manual wieder ausschalten"
Booten und testen ob die Platten erneut im System angezeigt werden.
----
----
====Auf dem RAC Knoten ASM Platte einrichten====
== ASM Library installieren ==
yum install oracleasm-support
==Oracle User anlegen==
groupadd -g 1000 oinstall
groupadd -g 1001 dba
groupadd -g 1002 asmadmin
useradd -u 1100 -g oinstall -G dba oracle
usermod -a -G asmadmin oracle
passwd oracle
useradd -u 1101 -g oinstall -G dba grid
usermod -a -G asmadmin grid
passwd grid
== ASM konfigurieren auf allen Knoten ==
**Als user root!**
Damit der Grid User UND der Oracle User auf die Platten zugreifen, die Gruppe asmadmin gewählt!
oracleasm configure -i
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
== ASM starten ==
**Als user root!**
oracleasm init
== Platten partitionieren ==
lsblk
# neue primäre Partition über die ganze Platte anlegen
fdisk /dev/sdb
#In each case, the sequence of answers is
"n", "p", "1", "Return", "Return", "p" and "w".
==ASM Header auf die Platten schreiben schreiben==
#Jede Platten erzeugen
oracleasm createdisk DATA01 /dev/sdb1
Writing disk header: done
Instantiating disk: done
# Platten einlesen
oracleasm listdisks
== Reboot Test ==
Reboot und testen ob die Platten alle wieder da sind
oracleasm listdisks
Werden keine Platten angezeigt neu scannen:
oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "DATA01"
...
=> Daraus folgt das hier die falsche boot Reihenfolge bzgl. ASM Treiber / Network Manager / iSCSI Service vorliegt.
Der ASM Service/Treiber muss als nach dem iSCSI starten!
Einrichten der Abhängigkeiten über die Service Eigenschaften "equires" und "after" mit:
vi /usr/lib/systemd/system/oracleasm.service
[Unit]
Description=Load oracleasm Modules
#Abhängigkeit hinzufügen
equires=iscsi.service
After=iscsi.service
...
#neu starten
reboot
#testen
oracleasm listdisks
DATA01
...
VOT03
#Funktioniert!
Falls Platte gemounted wurde die Eigenschaften mit blkid anzeigen:
blkid
...
/dev/sdb1: LABEL="DATA01" TYPE="oracleasm"
...
/dev/sdj1: LABEL="VOT03" TYPE="oracleasm"
#Eigenschaften anzeigen
blkid -i /dev/sdj1
DEVNAME=/dev/sdj1
MINIMUM_IO_SIZE=512
OPTIMAL_IO_SIZE=4194304
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512
----
==== Last Test ====
* Orion
* => http://oraclue.com/2009/10/27/orion-oracle-io-calibration-tool-included-in-11g-r2/
* => http://www.oracle.com/technetwork/jp/topics/index-096484-ja.html
* slob => http://kevinclosson.net/slob/
=== Orion ===
Nur noch über die Japanische Oracle Website herunterladbar, wird wohl bald nicht mehr verfügbar sein.
yum install libaio
gzip -d orion_linux_x86-64.gz
chmod 764 orion_linux_x86-64
./orion_linux_x86-64 help=yes
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
#erste Test
#Platte angeben über eine Steuerdatei mit dem Name des Testes
vi iSCSI.lun
/dev/oracleasm/disks/DATA01
#starten
./orion_linux_x86-64 -run simple -testname iSCSI -num_disks 1
#Ergebnis
# ein meiner VMware Testumgebung kann ich ~56MB/s erreichen
#Ergebnis anzeigen:
cat iSCSI_20150309_2350_summary.txt
Maximum Large MBPS=55.99 @ Small=0 and Large=1
Maximum Small IOPS=3290 @ Small=5 and Large=0
Minimum Small Latency=0.56 @ Small=1 and Large=0
siehe auch [[dba:oracle_io_last_werkzeug_orion|Oracle Orion Last Test]]
----
==== Problem beim Start von targetd ====
Nach dem Einrichten ließ sich targetd nicht starten:
[root@storage01 target]# systemctl stop targetd
[root@storage01 target]# systemctl start targetd
[root@storage01 target]# systemctl status targetd -l
targetd.service - targetd storage array API daemon
Loaded: loaded (/usr/lib/systemd/system/targetd.service; enabled)
Active: failed (Result: exit-code) since Sun 2015-03-08 23:24:30 CET; 2s ago
Process: 2231 ExecStart=/usr/bin/targetd (code=exited, status=1/FAILURE)
Main PID: 2231 (code=exited, status=1/FAILURE)
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: Traceback (most recent call last):
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: File "/usr/bin/targetd", line 24, in
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: sys.exit(main())
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: File "/usr/lib/python2.7/site-packages/targetd/main.py", line 212, in main
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: load_config(default_config_path)
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: File "/usr/lib/python2.7/site-packages/targetd/main.py", line 173, in load_config
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: config[key] = value
Mar 08 23:24:30 storage01.pipperr.local targetd[2231]: TypeError: 'str' object does not support item assignment
Mar 08 23:24:30 storage01.pipperr.local systemd[1]: targetd.service: main process exited, code=exited, status=1/FAILURE
Mar 08 23:24:30 storage01.pipperr.local systemd[1]: Unit targetd.service entered failed state.
Fehlermeldung ist wohl mehr als nichtssagend.....
Lösung:
In der targetd.yaml ist das Password falsch angegeben, in diesen YAML Dateien muss ein Leerzeichen nach dem ":" folgen!
vi /etc/target/targetd.yaml
password: abcde1234!
# defaults below; uncomment and edit
pool_name: racstore01
user: root
ssl: false
target_name: iqn.2015-03.pipperr.local:server
Auch müssen die anderen Werte gesetzt werden, sonst folgen weiter Fehlermeldungen dieser Art!
----
=== ASM Platten löschen und neu anlegen ===
Muss eine ASM Platte neu initialisiert werden:, zum Beispiel nach einer fehlgeschlagenen Installation:
Auf ersten Knoten:
oracleasm deletedisk VOT01
oracleasm deletedisk VOT02
oracleasm deletedisk VOT03
Auf zweiten Knoten neu alles einlesen
oracleasm scandisks
oracleasm listdisks
Platten neu anlegen auf dem Knoten 1
lsblk
oracleasm createdisk VOT1 /dev/sdh1
oracleasm createdisk VOT2 /dev/sdi1
oracleasm createdisk VOT3 /dev/sdj1
oracleasm listdisks
Auf dem Knoten 2 neu einlesen:
oracleasm scandisks
oracleasm listdisks
----
=== ASM Platten Größen verändern ===
Bei der Installation hat sich herausgestellt,das der Wert von 2GB für die OCR/Voting Platten aus der 11g Umgebung für die 12c zu klein ist, hier sind min. 5.2 GB vorgeschlagen.
RAC Umgebung daher gestoppt und Plattengröße angepasst, allerdings gehen hierbei evtl. Daten auf der Platte verloren!:
Wieviel Platz hat das Volume noch:
pvs /dev/sdb
PV VG Fmt Attr PSize PFree
/dev/sdb racstore01 lvm2 a-- 140.00g 34.00g
=> 34GB Frei
Was belegt den Platz:
lvs racstore01
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
acfs01 racstore01 -wi-ao---- 20.00g
data01 racstore01 -wi-ao---- 20.00g
data02 racstore01 -wi-ao---- 20.00g
data03 racstore01 -wi-ao---- 20.00g
redoa01 racstore01 -wi-ao---- 10.00g
redob01 racstore01 -wi-ao---- 10.00g
vota01 racstore01 -wi-ao---- 2.00g
votb01 racstore01 -wi-ao---- 2.00g
votc01 racstore01 -wi-ao---- 2.00g
Voting Platten auf 6 GB für 12c erweiteren:
lvextend -L6G /dev/racstore01/vota01
lvextend -L6G /dev/racstore01/votb01
lvextend -L6G /dev/racstore01/votc01
#prüfen
lvs | grep vot
vota01 racstore01 -wi-ao---- 6.00g
votb01 racstore01 -wi-ao---- 6.00g
votc01 racstore01 -wi-ao---- 6.00g
Akuelle Größe der Partition bestimmen und neu anlegen zum Vergrößern
#anzeigen
fdisk /dev/racstore01/votc01 -l
#löschen und neu anlegen
fdisk /dev/sda1
Anzeigen lassen mit p, löschen mit d , Anzeige mit p, mit n neu anlegen (als wie zuvor als Primary) mit p testen und mit w zum Schluss schreiben.
Reboot, damit die Platten neu eingelesen werden.
== Rac knoten 1 ==
Rac Knoten starten und dort die ASM Platte neu anlegen:
oracleasm createdisk VOT01 /dev/sdh1
oracleasm createdisk VOT02 /dev/sdi1
oracleasm createdisk VOT03 /dev/sdj1
Nicht ganz der gewünschte Effekt, die Daten wären damit ja verloren!
----
==== ASM Platten hinzufügen ====
Wie groß ist unser Volumen:
vgdisplay racstore01
..
VG Size 140.00 GiB
..
Free PE / Size 2507 / 9.79 GiB
..
#Oder
pvs /dev/sdb
PV VG Fmt Attr PSize PFree
/dev/sdb racstore01 lvm2 a-- 140.00g 9.79g
#Wieviel Platz hat die Physik darunter noch
fdisk /dev/sdb
p
..
Disk /dev/sdb: 150.3 GB, 150323855360 bytes, 293601280 sectors
...
Wir möchten eine weitere 20GB Lun anlegen, d.h. wir benötigen min. 12GB.
Das klappt nicht, wir brauchen daher eine neue Platte
== Disk hinzufügen==
Disk pyhsikalisch hinzufügen ( VMWare Neue Platte einbinden)
== Disk im OS erkennen==
rescan initialiseren
grep mpt /sys/class/scsi_host/host?/proc_name
sys/class/scsi_host/host2/proc_name:mptspi
echo "- - -" > /sys/class/scsi_host/host2/scan
tail /var/log/messages
Jun 2 14:39:13 storage01 kernel: sdn: unknown partition table
Jun 2 14:39:13 storage01 kernel: sd 2:0:2:0: [sdn] Cache data unavailable
Jun 2 14:39:13 storage01 kernel: sd 2:0:2:0: [sdn] Assuming drive cache: write through
Jun 2 14:39:13 storage01 kernel: sd 2:0:2:0: [sdn] Attached SCSI disk
fdisk -l
...
Disk /dev/sdn: 150.3 GB, 150323855360 bytes, 293601280 sectors
...
== Disk partionieren==
Command (m for help): p
Disk /dev/sdn: 150.3 GB, 150323855360 bytes, 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x6e96c8e8
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-293601279, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-293601279, default 293601279):
Using default value 293601279
Partition 1 of type Linux and of size 140 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
== Disk der VG hinzufügen==
pvcreate /dev/sdn1
Physical volume "/dev/sdn1" successfully created
vgextend racstore01 /dev/sdn1
Volume group "racstore01" successfully extended
pvscan
PV /dev/sdb VG racstore01 lvm2 [140.00 GiB / 9.79 GiB free]
PV /dev/sdn1 VG racstore01 lvm2 [140.00 GiB / 140.00 GiB free]
== Neue ASM Disks erzeugen ==
lvcreate --size 20G -n data04 racstore01
Logical volume "data04" created.
lvcreate --size 20G -n data05 racstore01
Logical volume "data05" created.
cd /dev/racstore01
ls -l data*
lrwxrwxrwx 1 root root 7 Mar 13 15:01 data01 -> ../dm-7
lrwxrwxrwx 1 root root 7 Mar 13 15:01 data02 -> ../dm-8
lrwxrwxrwx 1 root root 7 Mar 13 15:01 data03 -> ../dm-9
lrwxrwxrwx 1 root root 8 Jun 2 14:50 data04 -> ../dm-13
lrwxrwxrwx 1 root root 8 Jun 2 14:50 data05 -> ../dm-14
== Als Traget zur Verfügung stellen==
targetcli
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/iscsi/iqn.20...ver/tpg1/luns> cd /
/> set global export_backstore_name_as_model=false
Parameter export_backstore_name_as_model is now 'false'.
/> cd backstores/block
/backstores/block>
/backstores/block> create rac01-data04 /dev/racstore01/data04
Created block storage object rac01-data04 using /dev/racstore01/data04.
/backstores/block> create rac01-data05 /dev/racstore01/data05
Created block storage object rac01-data05 using /dev/racstore01/data05.
/backstores/block> ls
...
o- rac01-data04 ........................................................ [/dev/racstore01/data04 (20.0GiB) write-thru deactivated]
o- rac01-data05 ........................................................ [/dev/racstore01/data05 (20.0GiB) write-thru deactivated]
/backstores/block> cd /iscsi/iqn.2015-03.pipperr.local:server/tpg1/luns
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/block/rac01-data04
Created LUN 11.
Created LUN 11->11 mapping in node ACL iqn.2015-03.pipperr.local:client
Created LUN 11->11 mapping in node ACL iqn.2015-03.pipperr.local:racdb01
Created LUN 11->11 mapping in node ACL iqn.2015-03.pipperr.local:racdb02
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/block/rac01-data05
Created LUN 12.
Created LUN 12->12 mapping in node ACL iqn.2015-03.pipperr.local:client
Created LUN 12->12 mapping in node ACL iqn.2015-03.pipperr.local:racdb01
Created LUN 12->12 mapping in node ACL iqn.2015-03.pipperr.local:racdb02
/iscsi/iqn.20...ver/tpg1/luns> cd /
/>
/> saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
== Platten auf dem RAC Knoten neu erkennen==
Am einfachsten beide Knoten neu starten, falls möglich, ansonsten online neu erkennen lassen
Das schwierige wird nun über die ganze device Nummer die richtigen Platten auf dem Server zu erkennen ....
Auf dem ISCI Server das mapping abfragen
targetcli ls
...
iqn.2016-09.pipperr.local:server
..
o- mapped_lun9 .......................................................................... [lun9 block/rac02-data04 (rw)]
| | o- mapped_lun10 ........................................................................ [lun10 block/rac02-data05 (rw)]
...
Auf dem Rac Knoten 1
cd /dev/disk/by-path
ls -la | grep iqn.2016-09.pipperr.local | grep lun-9
lrwxrwxrwx 1 root root 9 Jun 2 15:16 ip-10.10.10.182:3260-iscsi-iqn.2016-09.pipperr.local:server-lun-9 -> ../../sdu
ls -la | grep iqn.2016-09.pipperr.local | grep lun-10
lrwxrwxrwx 1 root root 9 Jun 2 15:16 ip-10.10.10.182:3260-iscsi-iqn.2016-09.pipperr.local:server-lun-10 -> ../../sdw
lsblk /dev/sdw
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdw 65:96 0 20G 0 disk
lsblk /dev/sdu
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdu 65:64 0 20G 0 disk
so können wir erkennen das wir für die ASM Platte DATA04_02 das Device /dev/sdu verwenden müssen und für DATA05_02 das Device /dev/sdw
Auf beiden mit fdisk eine Partition anlegen, mit oracleasm stemplen und auf Knoten 2 mit oracleasm scandisk einbinden.
Das gleiche für das zweite ISCSI Storage, verwende hier eine mirror über zwei RZ Umgebungen mit Oracle ASM.
ASM Platten dann einbinden mit:
# als grid mit sqlplus / as sysasm
alter diskgroup data add
failgroup STORAGE1 disk '/dev/oracleasm/disks/DATA04'
failgroup STORAGE2 disk '/dev/oracleasm/disks/DATA04_02';
----