====== 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'; ----