Viele wissen ja (nicht), dass ich auch mit solchen "legacy" Betriebssystemen wie SmartOS hantiere (von dem trotz aller "legacy" immernoch alle zwei Wochen ein neues Release herauskommt). SmartOS läuft in einer RAM-Disk und verwendet normalerweise alle Festplatten eines Rechners zur Datenablage. Dafür benutzt es ZFS.
Das ZFS eines meiner Compute Nodes begrüßte mich im Neuen Jahr so:
[root@myserver-26 (my-dc-2) ~]# zpool status
pool: zones
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: scrub repaired 0 in 0 days 00:19:11 with 0 errors on Mon Jan 15 07:31:05 2018
config:
NAME STATE READ WRITE CKSUM
zones DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
c1t0d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c1t2d0 REMOVED 0 0 0
c1t3d0 ONLINE 0 0 0
c1t4d0 ONLINE 0 0 0
errors: No known data errors
So ungefähr sieht das aus, wenn eine Platte ausgefallen ist. Das Betriebsystem bekommt die Platten vom eingebauten RAID-Controller präsentiert, auf dem ich für jede Platte ein RAID-0 angelegt habe:
[root@myserver-26 (my-dc-2) ~]# diskinfo
TYPE DISK VID PID SIZE RMV SSD
SCSI c1t0d0 LSI RAID 5/6 SAS 6G 3725.50 GiB no no
SCSI c1t1d0 LSI RAID 5/6 SAS 6G 3725.50 GiB no no
SCSI c1t2d0 LSI RAID 5/6 SAS 6G 3725.50 GiB no no
SCSI c1t3d0 LSI RAID 5/6 SAS 6G 3725.50 GiB no no
SCSI c1t4d0 LSI RAID 5/6 SAS 6G 3725.50 GiB no no
Die defekte Platte wurde wie immer ausgetauscht, nur beim Einrichten des RAIDs nach dem Plattentausch hatte ich ignoriert, dass die neue Platte vom Controller als "UBad" gekennzeichnet wurde - und habe trotzdem gebootet. Leider hat das Betriebssystem dann nur noch vier Platten "gesehen" und diese umnummeriert. Ich war so auf das Tauschen der Platte fokussiert, dass mir das auch entgangen ist. So habe ich die defekte Platte mit zpool replace
ersetzt und ZFS hat sie entsprechende "resilvered". Danach habe ich erneut gebootet, die getauschte Platte mit storcli /c0 /e252 /s4 set good
(o. ä.) wieder verfügbar gemacht und wieder gebootet (ja - ich mußte immer ein grml-Linux booten, um storcli benutzen zu können - dazu gleich mehr). Jetzt waren wieder fünf Platten da (möglicherweise wurden die Platten auch nochmal umnummeriert) und die Welt sah so aus:
[root@myserver-26 (my-dc-2) ~]# zpool status
pool: zones
state: DEGRADED
status: One or more devices could not be used because the label is missing or invalid.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the device using 'zpool replace'.
see: http://illumos.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0 days 00:40:00 with 0 errors on Tue Jan 3 11:03:17 2023
config:
NAME STATE READ WRITE CKSUM
zones DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
c1t0d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
8509418379182789513 FAULTED 0 0 0 was /dev/dsk/c1t4d0s0
c1t3d0 ONLINE 0 0 0
errors: No known data errors
Das wäre auch erstmal kein Beinbruch gewesen - aber leider ließ sich die Platte nicht mit zpool replace
austauschen. Außerdem sind jetzt c1t4d0s0 und c1t3d0s0 vertauscht. Für den RAID-Controller war gleichzeitig alles in Ordnung. Der Kernel meldete ein devid mismatch
.
Nach einem erneuten Reboot, bei dem dann offenbar wieder eine Platte ausgefallen ist, sah es dann so aus:
[root@hmyserver-26 ~]# zpool status
no pools available
[root@myserver-26 ~]# zpool import
pool: zones
id: 11463045474389768837
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://illumos.org/msg/ZFS-8000-5E
config:
zones UNAVAIL insufficient replicas
raidz2-0 UNAVAIL insufficient replicas
c1t0d0 ONLINE
16128883366759974911 FAULTED corrupted data
c1t1d0 FAULTED corrupted data
8509418379182789513 FAULTED corrupted data
c1t3d0 ONLINE
Tiple-Disk Failure - da kann auch ein raidz2 nichts dagegen machen. Obwohl der RAID-Controller wieder nur eine Platte als "UBad" gekennzeichnet hatte - diesmal aber wohl zurecht. Soviel zum Thema Leid.
Um nicht mehr Linux booten zu müssen, wenn der RAID-Controller mal wieder konfiguriert werden will, gibt es die entsprechenden Tools auch für Solaris (Storcli und MegaCLI). Die Binärkompatibilität mit SmartOS sorgt dafür, dass man diese direkt auch dort einsetzen kann. Bei MegaCLI ist das kein Problem, da Broadcomm das Binary in gezippter Form ausliefert. Storcli wird jedoch als Solaris-Package ausgeliefert. Um dies auf SmartOS auspacken zu können (wo kein Solaris-Packagemanagement existiert), wir die Solaris-Software pkgtrans benötigt, die sinnigerweise für SmartOS nicht verfügbar ist.
Um also Storcli auf SmartOS benutzen zu können, muß ich zunächst das Paket auf einem Solaris(ähnlichen) System mit pkgtrans auspacken, um dann das Binary unter SmartOS nutzen zu können. $Personen haben mir verraten, dass so ein System OmniosCE sein könnte. Der einzige Grund, warum ich mich noch nicht mit Omnios beschäftigt habe ist, dass ich bisher ein Image für SmartOS gefunden habe. Zum Glück gibt es aber Images für AWS - bzw. man kann sich eins erstellen.
Nachdem die Hürden des Trainingsaccounts übersprungen waren, ging das dann auch ganz schnell. Storcli-Binary ausgepackt, per scp kopiert und dann auf alle CNs verteilt:
[root@headnode (my-dc-2) ~]# sdc-oneachnode -q -c "mkdir -p /opt/root/storcli"
[root@headnode (my-dc-2) ~]# sdc-oneachnode -q -c -X -d /opt/root/storcli -g /opt/root/storcli/storcli
[root@headnode (my-dc-2) ~]# sdc-oneachnode -q -c "chmod 755 /opt/root/storcli/storcli"
[root@headnode (my-dc-2) ~]# /opt/root/storcli/storcli /c0 /eall /sall show
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.
Drive Information :
=================
------------------------------------------------------------------------------
EID:Slt DID State DG Size Intf Med SED PI SeSz Model Sp Type
------------------------------------------------------------------------------
252:0 7 Onln 0 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:1 6 Onln 1 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:2 9 Onln 4 278.875 GB SAS HDD N N 512B ST9300653SS U -
252:3 4 Onln 2 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:4 8 Onln 3 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:5 12 Onln 5 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:6 11 Onln 6 278.875 GB SAS HDD N N 512B MK3001GRRB U -
252:7 10 Onln 7 278.875 GB SAS HDD N N 512B MK3001GRRB U -
------------------------------------------------------------------------------
EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded|Cpybck-CopyBack|CBShld-Copyback Shielded
Wenn ich mir jetzt den Schmerz mit Grml und ILO sparen kann, kann ich damit leben.