驱动器名称?“ / dev / sda”的“ sda”部分的正确术语是什么?


16

fdisk(8)说:

设备通常是/ dev / sda,/ dev / sdb左右。设备名称是指整个磁盘。没有libata(Linux内核内部用于支持ATA主机控制器和设备的库)的旧系统会在IDE和SCSI磁盘之间产生差异。在这种情况下,设备名称将为/ dev / hd *(IDE)或/ dev / sd *(SCSI)。

分区是设备名称,后跟分区号。例如,/ dev / sda1是系统中第一个硬盘上的第一个分区。 另请参阅Linux内核文档(Documentation / devices.txt文件)。

基于此,我了解到在Linux上下文中,类似/dev/hda或的字符串/dev/sda是“设备名称”。否则,我上面强调的第二句话就没有意义:而是说:“ 例如,sda1是系统中第一个硬盘上的第一个分区。

Linux Partition HOWTO证实了这种观点:

按照约定,IDE驱动器的设备名称将从/ dev / hda改为/ dev / hdd

子字符串hdasda这样的设备名称是否有技术上正确的(最好是明确而简洁的)英语术语?例如,在这种情况下调用sda驱动器是否正确:

  • “简称”; 要么
  • “不合格的设备名称”;要么
  • 还有什么吗

(我并不要求口语在技术上是不正确的,即使它们是普遍使用的。)


3
FWIW,dkinfo的手册页,这是我遇到的唯一不使用磁盘设备的完整路径名的命令,将其称为“磁盘名”。
Mark Plotnick

@MarkPlotnick,谢谢,但是这个问题是关于Linux或GNU / Linux的,而不是关于其他操作系统的。因此,dkinfo不属于Linux或GNU / Linux的一部分(而是属于SunOS的一部分),超出了范围,抱歉。
sampablokuper

Answers:


25

sda是设备名称/dev/sda是设备路径

想一想/sbin/fdiskfdisk是文件/sbin/fdisk而是文件路径


5
尽管您必须小心使用“设备路径”,因为它有多种含义……
derobert

1
谢谢:)“ sda是​​设备名称。/ dev / sda是​​设备路径。” 出于您所给出的原因,这也是我的最初观点,但仔细阅读我的问题中引用的util-linux fdisk手册页摘录并不支持该观点。(我现在已经编辑了问题以更好地强调这一点。)因此,我在SE上对此问题进行了询问。注意:这并不意味着您的答案是错误的-也许手册页的那部分是草率编写的?-这仅意味着您的答案和util-linux fdisk手册页似乎不一致。您是否有任何资料可以证实您的答案?再次感谢:)
sampablokuper

6
/dev/sda是块设备的路径,但实际的设备路径类似于/devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/block/sda
Dietrich Epp

2
@jiggunjer:而且mount还指示设备驱动程序将某些RAM(而非卷)映射为文件系统,--bind文件树的一部分可以作为子树,等等。此外,安装RAID“磁盘”可以起到有用和/或怪异的作用具有多个卷的事物来访问或取消访问它的一部分。简而言之,mount可以做很多事情,但最典型的是使文件系统出现在文件树中的某个位置。
wallyk

1
@jiggunjer我认为您可能指的是文件系统格式,它与这种格式的实例化不同,通常称为文件系统,即所谓的卷。即使从技术上讲这是不正确的,这也是人们所说的文件系统。我还没有遇到任何引用过将文件系统格式实例化为卷的人。我所读过的有关该主题的书都没有用过“卷”一词来表示“文件系统”(两种含义)。
清晰的时间

6

sda部分/dev/sda可能代表几件事情取决于你的观点:

  1. 文件名
    通常,它是文件的名称,如果是磁盘,则是设备,因此,设备名

    作为根:

    $ 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. 磁盘名称
    sda是为磁盘命名的字符串(与分区sda1,sda2,sdX等不同)。它通常由udev根据所应用的设备规则生成。

  3. 目录路径
    sda是路径的基本名称/dev/sda


限于与磁盘名称有关的解释:

在过去:sda曾经是SCSI磁盘a的设备名称。

随着同一库扩展到SATA驱动器,我想现在应该将其称为:

device name: SATA/SCSI/SAS disk a

或者简单地:

device name: first SATA/SCSI/SAS disk

3

它是内核生成的块磁盘/分区设备名称

sda是内核生成的磁盘名称。内核驱动程序(包括刚好用于SATA磁盘的SCSI堆栈)填充结构的disk_name字段gendisk(即,对于SCSI:drivers / scsi / sd.c#L3338)以生成sda名称。

此名称以后用于在对应的块设备的名称/dev/sys/proc/{partitions,diskstats}。但是,procfs手册将其命名为分区名称proc(5)),磁盘统计信息中的文档将其称为设备名称iostats.txt)。


我猜很有趣,sda并且/dev/sda可以互换,并且都称为设备名称。我认为这是因为(在正常系统中)您安装devfs在上/dev,因此名称之类的内容就sda变成了路径/dev/sda(您也可以称为名称)。
彼得·科德斯

1

在Linux / Unix中,所有内容都是文件。设备表示为文件。所有设备类型文件位于/ dev位置。因此,sda是块设备类型的特殊文件。

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

注意:其中x是变量。x表示硬盘的位置。

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

现在位于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,甚至IDE(PATA)磁盘都sd*使用某些驱动程序来获取名称,还是总是使用现代内核来获取名称?我忘记了,我没有任何带有PATA和现代内核的活动机器。
彼得·科德斯

2
感谢您的回答,但它似乎无法解决我提出的问题:(我了解在的上下文中/dev/sda,它sda是一个文件,并且我也了解该文件代表什么。我的问题是关于如何调用子字符串sda和字符串口头提及他们时喜欢它
。– sampablokuper

1
@PeterCordes使用openSUSE Leap 42.2已有一段时间了,我可以确认IDE PATA驱动器(包括硬驱动和光学驱动器)都可以获取sdX名称,并与SATA和SUB混合在一起。
Gypsy Spellweaver

1

似乎至少有两个有效答案

  1. sda可以正确地称为驱动器的“基本名称”

  2. sda也可以正确地称为驱动器的“内核磁盘名称”

您是如何得出这个结论的?

通过对每个可能的候选人进行淘汰的过程:

  • “设备名称”

这不是正确的术语。如原始问题中所述,它是指完全限定的名称(例如/dev/sda),而不是最后的片段(例如sda)。

确认证据存在于其他来源,如第68页权威指南SUSE Linux Enterprise Server的12

您还可以选择使用…基于设备名称(例如/dev/sdb1)的安装…

以及《 Linux Bible 2008版》94页

单击设备选项卡,然后输入设备名称(例如/dev/cdrom)……

  • “文件名”或“文件名”

这也不是正确的术语,因为它在技术文档中用作完全限定名称(例如/dev/sda)的同义词,而不仅仅是最后一个片段(例如sda)的同义词:

BASENAME(1)

basename-从文件名中删除目录和后缀

DIRNAME(1)

dirname-从文件名中删除最后一个组件

  • “名称”

这也不是正确的术语,因为它在技术文档中用作完全限定名称(例如/dev/sda)的同义词,而不仅仅是最后一个片段(例如sda)的同义词:

GNU Coreutils:基本名称调用

basenamename中删除所有前导目录组件。

GNU Coreutils:目录名调用

dirname打印除每个name的最后一个以斜杠分隔的部分外的所有内容。

  • “简称”或“简称”

这也不是正确的术语。我找不到任何将设备名称的最后部分称为“短名称”或“短名称”的技术文档。在Linux或GNU中,这些术语似乎仅在VFAT挂载选项网络上的主机 的上下文中使用。

  • “基本名称”

根据安装Red Hat Linux 7的p.149,此术语似乎是一个有效的答案:

绝对确保未列出要分区的磁盘的基本名称(对于hdb我添加的驱动器,为)。

以及Algonquin College的 CST8207(GNU / Linux操作系统)课程说明

basename的定义:任何路径名的basename是其最右边的名称部分,位于其最右边的斜杠的右边。

p.1456实用指南Red Hat Linux的8

basename:与路径名相反的文件名,它没有提及包含该文件的任何目录(因此不包含任何斜杠[/])。例如,hosts是的基本名称/etc/hosts

幸运的是,GNU / Linux也有一个basename命令,可用于获取基本名称:

$ basename '/dev/sda'
sda
  • “内核磁盘名称”

由于第110页的《Linux内核概述》,该术语似乎也是一个有效的答案:

/dev/<diskname>

使用指定的内核磁盘名称<diskname>作为根磁盘。

顺便说一句,“内核磁盘名称” 在Solaris上下文中似乎也是有效的术语:

对于此版本的iostat命令,输出仅按物理设备路径而不是逻辑内核磁盘名称(即,c0t0d0而不是sd0)显示活动非零的那些磁盘设备的扩展统计信息。


是的,您在谈论拆分路径时可以说basename,但是在谈论设备时我从未见过“ basename”。“名称”是,“基本名称”否。您的问题中的任何链接均未使用术语“基本名称”或“基本名称”;您是什么意思,问题中的源支持称其为基名?
彼得·科德斯

@PeterCordes,我的意思是诸如之类的字符串/dev/sda由BASENAME(1)称为“文件名”;DIRNAME(1)作为“文件名”;GNU Coreutils文档为“名称”;&由FDISK(8)和TLDP作为“设备名称”。因此,这些术语都不能明确地用于仅指代字符串的最后斜杠分隔的部分。因此,如果我们想要一个可以明确使用的术语,则必须使用其他名称。总的来说,我的答案中的信息说最后斜杠之前的部分是“ dirname”,而后面的部分是“ basename”。Voilà
sampablokuper

我想这很公平。如果您要记录仅接受但sda不接受的内容/dev/sda,则可以将其称为“基本名称”。或者您可以在该文档中仅使用“名称”与“路径”,并给出一个示例,就像大多数文档一样。我认为除了“名称”之外,没有一个通用的术语,即使某些文档使用“名称”来包含完整路径。
彼得·科德斯

0

“一切都是文件”-难道不是通过完整路径提供设备sda的简单文件名,/dev目录(以及空字符串,扩展名),按照/dev/sda惯例,这是第一个非IDE磁盘吗?就像passwd文件名和/etc目录一样/etc/passwd,可以按约定访问包含密码数据的文件吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.