Название диска? Какой правильный термин для части «sda» в «/ dev / 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 HOWTO :

По соглашению, дискам IDE будут присвоены имена устройств от / dev / hda до / dev / hdd .

Существует ли технически правильный (и, предпочтительно, однозначный и лаконичный) английский термин для подстроки hdaили sdaтакого имени устройства? Например, было бы правильно в этом случае вызвать sdaдиск:

  • "короткое имя"; или
  • «неполное имя устройства»; или
  • что-то другое?

(Я не прошу разговорные выражения, которые технически некорректны, даже если они используются в общем.)

sampablokuper
источник
3
FWIW, справочная страница для dkinfo , единственной команды, с которой я столкнулся, которая не использует полный путь к дисковому устройству, называет это «именем диска».
Марк Плотник
@MarkPlotnick, спасибо, но этот вопрос касается Linux или GNU / Linux, а не других ОС. Таким образом, dkinfoкоторый не является частью Linux или GNU / Linux (но вместо этого является частью SunOS ), выходит за рамки, извините.
Сампаблокупер

Ответы:

25

sdaэто имя устройства . /dev/sdaэто устройство путь .

Подумайте /sbin/fdisk, fdiskэто имя файла , а путь/sbin/fdisk к файлу .

Цыганский заклинатель
источник
5
Хотя вы должны быть осторожны с «путем к устройству», так как есть несколько значений этого ...
Дероберт
1
Спасибо :) "sda - это имя устройства. / Dev / sda - это путь к устройству." Это была моя первоначальная точка зрения, по той причине, которую вы указали, но она не подтверждается подробным прочтением выдержки из справочной страницы утилиты-linux fdisk, приведенной в моем вопросе. (Сейчас я отредактировал вопрос, чтобы лучше подчеркнуть это.) Поэтому я спрашиваю об этом здесь, на SE. NB. Это не означает, что ваш ответ неправильный - возможно, эта часть справочной страницы была написана небрежно? - это просто означает, что ваш ответ и справочная страница утилиты util-linux fdisk не соответствуют друг другу. У вас есть источники, подтверждающие ваш ответ?
Еще
6
/dev/sdaэто путь к блочному устройству, но фактический путь к устройству будет примерно таким/devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/block/sda
Дитрих Эпп
2
@jiggunjer: Но mountтакже указывает драйверу устройства отображать некоторую оперативную память (а не том) как файловую систему, может --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это имя диска генерируется ядром. Драйверы ядра (включая стек SCSI, который очень удобно использовать для дисков SATA) заполняют disk_nameполе gendiskструктуры (т. Е. Для SCSI: drivers / scsi / sd.c # L3338 ) для генерации sdaимени.

Это имя в дальнейшем используется как имя соответствующего блочного устройства в /dev, /sysи /proc/{partitions,diskstats}. Однако руководство для procfs называет его именем раздела ( proc (5) ), а документация по статистике диска называет его именем устройства ( iostats.txt ).

myaut
источник
Интересно, я думаю sdaи /dev/sdaвзаимозаменяемы, и оба называют именем устройства. Я думаю , что это потому , что (в нормальной системе) вы устанавливаете devfsна /dev, так как имена sdaпревращаются в пути , типа /dev/sda(которые можно также называть имя).
Питер Кордес
1

В Linux / Unix все является файлом. Устройство представляет собой файл. Файл всех типов устройств находится в каталоге / dev. Таким образом, sda - это специальный файл блочного устройства.

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

Примечание : где x - это переменная. х представляет положение жесткого диска.

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

Сейчас в сд *

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и строки нравится, когда речь идет о них в устной форме
Сампаблокупер
1
@PeterCordes, который некоторое время использовал openSUSE Leap 42.2, могу подтвердить, что жесткие и оптические диски IDE PATA получают sdXимена, а также смешиваются с SATA и SUB.
цыганский
1

Кажется, что есть как минимум два правильных ответа

  1. sdaможно правильно назвать «базовым именем » для накопителя.

  2. sdaТакже можно правильно назвать «имя диска ядра» для накопителя.

Как вы пришли к такому выводу?

По процессу исключения по каждому из вероятных кандидатов:

  • "имя устройства"

Это не может быть правильным термином. Как отмечено в исходном вопросе , оно относится к полностью определенному имени (например /dev/sda), а не к окончательному фрагменту (например sda).

Подкрепляющие доказательства существуют в дополнительных источниках, такие как стр.68 из Полного руководства по SUSE Linux Enterprise Server 12 :

Вы также можете использовать ... монтирование, основанное на имени устройства (например, /dev/sdb1) ...

и стр.94 из Linux Linux 2008 Edition :

Перейдите на вкладку «Устройство» и введите имя устройства (например, /dev/cdrom)…

  • "имя файла" или "имя файла"

Это также не может быть правильным термином, так как он используется в технической документации как синоним для полного имени (например /dev/sda), а не только конечный фрагмент (например,sda ):

BASENAME (1) :

basename - вырезать каталог и суффикс из имен файлов

DIRNAME (1) :

dirname - убрать последний компонент из имени файла

  • "имя"

Это также не может быть правильным термином, так как он используется в технической документации как синоним для полного имени (например /dev/sda), а не только конечный фрагмент (например,sda ):

GNU Coreutils: вызов базового имени :

basenameудаляет все ведущие компоненты каталога из имени .

GNU Coreutils: вызов dirname :

dirnameпечатает все кроме последнего разделенного слэшем компонента каждого имени .

  • "короткое имя" или "короткое имя"

Это также не может быть правильным термином. Я не могу найти никакой технической документации, в которой последняя часть имени устройства называется «коротким именем» или «коротким именем». Эти термины, похоже, используются в Linux или GNU только в контексте параметров монтирования VFAT или имен хостов в сетях .

  • «Базовый»

Этот термин , как представляется, действительный ответ, основанный на стр.149 из Установка Red Hat Linux 7 :

Убедитесь, что базовое имя диска, который вы планируете разбить на разделы, отсутствует в списке (это hdbв случае с добавленным мною накопителем).

и примечания к курсу для CST8207 (операционные системы GNU / Linux) в Algonquin College :

Определение базового имени. Базовое имя любого пути - это его самый правый компонент имени, справа от самого правого слэша.

и стр.1456 из Практического руководства по Red Hat Linux 8 :

basename: имя файла, которое, в отличие от имени пути, не упоминает ни один из каталогов, содержащих файл (и поэтому не содержит косых черт [/]). Например, hostsявляется базовым именем /etc/hosts.

К счастью, в GNU / Linux также есть basenameкоманда, которую можно использовать для получения базового имени:

$ basename '/dev/sda'
sda
  • "имя диска ядра"

Этот термин также представляется действительный ответ, из - за стр.100 из ядра Linux в ореховой скорлупе :

/dev/<diskname>

Используйте имя диска ядра, указанное в <diskname>качестве корневого диска.

Кстати, «имя диска ядро» также появляется в силе терминологии в контексте Solaris :

Для этой версии команды iostat выходные данные показывают расширенную статистику только для тех дисковых устройств с ненулевой активностью, по пути к физическому устройству вместо логического имени диска ядра (то есть c0t0d0вместо sd0).

sampablokuper
источник
Да, вы можете сказать базовое имя, когда говорите о разделении путей, но я никогда не видел «базовое имя», когда говорил об устройствах. «Имя» да, «базовое имя» нет. Ни одна из ссылок в вашем вопросе не использует термин «базовое имя» или «базовое имя»; Что вы имели в виду, что источники в вопросе поддерживают его как базовое имя?
Питер Кордес
@PeterCordes, я имел в виду, что такие строки /dev/sdaназываются: BASENAME (1) как «имена файлов»; DIRNAME (1) как «имена файлов»; документы GNU Coreutils как «имена»; & FDISK (8) и TLDP как «имена устройств». Таким образом, ни один из этих терминов не может быть однозначно использован для обозначения только конечного компонента строки, разделенного косой чертой. Следовательно, если нам нужен термин, который можно использовать для однозначной ссылки на эту часть строки, то мы должны использовать что-то еще. Источники в моем ответе, взятые вместе, говорят, что часть перед последней косой чертой - это «dirname», а часть после - «basename». Вуаля .
Сампаблокупер
Я думаю, это справедливо. Если вы документировали что-то, что только принималось, sdaа что нет /dev/sda, вы могли бы назвать это «базовым именем». Или вы можете просто использовать «имя» или «путь» в этой документации и привести пример, как это делает большинство документов. Я не думаю, что существует общепринятый термин, отличный от «имени», хотя некоторые документы используют «имя» для включения полного пути.
Питер Кордес
0

«Все есть файл» - так не sdaпросто ли имя файла, /devкаталог (и пустая строка расширение) устройства доступны по полному пути /dev/sda, который по соглашению является первым не-IDE-диском? Также как passwdимя файла и /etcкаталог файла доступны, так как /etc/passwdпо соглашению содержат (ed) данные пароля?

Хаген фон Айцен
источник