Spindown abhängig vom Mountpunkt (sda; sdb; ...)

SaschaBr

Aktives Mitglied
Mitglied seit
1 Mai 2007
Beiträge
2,351
Punkte für Reaktionen
32
Punkte
48
Ich betreibe an meiner Box eine externe USB-Festplatte und einen USB-Stick. Diese werden zu 80% wie folgt gemountet:
Stick = sda
Festplatte = sdb1

Ich nutze das Paket Spindown, um die (normalerweise) als sdb1 gemountete Festplatte schlafen zu schicken. Gelegenlich kommt es nun aber vor, dass der Stick beim Booten der Box "sdb" bekommt, und die Festplatte "sda1", wodurch dann natürlich der Spindown nicht funktioniert.
Dank der neuen Mountfunktion "by Label" stimmen zumindest alle Pfade, so dass die Box (bis auf das Spindown) einwandfrei funktioniert. (Vorher hatte ich gelegentlich Probleme durch die sich gelegentliche ändernde Mountnamen -> uStorXX beim booten der Box.)

Besteht eventuell hier die Möglichkeit, das Spindown auch irgendwie mit "by Label" zu verknüpfen, oder in Abhängigkeit zu bringen?
 
Spndown sollte bei deinem USB-Stick nicht greifen. Alternativ könnte man z.B. hd-idle erweitern. Dafür gibt es einen PAtch, um Laufwerke auszulassen...
 
Spndown sollte bei deinem USB-Stick nicht greifen. ...

Also kann ich theoretisch bedenkenlos eine zweite Instanz von Spindown starten (Beispielsweise aus RC-Custom heraus), ohne das den USB-Stick das stört?

Als Alternative (da ich jeden Prozess der nicht sein muss, vermeiden möchte) hatte ich gedacht, ein Autorun-Script zu generieren und dieses von der Festplatte aus zu starten. Dieses Script soll dann beim starten selbständig herausfinden, unter welchem Device die Festplatte gemountet wurde, und die passenden Parameter an Spindown übergeben.
Obwohl, wenn ich so recht überlege, könnte dies auch ein einfaches Script beim starten der Box erledigen (also nix Autorun von Festplatte) Ich stecke meine Platten ja im laufendem Betrieb nie ab.

Gibts da irgendwo ein Beispiel, wie so ein Script aussehen könnte? (Ich hab leider (noch) nur seeehr wenig Ahnung von solchen Scripten.
Ich könnte mir das so vorstellen:
Code:
- Suche nach Partitionslabel "Icybox"!
- Welches Device (sd*) hat diese Partition?
- Starte Spindown mit heraus gefundenem Device!

P.S.:
Es soll mir niemand ein fertiges Script posten, ein par Code-Schnipsel würden mir schon reichen. Möchte ja auch noch ein bischen selber tüfteln! ;-)
 
@SashaBr: Wenn du in die Quellen von FREETZMOUNT reinschaust, wirst du genügend Beispiele finden, wie man eine solche Erkennung machen könnte. Ich würde allerdings andersrum vorgehen:
1. Device sdXY wird gemounted
2. Es wird geschaut, welchen LABEL sdXY hat (ist bereits implementiert)
3. Es wird mit einer Liste verglichen, wo die Labels/sdXY-Parameter abgelegt sind.
4. Ist eine Übereinstimmung gefunden, so wird spindown gestartet, sonst nicht.

Auf der Basis könnte man es nachher in FREETZMOUNT übernehmen. Die Frage ist nur, ob dazu wirklich Bedarf gibt, sowas zu realisieren.

MfG
 
Au weia...
Ich weiß gar nicht wie und wo ich da anfangen soll. Das ist mir glaube ich doch alles noch ein bisschen zu hoch....

Hüüülfeeeeeeeee...

Ich glaub ich brauch da doch mehr Hilfe als gedacht.
 
Es gibt da eine Stelle in libmodmount.sh, die früher zu ihrer AVM-Zeiten noch nicename() hieß. Leider wird da nur der Name ermittelt und diese LABEL-Geschichte steckt mitten drin. Angesichts der Übernahme in FREETZMOUNT sollte man sich vielleicht diese Namensgenerierung strukturell etwas anders realisieren. Denn eigentlich wird in dem besprochenen Abschnitt nur ermittelt und nicht agiert. Blöderweise weiß man nachher nicht, ob es denn um einen LABEL gehandelt hat oder nicht. Deswegen könnt ihr ruhig diese Struktur brechen und was komplett anderes ausdenken.

@saschaBr: Wir sind alle klein angefangen. So kompliziert ist es auch nicht. Stell einfach konkrete Fragen, dann bekommst du auch Antworten.

MfG
 
Nunja, ich habe jetzt erstmal eine Lösung gewählt, bei der es egal ist, ob die Festplatte nun sda oder sdb bekommt. Silent-Tears schrieb ja, dass das den USB-Stick nicht stört, wenn versucht wird ihn schlafen zu legen. Also habe ich den Start von Spindown im WebIF auf "manuell" gestellt, und starte ihn statt dessen aus rc.custom heraus mit folgendem Aufruf einfach für beide Geräte:
Code:
spindown sda 600 3 & spindown sdb 600 3 &
Ist zwar nicht das, was ich eigentlich wollte, aber: "It works for me!"
spindown.JPG
 
Eine interessante Idee für spindown-cgi: Man könnte aus ps-Ausgaben durchs Filtern ermitteln, welche Devices als spindown bereits laufen und ggf. die "Aufträge" killen. Vielleicht sollte man auch so ein Test fürs Unmounten der kompletten Medien (noch nicht in FREETZ implementiert) einbauen? Dass vor dem Abwerfen der Festplatte die entsprechenden spindown-Aufträge gekillt/geHUPt werden.

MfG
 
... welche Devices als spindown bereits laufen und ggf. die "Aufträge" killen. ...

Ich weiß jetzt nicht genau, was Du mir damit sagen willst. Ich habe mich aber denoch grade mal probiert, via grep die PIDs von Spindown inklusive der dazugehörigen Devices auflisten zu lassen. Das ist das Ergebnis:
Code:
/var/mod/root # ps |grep '[s]pindown' | awk '{print $1,$7}'
2104 sda
2106 sdb

Nur was mach ich jetzt damit?


EDIT:
Wie ich die gemounteten USB-Laufwerke (gefiltert) herausbekomme, hab ich auch grad heraus bekommen:
Code:
var/mod/root # cat /proc/mounts | grep '/dev/sd*'
/dev/sdb1 /var/media/ftp/Icybox ext2 rw,noatime,nodiratime 0 0
/dev/sda /var/media/ftp/LOGS vfat rw,fmask=0000,dmask=0000,codepage=cp437,iocharset=iso8859-1 0 0

Jetzt müsste ich ja aus dieser Ausgabe herausfiltern/ herausfinden können, welche 'sd_' meine "Icybox" bekommen hat, um meinem Ursprünglichen Ziel ein Stück näher zu kommen (Spindown by Label).

Oder bin ich damit total auf dem Holzweg?
 
Zuletzt bearbeitet:
Es geht schon in die richtige Richtung bei dir. Ich würde jedoch meiden awk auf der Box zu verwenden. Es ist meiner Erfahrung nach zu langsam. Für deine Zwecke (wenn überhaupt) kann man es mit read oder sed lösen. Aber letztendlich braucht man es wahrscheinlich nicht, denn wenn man gerade im mount/unmount-Prozess unter FREETZMOUNT sich befindet, dann hat man dort typischerweise beides: Sowohl LABEL als auch sdXN-Bezeichnung irgendwie als Variablen. Und wenn nicht gleichzeitig, dann muss man da noch was ändern.
Das was ich meinte bezog sich darauf, dass spindown losgelöst vom jeglichen un/mounten läuft und es kann dir passieren, dass du nachher eine andere Festplatte mountest, die du gar nicht spindown willst. Das wird sie aber tun, weil spindown auf diesem device trotz remounts weiter läuft. Und meine Idee war beides zu synchronisieren.

MfG
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.