SSD in HDD bay wird zu /dev/sdb?

egalus

New member
Themenstarter
Registriert
7 Juli 2010
Beiträge
218
Hi,

nachdem die neulich kurzzeitig gekaufte - und mechanisch nicht in mein T61 passende - Vertex2 nun gegen eine Extrememory XLR8 ausgetauscht wurde hat mein T61 eine Schwupdizität die ich ihm nie zugetraut hätte.
Und weil ich eh schon seit geraumer Zeit von Ubuntu 9.10 weg wollte war auch gleich der Zeitpunkt gekommen einen sauberen Neuanfang zu machen.
Da ich des öfteren auch noch Windows benötige habe ich zuerst W7 draufgepackt und danach Ubuntu 10.10 installiert.
Soweit läuft das auch alles wunderbar, seltsam (und für einige Sachen wie sogar sehr ärgerlich) ist aber, dass die SSD, wenn sie im HDD Bay steckt und nix oder ein optisches Laufwerk im Ultrabay steckt, als /dev/sda erkannt wird (so erwarte ich das auch), aber wenn ich nun meine alte Platte ins Ultrabay stecke, dann wird auf einmal aus der SSD /dev/sdb. Sie bleibt aber nach wie vor die Bootplatte und es wird auch brav weiter von ihr gebootet, dennoch wundert mich das sehr - bei 2 HDDs im T61 gab es dieses Wechselspielchen nicht.

Habt ihr vielleicht einen Rat für mich woran das nun wieder liegen könnte und vielleicht auch gleich eine Lösung wie sich dieses Fehlverhalten abstellen lässt?

Danke im Voraus,
Norbert
 
Evilandi666' schrieb:
Okay... bringt das arg viel für ne SSD?
..abhängig von SSD, Rechenleistung und Anwendungsfall. Man wird selten einen Unterschied merken, ab und an aber eben doch. Und dann eben tendenziell häufiger in positiver Hinsicht, und seltener in negativer Hinsicht.

Ob das wirklich jemand ordentlich getestet hat, weiß ich leider nicht.
 
am sinnvollsten für ssd dürfte deadline sein, da der leseoperationen bevorzugt behandelt. schreibzugriffe kann man locker im ram puffern ohne dass die anwendung etwas davon merkt. die arbeitet weiter, egal, ob die daten nun im ram liegen oder auf der ssd. beim lesen von daten gibts die möglichkeit nicht. damit eine anwendung nicht unnötig warten muss, weil gerade größere datenmengen zum schreiben anstehen, zieht deadline den lesezugriff vor. noop ist dagegen ein einfacher fifo. d.h. wer zuerst kommt, mahlt zuerst. mehr tut noop nicht. heißt ja auch nicht ohne grund "noop".
ich meine gelesen zu haben, dass cfq in zukunft bei datenträgern, ie als ssd erkannt wurden, wie deadline arbeiten soll, so dass cfq in zukunft immer die beste wahl sein soll.
 
Falls man nur eine Platte hat, kann man das auch über den Kernelparameter setzen in Grub übrigens.
 
Afaik kannst du (oder konnte man? Mir ist die Änderung an cfq noch nicht zu Ohren gekommen) mit cfq als scheduler für ne SSD Mikroruckler bekommen weil cfq kurz wartet nachdem ein read für einen Prozess abgeschlossen ist - denn oftmals will der Prozess ja direkt weiterlesen und das dann in der Regel sequentiell dahinter, so spart man bei HDDs wegen der hohen Zugriffszeiten. Bei SSDs ist das aber völlig unnötig, da hier große Latenzen für die Neupositionierung der Köpfe eintfallen.

Deadline und noop hat yatpu ja schon wunderschön erklärt ;)

Wie gesagt ist der scheduler aber auch wieder nur eine Stelle an der der Devicenamenkuddelmuddel unpraktisch ist. So ist es ziemlich uninteressant die SSD schlafen zu schicken - zum einen weil es die System"platte" ist, zum anderen weil es kaum was bringt. Die HDD im Ultrabay ist aber nur ein Datengrab und wird eher selten benutzt, darf also ruhig die meiste Zeit des Tages pennen und leise sein. Und auch hierfür benötigt hdparm den Devicenamen und keine UUID.
Auch TLP lässt sich durch den Kuddelmuddel für solche Zwecke nun nicht mehr in meinem T61 gebrauchen.
Gleiches gilt für laptop-mode, hdparm.conf usw.
Allesamt mehr oder minder unbrauchbar (in Bezug auf die HDD Parameter) wenn man wie ich mal ne HDD zusätzlich im Ultrabay hat und mal nicht.
 
[quote='Evilandi666',index.php?page=Thread&postID=998788#post998788]Falls man nur eine Platte hat, kann man das auch über den Kernelparameter setzen in Grub übrigens.[/quote]

Wenn ich nur eine Platte hätte gäbs aber auch das Problem mit den Devicenamenumbenennungen nicht :-)
 
so musst du halt schauen wo der symlink in /dev/disk/by-uuid/ (bei mir gibts auch noch /dev/disk/by-id, find das aber unbequemer) hinzeigt (die zeigen auf /dev/sdxy) und da dann halt den Scheduler setzen mit der Information.

Mal sehen ob ich mir das auch gebe, wenn die SSD da ist ;)

@egalus: Könntest du mir dein Skript vllt. zukommen lassen?
 
@Evilandi666
Keine Angst, ich bin keiner der nur Fragen stellt, sich aus den Infos was bastelt und auf nimmer Wiedersehen verschwindet.
Sobald ich mir was gebastelt hab - hab wohl frühestens am Wochenende dazu Zeit - stell ich das auch hier rein.
Nen Anfang hab ich schon, bei dem man den Modelnamen, so wie ihn Linux erkennt angeben kann und dann sucht sich das Script über /dev/disk/by-id den passenden sd? Devicenamen und damit kann man dann genau das machen was man machen will.
 
Soderle, ging dann doch schneller als gedacht. Ich hoffe die Kommentare sind ausreichend. Bisher wird nur der scheduler umgesetzt, aber das nun auf alles mögliche andere zu adaptieren dürfte wirklich keine Probleme mehr machen.

Code:
#!/bin/bash
#
# this script finds all ssds name SSD_NAME (taken from
# /sys/block/sd?/device/model) which can be found in DISK_DEVICES
# warning, there might be blanks at the end of the modelname - they all
# seem to be exactly 16 characters long, so add spaces or check with
# echo "x$(cat /sys/block/sda/device/model )x" which results in a string
# xDEVICENAMEx and can contain spaces like here: xXLR8_PL120AB    x

# define the devices that are disk devices
DISK_DEVICES="sda sdb sdc"

# enter the name of your ssd - we will use exactly this name to match any
# DISK_DEVICE against this string!
SSD_NAME="XLR8_PL120AB    "
#SSD_NAME="WDC WD5000BEVT-0"

# the next lines generate two lists, one contains device names for SSDs and
# the other for non SSDs (called HDDs)
SSD_DEVICES=""
HDD_DEVICES=""
for dev in $DISK_DEVICES; do
        if [ "x$( cat /sys/block/${dev}/device/model 2>/dev/null)x" = "x${SSD_NAME}x" ];
                then SSD_DEVICES="$SSD_DEVICES $dev"
                else HDD_DEVICES="$HDD_DEVICES $dev"
        fi
done

# and here are the results of the check
echo hdds: $HDD_DEVICES
echo ssds: $SSD_DEVICES

# set scheduler deadline for SSDs
for dev in $SSD_DEVICES; do
        echo deadline > /sys/block/${dev}/queue/scheduler
        echo setting deadline scheduler for $dev
done
 
Und wenn wir schon beim Thread-Exhumieren sind: TLP kann seit 0.3.0 die Platten über die Namen in /dev/disk/by-id auseinanderhalten :).
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben