Einige Befehle in Solaris (z. B. Iostat) melden Informationen zur Festplatte unter Verwendung von Laufwerksnamen wie sd0 oder sdd2. Gibt es einen konsistenten Weg, um diese Namen zurück auf den Standard / dev / dsk / c? T? D? S zu mappen? Festplattennamen in Solaris?
Edit: Wie Amit zeigt, erzeugt iostat -n Device Namen wie zB c0t0d0s0 anstelle von sd0. Aber wie finde ich heraus, dass sd0 eigentlich c0t0d0s0 ist? Ich suche nach etwas, das eine Liste wie folgt erzeugt:
sd0=/dev/dsk/c0t0d0s0 ... sdd2=/dev/dsk/c1t0d0s4 ...Vielleicht könnte ich Iostat zweimal ausführen (mit und ohne -n) und dann die Ergebnisse zusammenführen und hoffen, dass die Anzahl der Zeilen und die Gerätesortierung, die von Iostat erzeugt werden, zwischen den beiden Läufen identisch ist?
Nach Amits Idee, meine eigene Frage zu beantworten, habe ich folgendes gefunden:
%Vor%Wenn Sie dies auf einem Solaris 10-Server ausführen, erhalten Sie folgende Ausgabe:
%Vor%Die Lösung ist nicht sehr elegant (es ist kein One-Liner), aber es scheint zu funktionieren.
Eine Liner-Version der angenommenen Antwort (ich habe nur 1 Reputation, also kann ich keinen Kommentar schreiben):
%Vor%Wie in anderen Antworten erwähnt, können Sie den Gerätenamen über den Gerätepfad und die in / etc / path_to_inst enthaltenen Informationen zurück auf den Instanznamen abbilden. Hier ist ein Perl-Skript, das die Aufgabe erfüllt:
%Vor%Ich habe Folgendes im Solaris Transition Guide gefunden:
"Instanznamen
Instanznamen beziehen sich auf das n-te Gerät im System (z. B. sd20).
Instanznamen werden gelegentlich in Treiberfehlermeldungen gemeldet. Sie können die Bindung eines Instanznamens an einen physischen Namen ermitteln, indem Sie wie im folgenden Beispiel dmesg(1M)
output anzeigen.
Sobald der Instanzname einem Gerät zugewiesen wurde, bleibt es an dieses Gerät gebunden.
Instanznummern sind in der Minor-Nummer eines Geräts codiert. Um die Instanznummern bei Neustarts konsistent zu halten, zeichnet das System sie in der Datei / etc / path_to_inst auf. Diese Datei wird nur zum Zeitpunkt des Starts gelesen und wird derzeit von add_drv(1M)
und drvconf
"
Also habe ich das folgende Skript geschrieben:
für das Gerät in / dev / dsk / * s2
tue
%Vor%erledigt
%Vor%sd0 sdd0 sind Instanznamen von Geräten. Sie können / etc / path_to_inst prüfen, um den Namen des Instanznamens auf den Namen des physischen Geräts zu beziehen, dann den Link in / dev / dsk (auf welches physikalische Gerät er zeigt) ist es 100% sichere Methode, obwohl ich nicht weiß, wie man es kodiert;)
Eine geringfügige Änderung, um Plattennamen zuzulassen, die länger als 8 Zeichen sind (im Umgang mit Festplatten-Arrays in einem SAN)
%Vor%