SSD mal sda mal sdb

silberstein

New member
Themenstarter
Registriert
2 Okt. 2010
Beiträge
173
Ich möchte gerne meine HDD (nur Daten) im Ultrabay-Schacht automatisiert mit

sudo hdparm -S 10 /dev/sdb

schlafen legen. Geht aber nicht, weil nie klar ist,
wann die HDD (ATA1) oder die SSD (ATA0) als sda oder sdb gebootet wird.

Wie kann ich erreichen, dass die SSD eim Booten stets als sda gemountet wird?
 
Oh je, ich hab gedacht, das Problem wäre gelöst. Aber ich fürchte, es hat sich bei hdapsd ein Fehler eingeschlichen.

Bevor ich sudo hdapsd -v starte, reagiert die HDD nicht auf Erschütterungen, danach schon
(solange hdapsd aktiv ist, nach Beendigung nicht mehr).

D.h. die Einstellungen in der /etc/default/hdapsd

DISK="ata-FUJITSU_MHY2120BH_K410T812VEMM"
bzw.
DISK="scsi-SATA_FUJITSU_MHY2120K410T812VEMM"

werden beim Booten gar nicht umgesetzt. Ich hatte fälschlicherweise angenommen,
mit sudo hdapsd -v den bereits laufenden Prozess zu überwachen. Das war wohl falsch.

Aber wie kann ich sehen, dass hdapsd gestartet wurde?
Bei #top zeigt sich selbst nach #hdapsd -v kein Prozess mit dem Namen hdapsd.

hdaps ist auf jeden Fall in $lsmod von Anfang an gelistet.


Vielleicht sollte ich's mal mit der systemweiten Zuordnung probieren?

sda=ata-Samsung_SSD_840_PRO_Series_S1ANNEAD556744E
sdb=ata-FUJITSU_MHY2120BH_K410T812VEMM

Wie gehe ich da am besten vor?
-grub
-udev
-fstab
 
Zuletzt bearbeitet:
Aber wie kann ich sehen, dass hdapsd gestartet wurde?
Mit ps.

Starte doch einfach mal den Dienst von Hand und zeig die Ausgabe. Dann sehen wir was ihm nicht gefällt.
Code:
sudo service hdapsd start

Wenn wir schon dabei sind, zeig auch deine kpl. /etc/default/hdapsd
 
me@t61 ~ $ sudo service hdapsd start
Tue Sep 3 20:06:11 2013: Starting hdapsd
Tue Sep 3 20:06:11 2013: Selected interface: HDAPS
Tue Sep 3 20:06:11 2013: Selected HDAPS input device: /dev/input/event11


Mit dem Ohr ist mir aufgefallen, dass
sudo service hdapsd start
nicht zum parking/un-parking führt,
sudo hdapsd (hdd ist sda)
dagegen schon.

Außerdem (vielleicht unbedeutend):

sudo service hdapsd start > kurzzeitiger Eintrag in der Prozessliste (sudo ps -e)
sudo hdapsd > dauerhafter Eintrag, solange der Prozess nicht gestoppt wird

Kann es sein, dass hdapsd nach sudo service hdapsd start abstürzt?

Hier nun noch die /etc/default/hdapsd:


Code:
# hdapsd default file

# start hdapsd at boottime?
START="yes"

# the name of the disk device that hdapsd should monitor.
#
# usually this is 'hda' for the primary IDE master or 'sda'
# for the primary S-ATA drive

DISK="ata-FUJITSU_MHY2120BH_K410T812VEMM"
#DISK="scsi-SATA_FUJITSU_MHY2120K410T812VEMM"
 

# sensitivity
SENSITIVITY=15

# other options to pass to hdapsd.
# the -d $DISK, -s $SENSITIVITY, -b and -p $PIDFILE options are always passed.
OPTIONS=""

# The new interface in kernels >=2.6.28 sometimes wrongly detects HDAPS-capable
# drives as not supported. Set this to "yes" to force-enable the feature.
# Please be carefull with this setting!
FORCEENABLE="no"
 
2. funktioniert es mit sda oder sdb stabil

Das zu testen ist leider etwas umständlich, da ich vorher nie weiß,
ob die SSD/HDD als sda/sdb gemountet wird.

Bei Eingabe in der Console funktioniert (auch hörbar) alles:

me@t61 ~ $ sudo hdapsd -d sdb #hier HDD=sdb
Tue Sep 3 22:45:53 2013: Starting hdapsd
Tue Sep 3 22:45:53 2013: Selected interface: HDAPS
Tue Sep 3 22:45:53 2013: Selected HDAPS input device: /dev/input/event12
Tue Sep 3 22:45:57 2013: parking
Tue Sep 3 22:45:59 2013: un-parking
Tue Sep 3 22:46:04 2013: parking
Tue Sep 3 22:46:05 2013: un-parking...
 
Zuletzt bearbeitet:
1. Die Auskommentierung ist irrelevant für das Problem, sie schaltet nur eine Überprüfung des Gerätenamens aus.
2. Ich hab absolut keinen Schimmer wo es bei dir klemmt
 
DISK=/dev/disk/by-id/ata-FUJITSU_MHY2120BH_K410T812VEMM

scheint nicht zu funktionieren, hdapsd wird noch nicht einmal geladen
(zumindest taucht es nicht als Prozess auf)
 
Ist doch klar wenn Du die Auskommentierung entfernt hast. Aber nochmal: das hat nichts mit dem Problem zu tun, dass hdapsd nicht automatisch läuft.
 
Steht in der /etc/default/hdapsd

DISK="ata-FUJITSU_MHY2120BH_K410T812VEMM"

wird hdapsd ebenfalls nicht geladen*

(/etc/init.d/hdapsd auskommentiert)

*zumindest nicht dauerhaft
 
Zuletzt bearbeitet:
Ich habe jetzt das Ganze nochmal unter einem neu installierten Mint13 ausprobiert, mit demselben Resultat.

Gibt man in der /etc/default/hdapsd etwas anderes ein als z.B.
DISK="sda" oder DISK="sdb", wird hdapsd nicht geladen bzw. stürzt gleich wieder ab.

Gibt man per Console ein
sudo hdpasd
erkennt er stets automatisch richtig die HDD (nie fälschlicherweise die SSD)
und arbeitet korrekt.

Daher meine folgende Idee (dirty workaround):

# start hdapsd at boottime?
START="no"

+ Startprogramm: sudo hdapsd

Wahrscheinlich eine komische Idee, aber ich versuch's mal.
 
Nee, das mit dem Programmstart beim Hochfahren ist mir nicht gelungen.
Fehlt mir einfach die Erfahrung mit Startskripten, oder wie man das nennt.

Ich hab dann mal in der /etc/default/hdapsd
die DISK-Angabe auskommentiert.
Immerhin bleibt hdapsd auf diese Weise gestartet und stürzt nicht ab.
Aber das parking/un-parking funktioniert leider nicht.

Fazit: nur der manuelle Start führt immer zum Erfolg ODER wenn der Eintrag
DISK="sdx" beim Booten zufällig übereinstimmt mit HDD=sdx.

Was bedeutet eigentlich der Eintrag in man hdapsd bei den Options
-l --syslog Log to syslog instead of stdout/stderr ?
Könnte man mit diesem Optionseintrag in der /etc/default/hdapsd
hilfreiche Informationen abzweigen? Ich werd's mal versuchen.

Ok, ich hab euch ganz schön die Ohren abgekaut,
aber vielleicht finde ich ja mit eurer Hilfe doch noch eine Lösung :)
 
Zuletzt bearbeitet:
[TABLE="class: grid, width: 800"]
[TR]
[TD]/etc/default/hdapsd
[/TD]
[TD]/etc/init.d/hdapsd
[/TD]
[TD]syslog
[/TD]
[TD]Absturz[/TD]
[TD]läuft
[/TD]
[/TR]
[TR]
[TD]DISK="ata-FUJITSU_MHY2120BH_K410T812VEMM"[/TD]
[TD]#117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block/ata-FUJITSU_MHY2120BH_K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?[/TD]
[TD]ja[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]DISK="ata-FUJITSU_MHY2120BH_K410T812VEMM"
[/TD]
[TD]117
[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block/ata-FUJITSU_MHY2120BH_K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
[/TD]
[TD]ja
[/TD]
[TD]nein
[/TD]
[/TR]
[TR]
[TD]DISK="scsi-SATA_FUJITSU_MHY2120K410T812VEMM"[/TD]
[TD]#117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block/scsi-SATA_FUJITSU_MHY2120K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?[/TD]
[TD]ja[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]DISK="scsi-SATA_FUJITSU_MHY2120K410T812VEMM"[/TD]
[TD]117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block/scsi-SATA_FUJITSU_MHY2120K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?[/TD]
[TD]ja[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]DISK=/dev/disk/by-id/ata-FUJITSU_MHY2120BH_K410T812VEMM[/TD]
[TD]#117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block//dev/disk/by-id/ata-FUJITSU_MHY2120BH_K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?[/TD]
[TD]ja[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]DISK=/dev/disk/by-id/ata-FUJITSU_MHY2120BH_K410T812VEMM
[/TD]
[TD]117
[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not open /sys/block//dev/disk/by-id/ata-FUJITSU_MHY2120BH_K410T812VEMM/device/unload_heads#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
[/TD]
[TD]ja
[/TD]
[TD]nein
[/TD]
[/TR]
[TR]
[TD]#DISK... (keine Disk-Angabe)[/TD]
[TD]#117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
parking
Could not read from /sys/block/sda/device/unload_heads: Operation not supported
Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
un-parking...[/TD]
[TD]nein[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]#DISK... (keine Disk-Angabe)[/TD]
[TD]117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
parking
Could not read from /sys/block/sda/device/unload_heads: Operation not supported
Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
un-parking...[/TD]
[TD]nein[/TD]
[TD]nein[/TD]
[/TR]
[TR]
[TD]DISK="sdb" (HDD=sdb)[/TD]
[TD]117[/TD]
[TD]Selected HDAPS input device: /dev/input/event9
parking
un-parking ...
[/TD]
[TD]nein[/TD]
[TD]ja[/TD]
[/TR]
[TR]
[TD]DISK="sda" (SSD=sda)[/TD]
[TD]117[/TD]
[TD]Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
parking
Could not read from /sys/block/sda/device/unload_heads: Operation not supported
Could not write to /sys/block/sda/device/unload_heads.#012Does your kernel/drive support IDLE_IMMEDIATE with UNLOAD?
un-parking ...[/TD]
[TD]nein[/TD]
[TD]nein[/TD]
[/TR]
[/TABLE]

Was bedeutet eigentlich /dev/input/event9 und /sys/block... ?
 
Möglicher Lösungsweg

hdapsd kann am besten umgehen mit den Laufwerksbuchstaben (sda, sdb,...).

Ok, dann soll es die auch bekommen:

/etc/init.d/hdapsd

#DISK="sda"
DISK=`blkid | grep 70772C714A7861D5 | cut -c6-8`

/etc/default/hdapsd

#DISK="..." (also keine Angabe)


70772C714A7861D5 ist die UUID meiner ersten Partition der HDD,
die mit hdapsd geschützt werden soll.


Für alle Linux-Anfänger wie mich:

blkid | grep 70772C714A7861D5 | cut -c6-8

liefert in meinem Fall entweder sda oder sdb.

Für die gewünschte UUID einfach mal blkid in der Konsole eingeben.



Ich würde mich freuen, wenn Leute, die tiefer in der Materie stecken, mal drüber schauen könnten,
ob man mit diesem Ansatz nicht evtl. auf neue Probleme stoßen könnte.

Bei mir funktioniert es.

PS: Der Einfall stammt nicht von mir sondern von Ryk vom TP-Stammtisch Berlin!
 
InteressanteCoole Idee :). Ich würde eher den Output von
Code:
tlp diskid
grep-en, also
Code:
DISK="$(tlp diskid | grep 'ata-FUJITSU_MHY2120BH_K410T812VEMM' | cut -f1 -d:)"

ps. das $(...) ist äquivalent zu den Backticks `...` aber besser zu lesen finde ich.
 
Zuletzt bearbeitet:
Danke linrunner,
dein Code

Code:
tlp diskid | grep 'ata-FUJITSU_MHY2120BH_K410T812VEMM' | cut -f1 -d:

funktioniert auch astrein, setzt aber tlp voraus.

Will man das Startskript aus ästhetischen Gründen unberührt lassen,
bräuchte man eine der folgenden Zeilen einfach nur in die config-Datei schreiben, oder?

/etc/default/hdapsd

Code:
DISK="$(blkid | grep 70772C714A7861D5 | cut -c6-8)"
DISK="$(tlp diskid | grep 'ata-FUJITSU_MHY2120BH_K410T812VEMM' | cut -f1 -d:)"

DISK=`blkid | grep 70772C714A7861D5 | cut -c6-8`
DISK=`tlp diskid | grep 'ata-FUJITSU_MHY2120BH_K410T812VEMM' | cut -f1 -d:`

Ich frage, weil ich nicht mehr so viel schütteln will :)
 
Das grep-en nach 'ata-...' ist aussagekräftiger und robuster.

Die Auskommentierung im Startskript ist bei diesem Weg nicht mehr nötig, denn in DISK kommt letztlich nur sda oder sdb an. Außerdem geht es hierbei nicht um Ästhetik sondern um Wartbarkeit; bei einem Paketupdate von tp-smapi würde das Startskript nicht angefasst, weil es von dir angepasst wurde und die Paketverwaltung das anhand einer Prüfusmme merkt.
 
Danke linrunner,

ich dachte immer, bei einem Update wird alles überschrieben und nur bei der config-Datei nachgefragt, ob man diese behalten möchte. Wenn das Startskript nicht erneuert wird, weil es geändert wurde, wäre das für mich ein Grund mehr, Anpassungen NICHT dort sondern in der config-Datei zu verankern.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben