Reihenfolge der Festplatten nach dem "boot"?

foxit

Well-Known Member
Hallo zusammen :)

Ich baue gerade ein Storage System auf. Es soll ein ZFS Server werden, mit welchem per Samba verschiedene Verzeichnisse zum Austausch angeboten werden. Ich bin im Moment noch am testen, was da die "beste" Variante für mich ich.

Jetzt habe ich folgendes Problem:
- Ich habe FreeBSD 9.1 Release auf der HD "da0" und "da1" als "zpool mirror" installiert. Kein Problem. Das System bootet und alle Controller ect. werden erkannt.
- Die HD's "da0" und "da1" (beide SATA) hängen mit den anderen HD's (SAS) am gleichen Backplane an einen LSI-9211.
- Wenn ich jetzt die SAS HD's einstecke, werden aus meine beiden SATA HD's (da0 und da1) "da12" und "da13"!

Dies ist für mein System zum booten natürlich kein Problem aber so stimmen die ganzen Bezeichnungen/Beschriftungen nicht mehr!

Jemand eine Idee, wie ich dies verhindern kann, dass die HD's so angezeigt werden, wie sie auch beim Boot von dem Controller gesehen werden? Dort wird jede ID (0...15) richtig aufgelistet, wie sie gesteckt sind.
Code:
<SEAGATE ST32000645SS 0004>        at scbus0 target 11 lun 0 (pass0,da0)
<SEAGATE ST32000645SS 0004>        at scbus0 target 12 lun 0 (pass1,da1)
<SEAGATE ST32000645SS 0004>        at scbus0 target 13 lun 0 (pass2,da2)
<SEAGATE ST32000645SS 0004>        at scbus0 target 14 lun 0 (pass3,da3)
<SEAGATE ST32000645SS 0004>        at scbus0 target 15 lun 0 (pass4,da4)
<SEAGATE ST32000645SS 0004>        at scbus0 target 16 lun 0 (pass5,da5)
<SEAGATE ST32000645SS 0004>        at scbus0 target 17 lun 0 (pass6,da6)
<SEAGATE ST32000645SS 0004>        at scbus0 target 18 lun 0 (pass7,da7)
<SEAGATE ST32000645SS 0004>        at scbus0 target 19 lun 0 (pass8,da8)
<SEAGATE ST32000645SS 0004>        at scbus0 target 20 lun 0 (pass9,da9)
<SEAGATE ST32000645SS 0004>        at scbus0 target 21 lun 0 (pass10,da10)
<SEAGATE ST32000645SS 0004>        at scbus0 target 22 lun 0 (pass11,da11)
<ATA SAMSUNG HD256GM 0205>         at scbus0 target 25 lun 0 (pass14,da12)
<ATA SAMSUNG HD256GM 0205>         at scbus0 target 26 lun 0 (pass15,da13)
<ATA INTEL SSDSC2MH12 PPG2>        at scbus0 target 27 lun 0 (pass16,da14)
Code:
=>       34  488397101  da12  GPT  (232G)
         34        128     1  da0p1-boot  (64k)
        162   71303168     2  da0p2-swap  (34G)
   71303330  417093805     3  da0p3-zfs  (198G)

=>       34  488397101  da13  GPT  (232G)
         34        128     1  da1p1-boot  (64k)
        162   71303168     2  da1p2-swap  (34G)
   71303330  417093805     3  da1p3-zfs  (198G)
Danke
Lord_x
 
Kann man mit ZFS keine Labels verwenden?
Wie meinst du das? An liebsten wäre es mir, wenn der Kernel die ID's einfach übernehmen würde und er nicht die SAS Festplatten auf da0 da1 ect. neu verteilen würde.
 
Ich würde ja fast tippen, dass der Controller zuerst die SAS- und dann die SATA-Disks meldet oder in der Reihenfolge an den Kernel meldet. Die targets deutet es an.
 
glabel ist dein Freund. Oder Labels mit GPT.

Dann die Labels für die ZFS-Devices angeben, anstatt die physikalischen Adressen, und ab dann sollte es keine Rolle mehr spielen wie die Hardware durchnummeriert wird...die Labels bleiben gleich und nur danach wird ZFS sich dann richten.

Was ich aber bisher auch noch nicht verstanden habe (vielleicht kann das hier ja jemand erklären): Warum richtet sich ZFS nicht eigentlich nach seinen selbstvergebenen IDs und kommt stattdessen durcheinander, wenn die physikalische Adresse sich ändert?...warum muss man den zusätzlichen Trick mit glabel machen? Oder ist das historisch bedingt und mittlerweile ebenso gar nicht mehr nötig?
 
Ich würde ja fast tippen, dass der Controller zuerst die SAS- und dann die SATA-Disks meldet oder in der Reihenfolge an den Kernel meldet. Die targets deutet es an.
Ja genau das denke ich auch.

@cla
Das funktioniert schon das Problem ist nur, dass die Festplatten Einschübe vorne eine Nummer haben (0 bis 15).
Wenn ich jetzt eine defekte HD habe (sagen wir da4), wie soll ich diese finden? Der Slot mit der Nummer 3 (start bei 0) ist vielleicht die HD da8. Das ist dann natürlich ein Problem, wenn ich diese entferne. Auch leuten die LED der SAS HD's immer :(
 
Das "wo ist die defekte HD" Problem hab ich dadurch gelöst, das ich für meine Labels die Seriennummer der Festplatten verwende.
Zudem ist jeder Einschub sichtbar mit der Seriennummer beschriftet.

Nur so kann ich wirklich 100% sicher sein...alles andere (inkl. die vom Controller angebotenen Lösungen) waren mir bisher immer zu unsicher.
 
Klingt für mich danach das du die fstab nutzt um zu sagen wann du was mounten willst. Sollte deine Installation eine ZFS only Installation sein könntest du doch auch ZFS das mounten überlassen, dazu nutzt du einfach

Code:
zfs set mountpoint

in der fstab habe ich gerade so mein swap device eingetragen sonst nichts.

hth
 
Klingt für mich danach das du die fstab nutzt um zu sagen wann du was mounten willst. Sollte deine Installation eine ZFS only Installation sein könntest du doch auch ZFS das mounten überlassen

In meiner "fstab" ist auch nur swap aufgelistet. Ich habe als ich das System installiert habe nur die beiden SATA Platten installiert gehabt. Diese waren da0 da1. Jetzt aber mit den SAS Platten haben diese wohl eine höhere priorität als die SATA HD's. Dadurch verschiebt sich die Bezeichnung nach hinten.
 
Dann ist dein Problem doch nur Swap oder besser das device oder?
Ja das ist daraus ein Folgeproblem stimmt. Gibt es keinen Eintrag in der "loader.conf" oder sonst wo, welche die Zuweisung der HD 1 zu 1 vom Controller übernehmen kann?
 
Nein. Wie die Platten nummeriert werden, hängt bei RAID-Controllern vom Zusammenspiel ihrer Firmware und dem Treiber ab. Wenn der Treiber keine Option bietet, bist du leider chancenlos. Das ist ein Grund, weshalb empfohlen wird alle Platten per glabel(8) zu labeln. Der andere ist, dass einige ganz schlaue Controller beim Ziehen einer Platte auch im laufenden Betrieb alle Festplatten neu durchnummerieren. Das mögen weder ZFS noch UFS. Im Fall von ZFS kann es sogar den Pool zerstören...
 
Ja genau das denke ich auch.

@cla
Das funktioniert schon das Problem ist nur, dass die Festplatten Einschübe vorne eine Nummer haben (0 bis 15).
Wenn ich jetzt eine defekte HD habe (sagen wir da4), wie soll ich diese finden? Der Slot mit der Nummer 3 (start bei 0) ist vielleicht die HD da8. Das ist dann natürlich ein Problem, wenn ich diese entferne. Auch leuten die LED der SAS HD's immer :(

Mache HBAs führen Status-LEDs unter /dev/led/* raus. Sonst label die Platten/Einschübe und die Partitionen.
 
@Crest
Leider ist das bei dem LSI-9211-4i nicht der Fall.

Das mit dem Beschriften hat geklappt und ja das ist eine gute Lösung. Danke für den Input :)

Hat eigentlich der Treiber von LSI "mpslsi" irgendwelche Vorteile gegenüber dem "mps"?
 
Man kann die Platten auch selber nummerieren und dann einfach die Platten mit Edding oder Label-Printer beschriften. Z.B. 002-04-000 für Storage System 2 Schacht 4 Generation 0. Wobei ich die Generation wahrscheinlich nur auf der Plattenbeschriftung und auf dem Schacht mit angeben würde, damit ich nicht versehentlich irgendwo eine alte ausgemusterte Platte reinschiebe.

Da ich keine großen Storage Systeme habe nummeriere ich meine Platten einfach mit laufender Nummer durch.
 
mps(4) ist halt ein FreeBSD-Eigengewächs, mpslsi(4) wurde von LSI geschrieben. Da LSI die Wartung übernommen hat, wurde in 9.1 mps(4) durch mpslsi(4) ersetzt, wodurch die beiden Treiber praktisch gleich sind.
 
Back
Top