staging.inyokaproject.org

Datenträgerbezeichnungen bei zwei Festplatten?

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Hi Newubunti,

gut das Du Dich meldest.

Nach meiner Beobachtung - und ich hatte mich zweimal mit dem Thema recht intensiv beschäftigt - stimmt die Regel mit den Controller-Anschlüssen grundsätzlich schon.

Das glaube ich auch, das es theoretisch stimmt. Theoretisch, weil es bei mir eben anders ist.

Ist das bei Dir wirklich so, dass das BIOS die Reihenfolge jedes mal beim Start ändert - also bei den POST-Meldungen?

Nein, die sind immer gleich. Lediglich die /dev-Bezeichnungen ändern sich. Gut, das mit dem Bios habe ich mir zurechtegedacht, da ich nirgendwo Infos darüber finden kann, wie die Bezeichnungen vergeben werden. Ich dachte halt, das das Bios so eine Art Tabelle führt, in der die Festplatten nach ihrem Selbsttest eingetragen werden. Je nachdem in welcher Reihenfolge sie sich "bereit" melden, kommen sie dann in die Tabelle. Der Kernel liest dann diese Tabell aus und vergibt die Device-Bezeichnungen. Wie gesagt, diese Erklärung hatte ich mir so zurechtgebastelt, um das Verhalten bei mir zu erklären. Wie das wirklich abläuft, weiß ich nicht 😳

Wäre halt auch die Frage wie ist das BIOS bei Dir eingestellt, welche Optionen gibt es im BIOS bei Dir diesbezüglich und von welcher Platte startest Du?

Uhhh, da habe ich jetzt nicht genau geschaut. Booten tue ich immer von der SATA-Platte, was auch im Bios so eingestellt ist. Daneben gibt es noch Einstellungen, welche Geräte überhaupt als Bootmedium verwendet werden können.

Hier die Ausgaben aus der Grubkonsole. Ich hoffe, die Ausgabe von ls reicht. Sonst müsste ich das heute Abend nochmal machen:

> grub ls
(hd0) (hd0,msdos9) (hd0,msdos9) (hd0,msdos7) (hd0,msdos6) ) (hd0,msdos5) 
(hd0,msdos1) (hd1) (hd1,msdos6) (hd1,msdos5) (hd1,msdos1)

fdisk -l nach dem ersten Boot:

Platte /dev/sda: 250.1 GByte, 250059350016 Byte
[...]
Disk identifier: 0x2fb82fb7

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1   *           1        5100    40960000    7  HPFS/NTFS
/dev/sda2            5101       30401   203230252    5  Erweiterte
/dev/sda5            5101        6315     9759456   83  Linux
/dev/sda6            6316        6440      999424   82  Linux Swap / Solaris
/dev/sda7            6440        7656     9764864   83  Linux
/dev/sda8            7657       18100    83891398+   b  W95 FAT32
/dev/sda9           18101       30401    98807751   83  Linux

Platte /dev/sdb: 250.1 GByte, 250059350016 Byte
[...]
Disk identifier: 0x0008ca7c

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1   *           1        1913    15366141    7  HPFS/NTFS
/dev/sdb2            1914       30401   228829860    5  Erweiterte
/dev/sdb5            1914        3926    16169391   83  Linux
/dev/sdb6            3927       16948   104599183+  83  Linux

/dev/sda ist die Platte am SATA-anschluß, sdb ist Platte am IDE-Anschluß. Nach dem zweiten Bootvorgang ist die Ausgabe von ls auf der Grubkonsole gleich wie oben, jedoch haben sich die Device-Bezeichnungen geändert:

$ sudo fdisk -l

Platte /dev/sda: 250.1 GByte, 250059350016 Byte
[...]
Disk identifier: 0x0008ca7c

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1   *           1        1913    15366141    7  HPFS/NTFS
/dev/sda2            1914       30401   228829860    5  Erweiterte
/dev/sda5            1914        3926    16169391   83  Linux
/dev/sda6            3927       16948   104599183+  83  Linux

Platte /dev/sdb: 250.1 GByte, 250059350016 Byte
[...]
Disk identifier: 0x2fb82fb7

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1   *           1        5100    40960000    7  HPFS/NTFS
/dev/sdb2            5101       30401   203230252    5  Erweiterte
/dev/sdb5            5101        6315     9759456   83  Linux
/dev/sdb6            6316        6440      999424   82  Linux Swap / Solaris
/dev/sdb7            6440        7656     9764864   83  Linux
/dev/sdb8            7657       18100    83891398+   b  W95 FAT32
/dev/sdb9           18101       30401    98807751   83  Linux

Die zwei boot-Markierungen rühren daher, das ich auf der IDE-Platte noch eine (kaputte) Windows 2000-Installation liegen habe (noch von der vor-Linux-Ära). Desweiteren befindet sich darauf noch eine Testinstallation von Precise, dessen grub im PBR der /-Partition liegt (in der letzten fdisk-Ausgabe auf /dev/sda5).

Das grub, welches immer gestartet wird, liegt im mbr auf /dev/sdb (SATA-Platte), bezogen auf die letzte fdisk -Ausgabe.

Letztendlich führt dieses Verhalten dazu, das ich immer höllisch aufpassen muss, wenn ich Partitionen ändern möchte, da ich die Platten lediglich an der Partitionierung unterscheiden kann. Zeitweise war die Partitionierung sogar identisch, so dass ich gar nicht wusste, welche Platte nun welches Device ist 😕

Gruß
kaputtnik

Bearbeitet von aasche:

von der Diskussion zum Wiki-Artikel Datenträger abgekoppelt.

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

kaputtnik schrieb:

Das glaube ich auch, das es theoretisch stimmt. Theoretisch, weil es bei mir eben anders ist.

Naja, damit wir nicht aneinander vorbeireden: Die Regel bezieht sich auf den einzelnen Controller. Dazu kannst Du ja mit Deinem Fall nichts sagen, weil Du - wenn ich es richtig verstanden habe - an jedem Controller jeweils nur eine Platte hast. Dich betrifft die genannte Regel also nicht. Deswegen stimmte ich auch aasche zu, dass die Regel um einen Hinweis ergänzt werden sollte - wie immer der genau auch aussieht.

Bei Dir stellt sich die Frage, wie das BIOS zwei oder auch noch mehr Controller in der Reihenfolge einordnet. AFAIK gibt es da keine Regel. Weshalb dann eine solche Situation, wie bei Dir durchaus auftreten kann.

Man könnte mutmaßen, dass bei älteren Boards - bei denen noch IDE Standard und SATA nur Beigabe war - zunächst die IDE-Geräte und dann die SATA-Geräte gelistet werden, während es bei neueren Boards wohl eher umgekehrt ist. Das ist aber eine reine Vermutung. Es kann auch sein, dass ein gesetztes oder nicht gesetztes Bootflag Auswirkung zeigt.

Grundsätzlich weiß ich noch, dass manches BIOS den Start eines Systems verweigert, wenn kein Bootflag auf irgend einem Datenträger gesetzt ist - was ja bei reinen Linux-Systemen ein realistisches Szenario ist. Daher könnte es auch sein, dass ein gesetztes Bootflag auf die Reihenfolge wirkt.

Bei Server-Boards ist es z.B. so, dass man dort einstellen kann, das Option-Roms von dort eingesteckten RAID-Karten sich nicht ins BIOS des Server-Boards einklinken sollen.

Das bestärkt mich in der Vermutung, dass es BIOS-seitig keine feste Regel bei mehreren Controllern gibt. Aber gesichertes Wissen habe ich diesbezüglich nicht.

Das einzige was ich sicher weiß ist, dass die im Artikel stehende Regel für einen einzelnen Controller so zutrifft und dass die BIOS-Gerätenamen für die Festplatten in dem Fall der Reihenfolge ihrer Anschlüsse entsprechen. Siehe dazu z.B. auch hier:

Gestartet werden kann dabei nur vom Gerät mit der Bezeichnung 0x80, was zunächst die Platte am ersten Anschluss des Controllers ist. Damit man nun die Platten nicht umstecken muss, um bei Bedarf von ihnen starten zu können, gibt es das Geräte-Mapping im BIOS. D.h. wenn Du im BIOS oder dessen extra Bootmenü einstellst, von der dritten Platte - also BIOS-intern 0x82 - zu starten, dann tauscht (mapped) das BIOS für den Moment des Systemstarts 0x82 auf 0x80.

Da dieses Mapping aber nur im Moment des Systemstarts stattfindet, ist es für das laufende System nicht transparent. Nur in der GRUB-Konsole, die noch im BIOS-Kontext abläuft, kann man das erkennen. Das ist übrigens auch der Grund dafür, dass die automatische GRUB-Installation bei einem Mehr-Platten-System leicht ins schleudern gerät und dann zu unerwünschten Ergebnissen führen kann.

Aber die GRUB-Konsole kann uns in Deinem Fall nicht sicher darstellen, ob das BIOS nun überhaupt gemapped hat oder nicht.

Was schließlich noch hinzukommt - und in dem Bereich kenne ich mich nicht genug aus - wie der Kernel bezüglich der Reihenfolge bei mehreren Controllern umgeht. Im GRUB Manual steht dazu:

Unfortunately, even OS device names are not always stable. Modern versions of the Linux kernel may probe drives in a different order from boot to boot, and the prefix (/dev/hd* versus /dev/sd*) may change depending on the driver subsystem in use. As a result, the device map file required frequent editing on some systems.

Innerhalb des selben Controllers konnte ich diese Instabilität bei der Namens-Vergabe noch nicht feststellen, bei mehreren Controllern wird sich aber wohl die Wahrscheinlichkeit für den Eintritt der These erhöhen.

Im Netz habe ich irgendwo mal gelesen, dass man die BIOS-Gerätenamen im laufenden OS mittels der Enhanced Disk Drive Services ermitteln können soll, die in Form des edd Modules geladen können werden sollen. Auf die schnelle war mir das zu kompliziert.

Nein, die sind immer gleich. Lediglich die /dev-Bezeichnungen ändern sich. ...

Welche Platte kommt denn da zuerst?

Ich kann es zwar nicht mit 100%iger Sicherheit sagen, aber für mich deuten Deine Angaben darauf hin, dass hier die Reihenfolge eher vom Kernel beliebig gewählt wird.

Letztendlich führt dieses Verhalten dazu, das ich immer höllisch aufpassen muss, wenn ich Partitionen ändern möchte, da ich die Platten lediglich an der Partitionierung unterscheiden kann. Zeitweise war die Partitionierung sogar identisch, so dass ich gar nicht wusste, welche Platte nun welches Device ist 😕

Deshalb empfehle ich für Mehrplattensysteme übrigens immer, Gebrauch von Partitions-Labels zu machen.

Gruß, Martin

kaputtnik

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Hi,

Newubunti schrieb:

kaputtnik schrieb:

Das glaube ich auch, das es theoretisch stimmt. Theoretisch, weil es bei mir eben anders ist.

Naja, damit wir nicht aneinander vorbeireden: Die Regel bezieht sich auf den einzelnen Controller.

Ok, das geht nicht ohne weiteres aus dem Artikel hervor. Sollte man evtll mit dem Hinzuzufügenden Hinweis zusammen einbauen.

Bei Dir stellt sich die Frage, wie das BIOS zwei oder auch noch mehr Controller in der Reihenfolge einordnet. AFAIK gibt es da keine Regel. Weshalb dann eine solche Situation, wie bei Dir durchaus auftreten kann.

Das ist das eine...

Was schließlich noch hinzukommt - und in dem Bereich kenne ich mich nicht genug aus - wie der Kernel bezüglich der Reihenfolge bei mehreren Controllern umgeht.

... und das ist das andere Mysterium.

Im GRUB Manual steht dazu:

Unfortunately, even OS device names are not always stable. Modern versions of the Linux kernel may probe drives in a different order from boot to boot, and the prefix (/dev/hd* versus /dev/sd*) may change depending on the driver subsystem in use. As a result, the device map file required frequent editing on some systems.

Ja, das hatte ich auch gelesen.

Innerhalb des selben Controllers konnte ich diese Instabilität bei der Namens-Vergabe noch nicht feststellen, bei mehreren Controllern wird sich aber wohl die Wahrscheinlichkeit für den Eintritt der These erhöhen.

Fraglich ist dann halt, wie es bei mehreren Festplatten an unterschiedlichen Controllern aussieht: Wird erst ein Controller komplett abgearbeitet und dann der nächste?

Im Netz habe ich irgendwo mal gelesen, dass man die BIOS-Gerätenamen im laufenden OS mittels der Enhanced Disk Drive Services ermitteln können soll, die in Form des edd Modules geladen können werden sollen. Auf die schnelle war mir das zu kompliziert.

Ah ja, kann ich verstehen ☺

Nein, die sind immer gleich. Lediglich die /dev-Bezeichnungen ändern sich. ...

Welche Platte kommt denn da zuerst?

Also die Biosmeldung lautet:

IDE-Channel 0 : DVD-Laufwerksbezeichnung
IDE-Channel 0 : Festplattenbezeichnung

IDE-Channel 2: Festplattenbezeichnung

Channel 0 ist der IDE-Anschluß, und wie ich gerade feststelle habe ich die Festplatte als slave konfiguriert. Vllt spielt das auch noch eine Rolle. Ich weiß jetzt auch nicht genau, wie ich die Hardware gejumpert habe, da gibt es ja auch Cableselect... aber ich habe jetzt echt keinen Bock deswegen den Rechner aufzuschrauben 😕

Ich kann es zwar nicht mit 100%iger Sicherheit sagen, aber für mich deuten Deine Angaben darauf hin, dass hier die Reihenfolge eher vom Kernel beliebig gewählt wird.

Vorschlag für den Artikel:

Hinweis:

Bei Verwendung von mehreren Festplatten an unterschiedlichen Controllern (IDE, SATA), ist die Vergabe der Device-Bezeichnungen nicht eindeutig. Hier kann es dazu kommen, das mal die eine Festplatte als /dev/sda geführt wird, ein anderes mal eine andere Festplatte.

Ob als Hinweisblock oder nicht, sei jetzt mal dahingestellt.

Deshalb empfehle ich für Mehrplattensysteme übrigens immer, Gebrauch von Partitions-Labels zu machen.

Ja, das sollt man als generelle Empfehlung einführen, da damit zB auch die Verwendung in Dolphin wesentlich einfacher wird. Wie das in Nautilus aussieht, weiß ich nicht.

Gruß
kaputtnik

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

kaputtnik schrieb:

Vorschlag für den Artikel Datenträger:

Hinweis:

Bei Verwendung von mehreren Festplatten an unterschiedlichen Controllern (IDE, SATA), ist die Vergabe der Device-Bezeichnungen nicht eindeutig. Hier kann es dazu kommen, das mal die eine Festplatte als /dev/sda geführt wird, ein anderes mal eine andere Festplatte.

Das ist zwar erstmal nur eine Problembeschreibung (ohne Loesung), aber ein guter Hinweis.

Ob als Hinweisblock oder nicht, sei jetzt mal dahingestellt.

Waere doch ok so. Aber das kannst Du ja selbst entscheiden ☺

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 4768

kaputtnik schrieb:

Vorschlag für den Artikel:

Hinweis:

Bei Verwendung von mehreren Festplatten an unterschiedlichen Controllern (IDE, SATA), ist die Vergabe der Device-Bezeichnungen nicht eindeutig. Hier kann es dazu kommen, das mal die eine Festplatte als /dev/sda geführt wird, ein anderes mal eine andere Festplatte.

Nach meiner Einschätzung muss die Klammer noch weg. Denn es könnte ja auch sein, dass neben einem auf dem Board sitzenden SATA chip noch ein extra SATA-Controller verwendet wird. Da dürfte es zu einem ähnlichen Problem kommen. Ansonsten finde ich es gut. 👍

Channel 0 ist der IDE-Anschluß, und wie ich gerade feststelle habe ich die Festplatte als slave konfiguriert. Vllt spielt das auch noch eine Rolle.

Kann man auch nicht vollends ausschließen, dass da der Kernel ins schleudern kommt. Das kannst Du ja mal bei der nächsten Säuberungs-Aktion überprüfen. Rein logisch betrachtet, sollte das aber keine Rolle spielen.

Gruß, Martin

kaputtnik

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Newubunti schrieb:

Nach meiner Einschätzung muss die Klammer noch weg. Denn es könnte ja auch sein, dass neben einem auf dem Board sitzenden SATA chip noch ein extra SATA-Controller verwendet wird.

Ich sperre mich etwas gegen den (Fach-)Begriff "Controller" und fand es notwendig in der Klammer zu beschreiben, was damit gemeint ist.

Also statt Streichung der Klammer, habe ich das jetzt so geschrieben:

Hinweis:

Bei Verwendung von mehreren Festplatten an unterschiedlichen Controllern (z.B.: IDE, SATA), ist die Vergabe der Device-Bezeichnungen nicht eindeutig. Nach einem Bootvorgang kann es dazu kommen, das mal die eine Festplatte als /dev/sda geführt wird, ein anderes mal eine andere Festplatte.

Habe noch eine Anmerkung zum Artikel.

Gruß
kaputtnik

Antworten |