Laufwerksname? Was ist der richtige Begriff für den "sda" -Teil von "/ dev / sda"?


16

fdisk (8) sagt:

Das Gerät ist normalerweise / dev / sda, / dev / sdb oder so. Ein Gerätename bezieht sich auf die gesamte Festplatte. Alte Systeme ohne libata (eine Bibliothek, die im Linux-Kernel zur Unterstützung von ATA-Host-Controllern und -Geräten verwendet wird) unterscheiden IDE- und SCSI-Festplatten. In solchen Fällen lautet der Gerätename / dev / hd * (IDE) oder / dev / sd * (SCSI).

Die Partition ist ein Gerätename, gefolgt von einer Partitionsnummer. Beispielsweise ist / dev / sda1 die erste Partition auf der ersten Festplatte im System. Siehe auch Dokumentation zum Linux-Kernel (die Datei Documentation / devices.txt ).

Auf dieser Grundlage verstehe ich, dass im Kontext von Linux eine Zeichenfolge wie /dev/hdaoder /dev/sdaein "Gerätename" ist. Ansonsten macht der zweite Satz, den ich oben hervorgehoben habe, keinen Sinn: Stattdessen würde er sagen: " Zum Beispiel ist sda1 die erste Partition auf der ersten Festplatte im System. "

Diese Ansicht wird durch das Linux Partition HOWTO bestätigt :

Üblicherweise erhalten IDE-Laufwerke die Gerätenamen / dev / hda bis / dev / hdd .

Gibt es einen technisch korrekten (und vorzugsweise eindeutigen und prägnanten) englischen Begriff für die Teilzeichenfolge hdaoder sdafür einen solchen Gerätenamen? Wäre es in diesem Fall beispielsweise richtig, sdadie Laufwerke aufzurufen :

  • "kurzer Name"; oder
  • "unqualifizierter Gerätename"; oder
  • etwas anderes?

(Ich frage nicht nach Umgangssprachen, die technisch falsch sind, auch wenn sie allgemein verwendet werden.)


3
FWIW, die Manpage für dkinfo , ist der einzige Befehl, auf den ich gestoßen bin und der nicht den vollständigen Pfadnamen eines Plattengeräts verwendet, und nennt ihn "Plattenname".
Mark Plotnick

@ MarkPlotnick, danke, aber diese Frage bezieht sich auf Linux oder GNU / Linux, nicht auf andere Betriebssysteme. Als solches, dkinfodas nicht Teil von Linux oder GNU / Linux ist (aber stattdessen Teil von SunOS ist ), ist es leider nicht im Umfang.
Sampablokuper

Antworten:


25

sdaist das Gerät Name . /dev/sdaist das Gerät Pfad .

Denken Sie an /sbin/fdisk, fdiskist der Dateiname , während /sbin/fdiskder Dateipfad .


5
Obwohl Sie mit "
Gerätepfad

1
Danke :) "sda ist der Gerätename. / Dev / sda ist der Gerätepfad." Dies war aus dem von Ihnen angegebenen Grund auch meine anfängliche Sichtweise, wird jedoch durch eine genaue Lektüre des in meiner Frage zitierten Manpage-Ausschnitts von util-linux fdisk nicht unterstützt. (Ich habe die Frage jetzt bearbeitet, um dies besser hervorzuheben.) Daher meine Frage zu diesem Thema hier auf SE. NB Das bedeutet nicht, dass Ihre Antwort falsch ist - vielleicht wurde dieser Teil der Manpage schlampig geschrieben? - Es bedeutet nur, dass Ihre Antwort und die Manpage von util-linux fdisk nicht übereinstimmen. Haben Sie Quellen, die Ihre Antwort bestätigen?
Nochmals vielen

6
/dev/sdaist der Pfad zum Blockgerät, aber der tatsächliche Gerätepfad würde ungefähr so lauten/devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/block/sda
Dietrich Epp

2
@jiggunjer: Weist aber mountauch einen Gerätetreiber an, --bindeinen Teil des Arbeitsspeichers (nicht ein Volume) als Dateisystem abzubilden, kann ein Teil des Dateibaums als Teilbaum usw. Außerdem kann das Mounten einer RAID- "Festplatte" nützlich und / oder bizarr sein Dinge mit mehreren Volumes, um auf Teile davon zuzugreifen oder darauf zuzugreifen. Kurz gesagt, mountkann viele Dinge tun, aber das typischste ist, dass ein Dateisystem irgendwo in der Dateibaumstruktur angezeigt wird.
Wallyk

1
@jiggunjer Ich denke, du meinst vielleicht ein Dateisystemformat, das nicht das gleiche ist wie die Instanziierung eines solchen Formats, das normalerweise als Dateisystem bezeichnet wird, was du ein Volume nennst. Auch wenn das technisch nicht korrekt ist, so verstehen die Leute das unter Dateisystem. Ich habe noch niemanden getroffen, der sich für eine Instanziierung eines Dateisystemformats als Volume einsetzt. Keines der Bücher, die ich zu diesem Thema gelesen habe, hat jemals das Wort "Volumen" für "Dateisystem" (in beiden Bedeutungen) verwendet.
Klarer

6

Der sdaTeil von /dev/sdakann abhängig von Ihrer Sichtweise verschiedene Dinge darstellen:

  1. Dateiname
    Im Allgemeinen ist es der Name einer Datei, die, wenn es sich um eine Festplatte handelt, ein Blockgerät ist, daher ein Gerätename

    Als root:

    $ ls -la /dev/sd*
    brw-rw---- 1 root disk 8, 0 Sep 11 22:01 /dev/sda
    brw-rw---- 1 root disk 8, 1 Sep 11 22:02 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Sep 11 22:01 /dev/sda2
    
  2. Disk - Name
    sdaist die Zeichenfolge , die einen Namen auf einen Datenträger (diferent als Partitionen sda1, sda2, sdX, etc.) gibt. Es wird normalerweise von udev basierend auf den angewendeten Geräteregeln generiert.

  3. Verzeichnispfad
    sdaist der Basisname des Pfads/dev/sda


Beschränkt auf die Interpretation in Bezug auf Datenträgernamen:

In alten Zeiten: sda war der Gerätename der SCSI-Festplatte a .

Da die gleiche Bibliothek auf SATA-Laufwerke erweitert wurde, sollte sie jetzt wohl heißen:

device name: SATA/SCSI/SAS disk a

Oder einfach:

device name: first SATA/SCSI/SAS disk

3

Es handelt sich um den Namen des vom Kernel generierten Blockdatenträgers / Partitionsgeräts :

sdaist ein vom Kernel generierter Plattenname . Kernel - Treiber (einschließlich SCSI - Stapel, der passiert ist sehr bequem zu bedienen zu sein für SATA - Festplatten) fill disk_nameBereich der gendiskStruktur (dh für SCSI: drivers / scsi / sd.c # L3338 ) erzeugen sdaNamen.

Dieser Name wird später verwendet , ein Name zu sein , der in Blockvorrichtung entspricht /dev, /sysund /proc/{partitions,diskstats}. Im Handbuch für procfs wird der Partitionsname ( proc (5) ) und in der Dokumentation zur Datenträgerstatistik der Gerätename ( iostats.txt ) genannt.


Interessant, denke ich sdaund bin /dev/sdaaustauschbar, und beide werden als Gerätename bezeichnet. Ich denke , das ist , weil (in einem normalen System) Sie montieren devfsauf /dev, so Namen wie sdawiederum in Pfade wie /dev/sda(die man auch einen Namen nennen könnte).
Peter Cordes

1

In Linux / Unix ist alles eine Datei. Ein Gerät wird als Datei dargestellt. Alle Gerätetypdateien befinden sich am Speicherort / dev. So sda ist ein Art spezielles Dateiblockgerät.

hd(x) - IDE
sd(x) - SATA,SSD,ISCI,SAS

Hinweis : Dabei ist x eine Variable. x steht für die Position der Festplatte.

if x = a for IDE disk means hda represents primary master disk
   x = b for IDE disk means hdb represents primary slave disk

Jetzt in sd *

if x = a for SATA/SSD/ISCI/SAS sda represents first disk
   x = b fo SATA/SSD/ISCI/SAS sdb represents second disk

IIRC, sogar IDE (PATA) -Datenträger erhalten sd*Namen mit einigen Treibern oder immer mit modernen Kerneln? Ich vergesse, ich habe keine aktiven Maschinen mit PATA und einem modernen Kernel.
Peter Cordes

2
Vielen Dank für die Antwort, aber es scheint nicht die Frage zu beantworten, die ich gestellt habe :( Ich verstehe, dass in einem Kontext wie /dev/sda, sdaeine Datei ist, und ich verstehe auch, was die Datei darstellt. Meine Frage war, wie die Teilzeichenfolge und Zeichenfolgen aufgerufen werden sollensda wie es, wenn mündlich auf sie bezogen
sampablokuper

1
@PeterCordes verwendet seit einiger Zeit openSUSE Leap 42.2. Ich kann bestätigen, dass die IDE-PATA-Laufwerke, sowohl optische sdXals auch Festplattenlaufwerke, Namen erhalten und sich auch mit SATA und SUB vermischen.
Gypsy Spellweaver

1

Es scheint mindestens zwei gültige Antworten zu geben

  1. sdakann korrekt als "Basisname" für das Laufwerk bezeichnet werden.

  2. sdakann auch korrekt als "Name der Kernel-Festplatte" für das Laufwerk bezeichnet werden.

Wie sind Sie zu diesem Schluss gekommen?

Nach dem Ausschlussverfahren für jeden der plausiblen Kandidaten:

  • "Gerätename"

Dies kann nicht der richtige Begriff sein. Wie in der ursprünglichen Frage erwähnt , bezieht es sich auf den vollständig qualifizierten Namen (z. B. /dev/sda) und nicht auf das endgültige Fragment (z sda. B. ).

Belege dafür finden sich in weiteren Quellen, z. B. auf Seite 68 des Definitiven Handbuchs zu SUSE Linux Enterprise Server 12 :

Sie können auch festlegen, dass ... ein Mount verwendet wird, der auf dem Gerätenamen basiert (z. B. /dev/sdb1) ...

und S.94 der Linux Bible 2008 Edition :

Klicken Sie auf die Registerkarte Gerät, und geben Sie den Gerätenamen ein (z. B. /dev/cdrom).

  • "Dateiname" oder "Dateiname"

Dies kann auch nicht der richtige Begriff sein, da er in der technischen Dokumentation als Synonym für den vollständig qualifizierten Namen (z. B. /dev/sda) und nicht nur für das endgültige Fragment (z. B. sda) verwendet wird:

BASISNAME (1) :

basename - Verzeichnis und Suffix von Dateinamen entfernen

DIRNAME (1) :

dirname - letzte Komponente aus dem Dateinamen entfernen

  • "Name"

Dies kann auch nicht der richtige Begriff sein, da er in der technischen Dokumentation als Synonym für den vollständig qualifizierten Namen (z. B. /dev/sda) und nicht nur für das endgültige Fragment (z. B. sda) verwendet wird:

GNU Coreutils: Aufruf des Basisnamens :

basenameEntfernt alle führenden Verzeichniskomponenten aus dem Namen .

GNU Coreutils: Aufruf von dirname :

dirnamedruckt alle bis auf die letzte durch Schrägstriche getrennte Komponente jedes Namens .

  • "Kurzname" oder "Kurzname"

Dies kann auch nicht der richtige Begriff sein. Ich kann keine technische Dokumentation finden, die auf den letzten Teil eines Gerätenamens als "Kurzname" oder "Kurzname" verweist. Diese Begriffe scheinen verwendet werden, in Linux oder GNU, nur im Zusammenhang mit entweder VFAT Mount - Optionen , oder Host - Namen auf Netzwerke .

  • "basename"

Dieser Begriff scheint eine gültige Antwort zu sein, basierend auf S.149 der Installation von Red Hat Linux 7 :

Stellen Sie unbedingt sicher, dass der Basisname des Datenträgers, den Sie partitionieren möchten, nicht aufgeführt ist (dies gilt hdbfür das von mir hinzugefügte Laufwerk).

und die Kursunterlagen für CST8207 (GNU / Linux - Betriebssysteme) in Algonquin College - :

Definition des Basisnamens: Der Basisname eines beliebigen Pfadnamens ist seine am weitesten rechts stehende Namenskomponente, rechts von seinem am weitesten rechts stehenden Schrägstrich.

und S.1456 eines praktischen Leitfadens zu Red Hat Linux 8 :

Basisname: Der Name einer Datei, die im Gegensatz zu einem Pfadnamen keines der Verzeichnisse enthält, die die Datei enthalten (und daher keine Schrägstriche [/] enthält). Zum Beispiel hostsist der Basisname von /etc/hosts.

Glücklicherweise hat GNU / Linux auch einen basenameBefehl, mit dem der Basisname abgerufen werden kann:

$ basename '/dev/sda'
sda
  • "Name der Kernel-Festplatte"

Dieser Begriff scheint auch eine gültige Antwort zu sein, da S.100 des Linux-Kernels in aller Kürze :

/dev/<diskname>

Verwenden Sie den Namen der Kernel-Festplatte, der von <diskname>als Root-Festplatte angegeben wird.

Im Übrigen scheint "Name der Kernel-Festplatte" auch im Zusammenhang mit Solaris eine gültige Terminologie zu sein :

Bei dieser Version des Befehls iostat werden in der Ausgabe erweiterte Statistiken nur für Plattengeräte mit einer Aktivität ungleich Null angezeigt, und zwar nach physischem Gerätepfad anstelle des logischen Kernel-Plattennamens (d. H. c0t0d0Anstelle von sd0).


Ja, Sie können basename sagen, wenn Sie über die Aufteilung von Pfaden sprechen, aber ich habe "basename" noch nie gesehen, wenn Sie über Geräte sprechen. "Name" ja, "Basisname" nein. Keiner der Links in Ihrer Frage verwendet den Begriff "Basisname" oder "Basisname". Was meinten Sie damit, dass die Quellen in der Frage unterstützen, es einen Basisnamen zu nennen?
Peter Cordes

@PeterCordes, ich meinte, dass Zeichenfolgen wie /dev/sdadie von: BASENAME (1) als "Dateinamen" bezeichnet werden; DIRNAME (1) als "Dateiname"; die GNU Coreutils-Dokumente als "Namen"; & von FDISK (8) und TLDP als "Gerätenamen". Keiner dieser Begriffe kann also jemals eindeutig verwendet werden, um sich nur auf die letzte durch Schrägstriche getrennte Komponente der Zeichenfolge zu beziehen. Ergo, wenn wir einen Begriff wollen, der verwendet werden kann, um sich eindeutig auf diesen Teil der Zeichenkette zu beziehen, dann müssen wir etwas anderes verwenden. Die Quellen in meiner Antwort zusammengenommen sagen, dass der Teil vor dem letzten Schrägstrich der "Dirname" und der Teil nach dem "Basename" ist. Voilà .
sampablokuper

Ich denke das ist fair. Wenn Sie etwas dokumentieren, das nur akzeptiert sdaund nicht akzeptiert wurde /dev/sda, können Sie es als "Basisname" bezeichnen. Oder Sie können in dieser Dokumentation einfach "name" vs. "path" verwenden und ein Beispiel angeben, wie es die meisten Dokumentationen tun. Ich glaube nicht, dass es einen allgemein vereinbarten Begriff außer "Name" gibt, obwohl einige Dokumente "Name" verwenden, um den vollständigen Pfad einzuschließen.
Peter Cordes

0

"Alles ist eine Datei" - ist also nicht sdaeinfach der Dateiname, /devdas Verzeichnis (und die leere Zeichenfolge die Erweiterung) des Geräts, das über den vollständigen Pfad verfügbar gemacht /dev/sdawird, die erste Nicht-IDE-Festplatte? Wie passwdist der Dateiname und /etcdas Verzeichnis der Datei zugänglich, da /etc/passwddiese gemäß Konvention (ed) Passwortdaten enthalten?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.