• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

SATA Hotplug - :

revealed

Guru
Hallo.

Code:
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
1. Ich hab einen Wechselrahmen.
2. Ich hab ein Mainboard dass Hotplug fähig ist.
3. Es funktioniert aufs erste mal nach dieser Anleitung:
http://www.sakana.fr/blog/2009/05/04/linux-sata-hot-plug-unplug/

In dmesg sieht das so aus:
1. Ich schalte sie an und scanne:
[ 89.603377] ata3: exception Emask 0x50 SAct 0x0 SErr 0x4080800 action 0xe frozen
[ 89.603379] ata3: irq_stat 0x00000040, connection status changed
[ 89.603380] ata3: SError: { HostInt 10B8B DevExch }
[ 89.603382] ata3: hard resetting link
[ 93.240940] ata3: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 93.358652] ata3.00: configured for UDMA/133
[ 93.358656] ata3: EH complete
[ 114.457806] ata4: hard resetting link
[ 114.776278] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 114.780371] ata4.00: configured for UDMA/133
[ 114.781814] ata4: EH complete
[ 117.086991] ata5: hard resetting link
[ 117.404160] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 117.405289] ata5.00: ATA-8: ST3500418AS, CC49, max UDMA/133
[ 117.405291] ata5.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[ 117.406583] ata5.00: configured for UDMA/133
[ 117.407343] ata5: EH complete
Also ich scanne mit:
Code:
echo "0 0 0" > /sys/class/scsi_host/host4/scan

2. Sie wird erkannt:
[ 117.407557] scsi 4:0:0:0: Direct-Access ATA ST3500418AS CC49 PQ: 0 ANSI: 5
[ 117.407689] sd 4:0:0:0: [sde] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 117.407709] sd 4:0:0:0: Attached scsi generic sg5 type 0
[ 117.407710] sd 4:0:0:0: [sde] Write Protect is off
[ 117.407713] sd 4:0:0:0: [sde] Mode Sense: 00 3a 00 00
[ 117.407726] sd 4:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 117.428298] sde: sde1 sde2
[ 117.428722] sd 4:0:0:0: [sde] Attached SCSI removable disk

Jetzt kann ich sie einhängen, rumspielen und aushängen. Soweit so gut. Jetzt soll sie aber wieder vom System getrennt werden. Also hänge ich sie aus und muss dem Computer ja sagen er soll sie abschalten.

Dazu verwende ich:
Code:
echo "0 - 0" > /sys/class/scsi_host/host4/scan
Und:
Code:
echo 1 > /sys/block/sde/device/delete
Nach letzerem verschwinden auch wie gesagt die device nodes. Und zieh sie ab.

Allerdings, wenn ich die selbe Festplatte dann wieder anwerfe nachdem ich sie mit der "delete" Aktion abgemeldet habe, wird die device node nicht wieder angelegt. In meinem Fall sde, sde1, sde2; Auch nicht, wenn ich bei punkt 1. dieser Anleitung anfange.

Auch wenn ich eine weitere völlig andere Festplatte danach anstecke, wird diese nicht mehr erkannt. Dieses 'delete' scheint leider ziemlich endgültig bis zum nächsten Neustart.

Muss ich das irgendwie auslösen. Wie reinitialisiere ich den Mechanismus so, dass die selbe Festplatte dann wieder erkannt wird?

Wenn ich den Rechner neustarte, kann ich die Festplatte einmalig via Hotplug anbinden und entfernen und das wars dann. Oder gibts da eventuell was viel einfacheres?

Betriebssystem openSUSE Tumbleweed:
Linux wild-thing 4.4.0-3-default #1 SMP PREEMPT Thu Jan 28 08:15:06 UTC 2016 (9f68b90) x86_64 x86_64 x86_64 GNU/Linux

Vielen Dank!

Gruß,

R
 
OP
revealed

revealed

Guru
Kleines Update:
Habe hier das Gefunden:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/adding_storage-device-or-path.html
Code:
echo c t l > /sys/class/scsi_host/host4/scan
bash: echo: Schreibfehler: Das Argument ist ungültig.
Code:
echo "c t l" > /sys/class/scsi_host/host3/scan
bash: echo: Schreibfehler: Das Argument ist ungültig.

Habe besonders auf die Leerzeichen geachtet!
 

spoensche

Moderator
Teammitglied
Ist die Festplatte auch Hotplug fähig? Wenn sie es nicht ist, dann kommt es zu solchen Problemen.


revealed schrieb:
Code:
echo c t l > /sys/class/scsi_host/host4/scan
bash: echo: Schreibfehler: Das Argument ist ungültig.
Code:
echo "c t l" > /sys/class/scsi_host/host3/scan
bash: echo: Schreibfehler: Das Argument ist ungültig.

Das c t l ist ein Platzhalter und bedeuten folgendes:

Code:
c:  Channel
t: SCSI target ID
l: LUN

Die richtigen Werte für Channel, Target und LUN kannst du mittels
Code:
cat /proc/scsi/scsi
ermitteln
 
OP
revealed

revealed

Guru
Ja supports Hotplug.
Supports Hotplug operation per the
Serial ATA Revision 2.5 specification
http://www.seagate.com/staticfiles/support/disc/manuals/desktop/Barracuda%207200.12/100529369b.pdf
-> ST3500418AS

Ich glaub nicht, dass es an der Platte hängt. Bei einer anderen hab ich dieses 1x happening auch.

Ich organisiere mal grad die Ausgabe. Würdest du mir evtl kurz helfen die LUN zuzuordnen?

Eigentlich sollte doch "- - -" auch gehen (komplettwildcard) -- , tut es aber leider nicht. ?

Gruß,

R

Code:
wild-thing:/home/disk # for host in $(ls -1d /sys/class/scsi_host/*); do echo "- - -" > ${host}/scan ; done ; cat /proc/scsi
cat: /proc/scsi: Ist ein Verzeichnis
Code:
wild-thing:/home/disk # cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ADATA SX900 Rev: 2a
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: Samsung SSD 840 Rev: DB6Q
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: WDC WD10EZEX-00B Rev: 1A01
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: HL-DT-ST Model: DVDRAM GH24NSB0 Rev: LN01
Type: CD-ROM ANSI SCSI revision: 05
Host: scsi6 Channel: 00 Id: 00 Lun: 00
Vendor: Generic Model: STORAGE DEVICE Rev: 9451
Type: Direct-Access ANSI SCSI revision: 00
Host: scsi4 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ST3500418AS Rev: CC49
Type: Direct-Access ANSI SCSI revision: 05

wild-thing:/home/disk #

Sorry sehe ich das richtig? Jede Festplatte und jeder Host ist 00 00 00 ? Was geht?
 

josef-wien

Ultimate Guru
revealed schrieb:
Jede Festplatte und jeder Host ist 00 00 00 ?
So ist es, denn bei SATA hat jede Platte ihre eigene Host-ID. Nur so ein Gedanke: Hast Du schon einmal
Code:
echo 0 > /sys/block/sde/device/delete
versucht? Im übrigen glaube ich auch an eine mangelhafte hotplug-Unterstützung, denn in meiner kleinen Vorstellungswelt sollte der ganze Zirkus unnötig sein und der Kernel das "neue" Gerät selbstständig erkennen.
 
OP
revealed

revealed

Guru
Das kann sehr gut sein mit der Unterstützung. Bzw. das weiss ich nicht so richtig. Ich hab den computer so mit Hotplug optionen in der Firmware und eingebautem Wechselrahmen bekommen.

Ich hätte es im Prinzip gern am Laufen. Würde auch Fehlermeldungen liefern usw, wenn ich wüsste wie man rankommt. Bzw. wünschte ich der genannte ICH 8 controller würde besser unterstützt.

Werde ich statt "1" versuchen. (Muss nen reboot hinlegen für.)
echo 0 > /sys/block/sde/device/delete

Zu den ganzen Werten finde ich leider auch wenig bzw. schwer Doku.

Gruß,

R

Edit: "0" hilft leider auch nicht. /edit Sieht so aus als wäre da kein Weiterkommen, leider.
 
A

Anonymous

Gast
schau mal ob es im Tumbleweed das Script rescan-scsi-bus.sh gibt. Damit mache ich das seit Jahren auf meinen Suse-Maschinen mit meinen über FC angeschlossenen Platten. Damit bekommt du die Platten sauber aus dem System raus und auch wieder sauber rein.

Code:
lux001:~ # rescan-scsi-bus.sh -h
Usage: rescan-scsi-bus.sh [options] [host [host ...]]
Options:
 -a      scan all targets, not just currently existing [default: disabled]
 -c      enables scanning of channels 0 1   [default: 0 / all detected ones]
 -d      enable debug                       [default: 0]
 -f      flush failed multipath devices     [default: disabled]
 -h      help: print this usage message then exit
 -i      issue a FibreChannel LIP reset     [default: disabled]
 -l      activates scanning for LUNs 0--7   [default: 0]
 -L NUM  activates scanning for LUNs 0--NUM [default: 0]
 -r      enables removing of devices        [default: disabled]
 -s      look for resized disks and reload associated multipath devices, if applicable
 -u      look for existing disks that have been remapped
 -w      scan for target device IDs 0--15   [default: 0--7]
--alltargets:    same as -a
--attachpq3:     Tell kernel to attach sg to LUN 0 that reports PQ=3
--channels=LIST: Scan only channel(s) in LIST
--color:         use coloured prefixes OLD/NEW/DEL
--flush:         same as -f
--forceremove:   Remove and readd every device (DANGEROUS)                                                                                                                      
--forcerescan:   Rescan existing devices
--help:          print this usage message then exit
--hosts=LIST:    Scan only host(s) in LIST
--ids=LIST:      Scan only target ID(s) in LIST
--issue-lip:     same as -i
--largelun:      Tell kernel to support LUNs > 7 even on SCSI2 devs
--luns=LIST:     Scan only lun(s) in LIST
--nooptscan:     don't stop looking for LUNs is 0 is not found
--remove:        same as -r
--reportlun2:    Tell kernel to try REPORT_LUN even on SCSI2 devices
--resize:        same as -s
--sparselun:     Tell kernel to support sparse LUN numbering
--sync/nosync:   Issue a sync / no sync [default: sync if remove]
--update:        same as -u
--wide:          same as -w

Host numbers may thus be specified either directly on cmd line (deprecated)
or with the --hosts=LIST parameter (recommended).
LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges
(No spaces allowed.)

robi
 
OP
revealed

revealed

Guru
Hallo robi,

Ja. Vielen Dank für den Anstoss. Auch diesen 'rescan-scsi-bus.sh' habe ich schon mit allen möglichen Schaltern versucht. Die 2. Runde lässt sich dadurch leider auch nicht einläuten bisher.

Glaube doch bald, dass ich mich mit den Internas des Kernelmoduls auseinandersetzen müsste. Nur müsste ich erstmal hinfinden.

Vielen Dank!

Gruß,

R
 
OP
revealed

revealed

Guru
Hatte noch eine Spur:

Mein mainboard hat einmal den controller vom z87 und einmal den controller vom B85; (Beides Intel).

Wenn ich dem Wechselrahmen explizit so anschliesse, dass er am z87 hängt, (zuvor B85) -- > Dann macht das leider keinen unterschied bezüglich Hotplug.

Bin geneigt aufzugeben.

Gruß,

R
 

spoensche

Moderator
Teammitglied
Also wenn es hier um das Z87 G43 Gaming geht, dann dürfte folgende Info für dich interessant sein:

https://forum-de.msi.com/index.php?topic=106325.0
 
OP
revealed

revealed

Guru
Das klingt super!

Aber ich bin verwirrt ich hab BIOS A.7 -- redet der vom gleichen Gerät?

http://de.msi.com/support/mb/Z87-G43-GAMING.html#down-bios

Gruß,

R

PS.: Ah nein gesehen der redet nicht vom "GAMING" der redet vom ähnlichen gerät ohne "GAMING" . Aber ich probiers mal mit dem anderen OS. Hab ich noch garnich.
 
OP
revealed

revealed

Guru
Getestet!

Mit Windows 10 funktioniert das Rein-Raus-Spiel anstandslos. Dann schliesse ich Firmware hier aus. Also sowohl RST als auch windows zeigen mir das an und Hardware sicher entfernen usw. Dann wieder rein. Geht.

Ich weiss halt nich wo ich da noch weiter schauen könnte oder was ich noch probieren sollte.... wird schon irgendwas mit der Umsetzung sein zwischen Linux u. Firmware und Kernel.

Leider seh ich wie gesagt halt beim erneuten einstecken in dmesg nur dass was ich weiter oben schon gepostet habe.

Gruß,

R
 

spoensche

Moderator
Teammitglied
Hast du mal im BIOS nachgesehen, ob du für den SATA-Port, an den der Wechselrahmen angeschlossen wird, Hotplug aktiviert hast? Ich kann bei meinem MSI Board für jeden der 6 SATA Ports Hotplug seperat konfigurieren.
 
Oben