Montag, 23. März 2009

Flohmarkt-Fund


Zum Thema nicht ganz nützliches Wissen:

Die "Vorschriften für Klassifikation und Bau von stählernen Seeschiffen" des Germanischen Lloyd von 1967. Sollte ich also irgendwann mal ein stählernes Seeschiff bauen wollen...;)


Mittwoch, 18. März 2009

VxVM defekte Private-Region

Mein "Lieblings"-VolumeManager VxVM wollte spontan 3 Diskgroups nicht importieren, obwohl die Platten da waren und sogar der vxdisk -o alldgs list anzeigt das die Platten zu der zu importierenden DG hoeren. Raetsels Loesung: vxprivutil beschwert sich das die Private Region kaputt ist.
Zum Glueck haben wir einen Sun Explorer Output von letzter Woche, dort gibts ein vxprint-th.out indem die Config des VxVM steht.

Also nachsehen wie die Platte aufgesetzt war. Format=sliced, d.h. kein Gewusel mit CDS.
Slice 3 war 1.88MB gross und hatte eine 1MB grosse PrivateRegion (VxVM 4.1 default). Nun gabs ein Upgrade auf VxVM 5 und der hat als default 32MB.

Ich moechte also die Volume Manager Config wieder herstellen, ohne Datenverlust im Filesystem.

Zuerst also ein freundliches:

/etc/vx/bin/vxdisksetup -f -i cXtXdX format=sliced privslice=3 privlen=1M

Damit ist eine leere Private Region auf der Platte und wir kommen nicht mehr an die Daten ran. Das heisst aber nicht das sie weg sind - vxdisksetup aendert im sliced layout nichts an der public region in der unsere volumes liegen.
Nun recovern wir die "foodg", welche eine Disk-Media namens foodg01 hatte:

vxdg init foodg foodg01=cXtXdXs2

Jetzt muessen wir uns im vxprint-th.out ansehen wie unsere subdisks ausgesehen haben (Zeile sd) und entsprechen neu anlegen:

vxmake -g foodg sd foodg01-01 disk=foodg01 offset=0 len=16777216
vxmake -g foodg sd foodg01-02 disk=foodg01 offset=16777216 len=16777216

Dazu bauen wir jetzt unsere zwei Plexes:

vxmake -g foodg plex foo01-01 sd=foodg01-01
vxmake -g foodg plex foo02-01 sd=foodg01-02

Und darueber je ein Volume, so wie es vorher war:

vxmake -g foodg -U fsgen vol foo01 plex=foo01-01
vxmake -g foodg -U fsgen vol foo02 plex=foo02-01

Jetzt sollte ein vxprint -g foodg -th genauso aussehen wie in unseren vxprint-th.out - allerdings sind die Volumes "DISABLED EMPTY" und vxvol mag sie nicht starten. Daher muessen wir sie mit einem speziellen vxvol Kommando starten:

vxvol -g foodg init active foo01
vxvol -g foodg init active foo02

Jetzt sollten wir zur Sicherheit einen fsck absetzen (in unserem Falle ein vxfs):
fsck -Fvxfs /dev/vx/rdsk/foodg/foo01
fsck -Fvxfs /dev/vx/rdsk/foodg/foo02

Und koennen sie wieder mounten - und haben unser altes Filesystem nicht ueberschrieben.

Dienstag, 17. März 2009

Sun Connection...

Ich hasse die SCS GUI...

(262) olga5096:/export/home/olbohlen$ uce_console
(263) olga5096:/export/home/olbohlen$ X Error of failed request: BadAlloc (insufficient resources for operation)
Major opcode of failed request: 147 (XKEYBOARD)
Minor opcode of failed request: 16 (XkbSetNamedIndicator)
Serial number of failed request: 1302
Current serial number in output stream: 1305

Und das nur als ich mit dem Mouse Pointer im Login-Dialog ins Username-Feld geklickt habe und meinen Namen tippen wollte...
Passiert mir nur wenn ich se per X-Forwarding auf mein Notebook im JDS anzeigen lasse. Per X-Forwarding im CDE im eXceed auf der Wintendo-Schuessel lueppts. Sehr spannend.

Citrix Client Solaris x86

Seit der Citrix Client 8.50 fuer Solaris x86 released wurde habe ich immer wieder versucht den zu benutzen, aber er ist immer auf die Bretter gegangen mit einem Segmentation fault. Heute habe ich durch Zufall auf den Citrix Foren die Loesung gefunden: der Citrix Client (namentlich der wfica) kommt mit der libXm.so.4 nicht klar. Daher hilft es in /usr/lib/ICAClient das binary wfica umzubenennen und einen shell-wrapper zu erzeugen:

(142) oldn9621-e:/usr/lib/ICAClient# cat wfica
#!/bin/ksh
# small hack for preventing segfaulting wfica in libXm.so.4
# olbohlen, 2009-03-17
LD_PRELOAD=/usr/dt/lib/libXm.so.3 /usr/lib/ICAClient/wfica.bin $@

(143) oldn9621-e:/usr/lib/ICAClient# ls -l wfica.bin
-r-xr-xr-x 1 root sys 1309280 Sep 14 2007 wfica.bin

Jetzt klappts auch mit dem Citrix :)

Donnerstag, 5. März 2009

Neue Fock...

Heute erreichte mich also der seit Montag ersehnte Brief von Beilken mit der Auftragsbestätigung für meine neue Fock - welche streng genommen ja eine Genua ist:

Standard Genua 10,9 qm, Cross Cut, Dacron 270 g/qm Tan MT.

Schoen braun wird sie werden - Mitte April wird sie wohl fertig sein, ich kanns kaum erwarten :)

Samstag, 3. Januar 2009

Silvester-Schmaus

Leckere kalte Platte mit diversen Kaese- und Fisch-Sorten!



Mittwoch, 24. Dezember 2008

Sun Cluster 3.2 und iSCSI

So, ich habe jetzt einen SunCluster 3.2 gebaut (low cost, eine Netra20, eine Blade1000 und ein Multipack mit 4 146G Disks), davon 3 Disks in einem RaidZ Diskpool.
Auf dem ZPool gibts 3 Volumes: eines fuer ein Zoneroot, eines fuer Oracle Binaries und eines fuer Datafiles. (Im echten Leben wuerde man natuerlich noch Redo/Arch-Logs, etc in eigene Volumes tun)
Diese drei Volumes sind per iSCSI freigegeben.
Im SunCluster gibts eine normale HAStoragePlus RG für den ZPool sowie einen LogicalHostname "strongbow".


(6645120) bow:/# zfs list
NAME USED AVAIL REFER MOUNTPOINT
sharedpool 28.0G 239G 28.0K /sharedpool
sharedpool/oracle 20.0G 239G 24.0K /sharedpool/oracle
sharedpool/oracle/data1 8G 247G 21.3K -
sharedpool/oracle/orabin 12G 251G 21.3K -
sharedpool/zones 8.00G 239G 24.0K /sharedpool/zones
sharedpool/zones/testzone 8G 243G 4.41G -

(6645144) bow:/# zfs get all sharedpool/zones/testzone
NAME PROPERTY VALUE SOURCE
sharedpool/zones/testzone type volume -
sharedpool/zones/testzone creation Tue Dec 23 17:20 2008 -
sharedpool/zones/testzone used 8G -
sharedpool/zones/testzone available 243G -
sharedpool/zones/testzone referenced 4.41G -
sharedpool/zones/testzone compressratio 1.00x -
sharedpool/zones/testzone reservation none default
sharedpool/zones/testzone volsize 8G -
sharedpool/zones/testzone volblocksize 8K -
sharedpool/zones/testzone checksum on default
sharedpool/zones/testzone compression off default
sharedpool/zones/testzone readonly off default
sharedpool/zones/testzone shareiscsi on local
sharedpool/zones/testzone copies 1 default
sharedpool/zones/testzone refreservation 8G local

Soviel zur ZFS Config.
Hier noch die Konfiguration der Resourcen im Cluster:


(6645145) bow:/# scstat -g

-- Resource Groups and Resources --

Group Name Resources
---------- ---------
Resources: space-rg space-zfs-stor strongbow


-- Resource Groups --

Group Name Node Name State Suspended
---------- --------- ----- ---------
Group: space-rg bow Online No
Group: space-rg saint Offline No


-- Resources --

Resource Name Node Name State Status Message
------------- --------- ----- --------------
Resource: space-zfs-stor bow Online Online
Resource: space-zfs-stor saint Offline Offline

Resource: strongbow bow Online Online - LogicalHostname online.
Resource: strongbow saint Offline Offline - LogicalHostname offline.

(6645147) bow:/# scrgadm -pv

Res Type name: SUNW.LogicalHostname:2
(SUNW.LogicalHostname:2) Res Type description: Logical Hostname Resource Type
(SUNW.LogicalHostname:2) Res Type base directory: /usr/cluster/lib/rgm/rt/hafoip
(SUNW.LogicalHostname:2) Res Type single instance: False
(SUNW.LogicalHostname:2) Res Type init nodes: All potential masters
(SUNW.LogicalHostname:2) Res Type failover: True
(SUNW.LogicalHostname:2) Res Type proxy: False
(SUNW.LogicalHostname:2) Res Type version: 2
(SUNW.LogicalHostname:2) Res Type API version: 2
(SUNW.LogicalHostname:2) Res Type installed on nodes:
(SUNW.LogicalHostname:2) Res Type packages: SUNWscu
(SUNW.LogicalHostname:2) Res Type system: True

Res Type name: SUNW.SharedAddress:2
(SUNW.SharedAddress:2) Res Type description: HA Shared Address Resource Type
(SUNW.SharedAddress:2) Res Type base directory: /usr/cluster/lib/rgm/rt/hascip
(SUNW.SharedAddress:2) Res Type single instance: False
(SUNW.SharedAddress:2) Res Type init nodes: All nodes
(SUNW.SharedAddress:2) Res Type failover: True
(SUNW.SharedAddress:2) Res Type proxy: False
(SUNW.SharedAddress:2) Res Type version: 2
(SUNW.SharedAddress:2) Res Type API version: 2
(SUNW.SharedAddress:2) Res Type installed on nodes:
(SUNW.SharedAddress:2) Res Type packages: SUNWscu
(SUNW.SharedAddress:2) Res Type system: True

Res Type name: SUNW.HAStoragePlus:6
(SUNW.HAStoragePlus:6) Res Type description: HA Storage Plus
(SUNW.HAStoragePlus:6) Res Type base directory: /usr/cluster/lib/rgm/rt/hastorageplus
(SUNW.HAStoragePlus:6) Res Type single instance: False
(SUNW.HAStoragePlus:6) Res Type init nodes: All potential masters
(SUNW.HAStoragePlus:6) Res Type failover: False
(SUNW.HAStoragePlus:6) Res Type proxy: False
(SUNW.HAStoragePlus:6) Res Type version: 6
(SUNW.HAStoragePlus:6) Res Type API version: 2
(SUNW.HAStoragePlus:6) Res Type installed on nodes:
(SUNW.HAStoragePlus:6) Res Type packages: SUNWscu
(SUNW.HAStoragePlus:6) Res Type system: False

Res Group name: space-rg
(space-rg) Res Group RG_description:
(space-rg) Res Group mode: Failover
(space-rg) Res Group management state: Managed
(space-rg) Res Group RG_project_name: default
(space-rg) Res Group RG_SLM_type: manual
(space-rg) Res Group RG_affinities:
(space-rg) Res Group Auto_start_on_new_cluster: True
(space-rg) Res Group Failback: False
(space-rg) Res Group Nodelist: bow saint
(space-rg) Res Group Maximum_primaries: 1
(space-rg) Res Group Desired_primaries: 1
(space-rg) Res Group RG_dependencies:
(space-rg) Res Group network dependencies: True
(space-rg) Res Group Global_resources_used:
(space-rg) Res Group Pingpong_interval: 3600
(space-rg) Res Group Pathprefix:
(space-rg) Res Group system: False
(space-rg) Res Group Suspend_automatic_recovery: False

(space-rg) Res name: space-zfs-stor
(space-rg:space-zfs-stor) Res R_description:
(space-rg:space-zfs-stor) Res resource type: SUNW.HAStoragePlus:6
(space-rg:space-zfs-stor) Res type version: 6
(space-rg:space-zfs-stor) Res resource group name: space-rg
(space-rg:space-zfs-stor) Res resource project name: default
(space-rg:space-zfs-stor{bow}) Res enabled: True
(space-rg:space-zfs-stor{saint}) Res enabled: True
(space-rg:space-zfs-stor{bow}) Res monitor enabled: True
(space-rg:space-zfs-stor{saint}) Res monitor enabled: True

(space-rg) Res name: strongbow
(space-rg:strongbow) Res R_description:
(space-rg:strongbow) Res resource type: SUNW.LogicalHostname:2
(space-rg:strongbow) Res type version: 2
(space-rg:strongbow) Res resource group name: space-rg
(space-rg:strongbow) Res resource project name: default
(space-rg:strongbow{bow}) Res enabled: True
(space-rg:strongbow{saint}) Res enabled: True
(space-rg:strongbow{bow}) Res monitor enabled: True
(space-rg:strongbow{saint}) Res monitor enabled: True

Ein dritter Server "flunder" soll eine Zone bekommen mit dem Namen "scholle", welche sich dann bitte auf dem testzone Volume befinden soll. Zuerst also die iSCSI config auf dem Cluster ansehen. Achtung, das ist eine Failovergroup - daher funktioniert das natuerlich nur auf dem Node der die RG aktiv hat:


(6645163) bow:/# iscsitadm list target
Target: sharedpool/zones/testzone
iSCSI Name: iqn.1986-03.com.sun:02:2abc5e6f-1535-6403-ca9f-d3d2f2e652a4
Connections: 1
Target: sharedpool/oracle/orabin
iSCSI Name: iqn.1986-03.com.sun:02:d5078ccd-ed73-cf83-d77a-df383470df86
Connections: 0
Target: sharedpool/oracle/data1
iSCSI Name: iqn.1986-03.com.sun:02:b63b6a43-31f5-cdac-e62d-918cd4b83851
Connections: 0


Anschliessend muss die Disk auf "flunder" bekannt gemacht werden:


(50) flunder:/# iscsiadm list discovery-address
Discovery Address: 172.20.23.1:3260


(zu setzen mit iscsiadm add discovery-address 172.20.23.1)


(51) flunder:/# getent hosts 172.20.23.1
172.20.23.1 strongbow


"Strongbow" ist wie oben zu sehen der LogicalHostname des Clusters.


(52) flunder:/# iscsiadm modify discovery --static enable
(53) flunder:/# iscsiadm add static-config iqn.1986-03.com.sun:02:2abc5e6f-1535-6403-ca9f-d3d2f2e652a4,172.20.23.1


Dies ist das target gefolgt von der Host-IP. Das target haben wir aus dem Output von iscsitadm des Clusters.
Jetzt muss die Disk OS-Seitig noch bekannt werden:


(54) flunder:/# devfsadm -i iscsi


Legt jetzt die entsprechenden Device-Eintraege an und wir koennen die Disk per format sehen:


(89) flunder:/# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@1c,600000/scsi@2/sd@0,0
1. c4t0d0
/iscsi/disk@0000iqn.1986-03.com.sun%3A02%3A2abc5e6f-1535-6403-ca9f-d3d2f2e652a4FFFF,0
2. c4t1d0
/iscsi/disk@0000iqn.1986-03.com.sun%3A02%3Ad5078ccd-ed73-cf83-d77a-df383470df86FFFF,0
3. c4t2d0
/iscsi/disk@0000iqn.1986-03.com.sun%3A02%3Ab63b6a43-31f5-cdac-e62d-918cd4b83851FFFF,0
Specify disk (enter its number): 1
selecting c4t0d0
[disk formatted]

FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
! - execute , then return
quit
format> p


PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit
partition> p
Current partition table (original):
Total disk cylinders available: 32766 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 0 - 32765 8.00GB (32766/0/0) 16776192
1 unassigned wu 0 0 (0/0/0) 0
2 backup wu 0 - 32765 8.00GB (32766/0/0) 16776192
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0

partition> ^D
(90) flunder:/#


Jetzt kann mit newfs ein UFS auf das slice0 gelegt werden. Die Details dazu duerften bekannt sein. Ebenfalls das installieren einer Zone sollte klar sein.

Jetzt haben wir uns eine Zone auf ein redundantes Storage gelegt das Failovered.
Ein Failover wird vom Host System mit messages in Form von SCSI errors/retransmits quittiert, aber die Zone läuft weiter.

Jetzt werde ich die Oracle-DB in die Zone installieren und sehen ob die genauso stressfrei den Failover ueberlebt. Beim Versuch mit NFS als grundliegende Resource ist die DB ziemlich auf die Bretter gegangen...