Ich möchte lösen.
Die HGST 7K6000 ist eine der ersten Platten mit dem neuen 'Power Disable Feature (PWDIS)'. ->
https://www.hgst.com/sites/default/files/resources/HGST-Power-Disable-Pin-TB.pdf
Bis dato hatte ich davon noch nichts gehört. Es gibt die SAS-/SATA-Modelle jeweils mit und ohne PWDIS. Die Broschüre drückt sich vage aus: mit PWDIS-SATA an legacy-backplanes hat man definitiv oft ein Problem, mit PWDIS-SAS an legacy-backplanes soll es nie Probleme geben. In der Realität herrscht jedoch Chaos und es ist Glückssache, wie die backplane gedrahtet ist. Man muss einfach probieren, ob es funktioniert. Es kann nichts kaputt gehen, im schlimmsten Fall läuft die Platte einfach nur nicht an, was einen ohne dieses Wissen vllt. auch schon am Kopf kratzen lässt.
Mein genaues Modell der Platten hat natürlich (

) dieses Feature und obwohl die Stromzufuhr über Molex an die BP kommt und sie problemlos anläuft, hat mich das zuerst auf die falsche Fährte gelockt, weil sie zwar wieder anlief, aber mit errors.
https://zackreed.me/hgst-7k6000-not-spinning-not-working/
Also hab ich mich mit ner Pinzette ausgerüstet hingesetzt und Pin 3 überklebt. Fun fact: Auf dem Foto ist sogar die gleiche Nummer auf der Platine wie bei mir.
Ergebnis: keine Veränderung, immer noch errors. Umsonst war es aber nicht, ich hab was gelernt und 'pre-pimped' Platten, falls ich mal auf ne andere BP ausweichen muss.
Das hochgedrehte debugging warf mir 'check condition' und 'polling device' hin. Mhhhm....watn nu?
Auf den ersten Moment weist das hier auf den Fehlerablauf hin ->
https://git.kernel.org/pub/scm/linu...c?id=14216561e164671ce147458653b1fea06a4ada1e
Danach für FreeBSD googlen brachte nur ein Ergebnis ->
http://freebsd.1045724.x6.nabble.co...URs-until-good-status-returned-td6227460.html
Mhmmm....FBSD11 und Dezember 17 und noch genau der passende Fehlerfall. Kann es wirklich sein, dass der cam-layer...egal, ich studiere jetzt den Code davon und dann noch von mps uswusf. Trotz meiner nicht vorhanden Programmierkenntnisse konnte ich nichts rauslesen, was auf das Fehlverhalten hinweist, im Gegenteil.
Dann hab ich im dicken Spezifikationsblatt (
http://www.hgst.com/sites/default/files/resources/Ultrastar_7K6000_SAS_OEM_Specification_Rev1.6.pdf )der Platte die mode pages genauestens studiert. Viele Versuche und
Anläufe, höhö.
Doch dann, Seite 157. -> CCF_STOPP muss von 2 auf 1 gesetzt werden.
Code:
sdparm -s ccf_stop=1 -S da0
sysutils/spindown stoppt wortwörtlich eine SAS-Platte und macht
keinen standby. CCF_STOPP=2 (vendorspezifisch) sorgt dafür, dass ein START UNIT erforderlich ist, TUR bzw. normale i/o-requests gehen nicht/bringen nichts.
In meinem Fall sind die Platten zwar irgendwie wieder hochgekommen, aber wie schon beschrieben nur halbherzig. Ich nehme an, dass der cam-layer aggressiv genug hierbei ist, aber die Platte dann sämtlichen i/o verweigert und dann error 22 (das ist wohl generell ein Lesefehler) auf allen layern wirft, wie erlebt. Oder ZFS hat auf dem Plattencache rumnudeln können (8x128MB) und dann war Essig.
Der dumpauszug sagt auch genau das, wenn man sich die gemeldeten Zeilen von scsi_xpt.c und cam_xpt.c mal anschaut. Die requests timen irgendwann aus und die panic soll geschehen.
Code:
#9 0xffffffff8032ff3a in probedone (periph=<optimized out>, done_ccb=0xfffff800dc48d800) at /usr/src/sys/cam/scsi/scsi_xpt.c:1793
#10 0xffffffff8031c42b in xpt_done_process (ccb_h=0xfffff800dc48d800) at /usr/src/sys/cam/cam_xpt.c:5309
#11 0xffffffff8031e626 in xpt_done_td (arg=0xffffffff81aad800 <cam_doneqs+256>) at /usr/src/sys/cam/cam_xpt.c:5336
Mein Fazit: Augen auf beim nächsten Plattenkauf
sysutils/spindown nutze ich nun nur noch für SATA. Da ich die mode pages nun verstehe, bin ich auf den platteninternen standby und idle_c ausgewichen. Das ist wie APM in gut, weil feingranular.
Weitere kleine facts:
Sobald nur eine Platte eines pools CCF_STOPP=2 hat und aufgeweckt wird, werfen alle vdevs den error 22, selbst wenn die anderen SATA-Platten sind.
standby_z ist der tiefste Modus, wird im Handbuch auch so beschrieben. sdparm weist den Wert allerdings als 'standby' aus, was misinterpretiert werden kann oder ist das nur bei HGST so?
Der Pool kommt unter standby einen Tacken schneller hoch als wenn die Platten gestoppt sind. Stromverbauch ist der gleiche.
Beim Vorgänger 7K3000 sind 'CCF_IDLE' 'CCF_STAND' und 'CCF_STOPP' auf 0. Damit klappts. Bei der 7K6000 geht nur entweder 1 oder 2.