22. Работа с дисками
В прошлый раз мы разобрались, что udev при виде определённых устройств создаёт для них специальные файлы в директории /dev:
ls /dev
через которые можно взаимодействовать с устройствами. И если с большинством устройств администратору не требуется ничего делать, то вот с устройствами хранения информации практически постоянно нужно работать. При работе с дисками нужно быть крайне осторожными, потому что на дисках данные, а какие-то ошибки могут привести к потере этих данных. Поэтому всегда делайте бэкапы и убеждайтесь, что они в рабочем состоянии.
Есть разные типы накопителей и они могут по разному подключаться к компьютеру – старые диски подключались по IDE, сейчас преимущество у SATA, набирают популярность nvme SSD, есть ещё всякие флешки, подключаемые по usb, во многих компаниях диски выдаются по сети хранения данных, называемой SAN, а в облачных средах вам выдаются виртуальные диски, детали подключения которых вас могут и не интересовать. В зависимости от некоторых факторов – типа подключения диска, правил udev, которые могут отличаться в зависимости от дистрибутива – дискам могут выдаваться различные названия. При этом, несмотря на различия, для работы с устройствами хранения используется протокол SCSI – это касается и USB флешек, и SATA дисков, и сетей хранения данных и многого другого.
Поэтому большая часть накопителей будет именоваться sd – т.е. scsi диск:
ls /dev/sd*
а дальше каждому устройству будет даваться буква по алфавиту – sda, sdb,sdc и т.п. Для cd приводов будет даваться название sr:
ls /dev/sr*
sr0, sr1 и т.п. А в облаках вы будете натыкаться на названия vda, vdb и т.д. Что объединяет все накопители? Операционная система обменивается с этими устройствами данными в виде блоков данных фиксированной длины. Команда:
ls -l /dev/sda stat /dev/sda
покажет перед правами символ b – указывающий, что это блочное устройство.
Кроме блочных устройств существуют символьные – такие устройства работают с потоком данных, а не с блоками. Допустим, та же мышка:
ls -l /dev/input/mouse0 stat /dev/input/mouse0
Перед такими файлами стоит символ c – character device – символьное устройство.
Но, как я уже сказал, чаще всего накопители работают через scsi протоколы – поэтому, как бы там не было написано в правилах udev, нам необязательно гадать – мы можем с помощью утилиты lsscsi увидеть наши диски:
lsscsi -s
Как видите, тут у меня подключены дисковод и диск на 20 гигабайт, который получил название sda. Но названия, которые даёт udev – sda, sdb и т.п. — не закрепляются за дисками навсегда. Каждый раз, когда вы запускаете систему или подключаете устройства, udev даёт название по порядку. Да, есть порядок обнаружения устройств и зачастую одни и те же диски будут называться одинаково, но ни в коем случае нельзя ориентироваться на эти названия. Допустим, если у вас 3 диска – sda, sdb и sdc и вы переподключите их, либо один перестанет работать – то sdc начнёт называться sdb. В теории это может привести к потере данных. Как? Мы разберём чуть позже. Просто запомните, что ориентироваться на эти буквы не стоит.
Из темы «О файловых системах» мы выяснили — чтобы мы могли создавать, хранить, изменять и в целом работать с файлами на диске — нам нужна файловая система. Для этого мы можем записать её на диск. В принципе, такая схема будет работать, но в целом это неудобно и может создать нам проблемы в будущем. Например, в будущем нам может понадобится переустановить систему. Как правило, это предполагает удаление старой файловой системы и создание новой – это называется форматированием файловой системы. Но, при этом, все файлы, которые мы хотели бы перенести на новую систему, также затрутся. Конечно, можно заранее закинуть всё на флешку и потом вернуть обратно – но это лишняя работа и потеря времени. Возможно, вы знаете как избежать этой проблемы – на том же Windows у вас может быть том D, на который вы кидаете файлы, и при форматировании эти данные не стираются – потому что стирается файловая система в томе C. На GNU/Linux файлы пользователей хранятся в директории /home, поэтому вам будет достаточно отделить /home от корня. Т.е. предполагается, что у вас две файловые системы на одном диске. Для этого нужно разделить диск на так называемые разделы, и на каждый раздел записать свою файловую систему. Но чтобы компьютер знал – где начинается один раздел, где он заканчивается и начинается другой – нужно специальное место в начале диска, где указывается эта информация – таблица разделов.
Есть разные типы таблиц разделов: MBR – которую также называют dos или ms-dos; GPT; у Apple и BSD свои таблицы разделов; есть ещё какие-то – но это нас не интересует, в основном вы будете иметь дело с MBR и GPT. У аббревиатуры MBR есть и другое значение – главная загрузочная запись – и сама таблица разделов хранится внутри этой записи. А загрузочная запись MBR была нужна для компьютеров раньше. Дело в том, что раньше на компьютерах был чип BIOS, в котором был ряд микропрограмм, и, кроме всего прочего, BIOS отвечал за включение компьютера. Но BIOS был сильно ограничен – он должен был быть не больше десятка килобайт, оперативки ему было доступно было максимум мегабайт – ну и в таких условиях сильно не разгуляешься. И BIOS должен был в итоге загрузить операционную систему – но ведь с такими ограничениями не добавить поддержку какой-то файловой системы и программы, загружающей операционную систему. Причём операционные системы то разные, у каждого своя файловая система, каждую по своему грузить. Поэтому BIOS просто обращался к нулевому сектору жёсткого диска, где и находилась главная загрузочная запись — MBR. А там у нас и загрузчик операционной системы и таблица разделов. При этом сам MBR тоже был ограничен – всего 512 байт, из которых 446 байт на загрузчик и 64 на таблицу разделов. Забегая вперёд, скажу, что там ещё первые 63 сектора оставались свободными, в которые и помещается основная часть загрузчика, а не только эти 446 байт, но это тема загрузки операционной системы, мы это рассмотрим в другой раз.
Так вот, MBR нам даёт 64 байта на то, чтобы поместить всю информацию о разделах. А на информацию о каждом разделе требуется 16 байт. В итоге – 4 раздела. Потом появилась расширенная загрузочная запись(VBR), благодаря чему можно было создавать расширенные разделы, которые позволяли обойти ограничение в 4 раздела. Грубо говоря, там вместо самой записи о разделе указывалась ссылка на другую таблицу, в которой указывались дополнительные разделы. Также в таблице разделов MBR не получилось бы указать разделы больше 2Тб, так как адрес не помещается в таблице. По итогу, BIOS своими ограничениями создавал кучу проблем с вынужденными обходными решениями. В нулевых же решили избавиться от этих ограничений и создали новый стандарт – UEFI. Тут уже разгулялись – UEFI может весить десяток мегабайт, понимает файловые системы, может работать с сетью, имеет графический интерфейс. Точнее, это всё можно реализовать в UEFI, но не каждый производитель это делает, разве что какой-то стандартный функционал. И, конечно же, отпала необходимость в загрузчике в MBR – зачем ограничиваться 446 байтами, когда можно в UEFI добавить поддержку файловой системы, где и будет лежать полноценный загрузчик? Плюс растут объёмы дисков – поэтому MBR заменили на GPT. Необходимость держать загрузчик в начальном секторе отпала – UEFI для этого использует специальный раздел EFI с файловой системой FAT32. Ограничение в 2 Tб тоже пропало, у GPT теоретическое ограничение почти в 10 Зеттабайт. Что касается количества разделов – то они, в принципе, не ограничены, разве что только со стороны операционной системы, но там речь про 128 разделов, чего с лихвой хватает. Но, при этом, UEFI в целях совместимости позволяет установить загрузчик в нулевой сектор, как это было в MBR.
Прежде чем пойдём дальше, давайте немного попрактикуемся с таблицами разделов. Но для начала нам понадобится добавить диски для нашей виртуальной машины. Поэтому выключаем виртуалку, открываем её настройки, переходим во вкладку Storage – Controller SATA и добавляем два жёстких диска, создаём их – по гигабайту будет достаточно, можно даже обойтись меньшим объёмом. Нажимаем OK и запускаем виртуалку. Теперь lsscsi -s покажет нам ещё два диска по гигабайту, с названиями sdb и sdc.
И так, диски у нас есть – sdb и sdc. Давайте создадим таблицу разделов и пару разделов. Для этого используем утилиту fdisk:
sudo fdisk /dev/sdb sudo fdisk /dev/sdc
И так, для начала, нас предупредили, что всё что мы делаем – не сразу происходит, а сохраняется в памяти, и если мы захотим – то пишем w и изменения вступают в силу. Дальше нас предупредили, что на диске не нашли никакой таблицы разделов, поэтому программа создала таблицу DOS – но опять же, без write-а ничего на деле не изменилось.
Ну и небольшая подсказка по командам с помощью m. Для начала выведем информацию – буква p. Наш диск – /dev/sdb, его размер – 1 Гибибайт, количество байт и секторов. Каждый сектор по 512 байт – умножаем на количество секторов – получаем количество байт. Буква o – создаёт таблицу разделов DOS, буква g – GPT.
И так, с помощью o создали таблицу разделов, теперь можем создавать разделы. Для этого буква n – new partition. В случае с DOS у нас спрашивает – будет ли это основной раздел или расширенный. Основных может быть 4, а для создания расширенного используется один из основных. Выберем основной – по умолчанию он и создаётся, поэтому просто enter. Дальше нужно выбрать его номер – допустим 1. Потом выбираем начальный сектор – пусть будет 2048 – оставляем по умолчанию. Дальше пишем последний сектор, либо необходимый размер для раздела через +, допустим +200M. Создалось. Теперь пишем p и видим новый раздел. Разделы называются как соответствующий диск – то есть sdb, а в конце указывается номер раздела — sdb1.
Давайте, для примера, создадим ещё один раздел. n — выберем extended – в качестве основного используем 4; первый сектор оставим как есть – это первый незанятый сектор; дальше просто нажмём enter – тогда используется всё доступное пространство. Опять p – видим наши разделы. Но сам по себе расширенный раздел мы использовать не будем – он просто позволит создавать внутри него другие разделы, называемые логическими разделами.
Поэтому опять n – оставляем первый сектор как есть, потом указываем размер раздела — +100M, и опять p. Теперь видим, что у нас есть 3 раздела: первый — sdb1 – это основной раздел; дальше у нас расширенный раздел – sdb4 – он у нас вроде платформы, внутри которой мы создаём логические разделы, к примеру — sdb5. Когда нас всё устраивает, мы пишем w и изменения сохраняются.
Теперь создадим разделы на диске sdc с таблицей разделов GPT. Для её создания — g. Для нового раздела – n. У нас спрашивают номер раздела – оставим 1. Первый сектор – оставляем как есть. Последний сектор — +200M. И p, чтобы вывести информацию о разделах. Как видите, никакой возни с расширенными и логическими разделами. Опять же — w – сохраняем изменения.
Для удаления какого-то раздела:
sudo fdisk /dev/sdb
буква d – выбираем раздел – 4, enter, а потом p. Как видите, sdb5, который был внутри sdb4, удалился в том числе. Поэтому просто нажимаем q и ничего не сохраняем.
Чтобы увидеть, что у нас с разделами в системе:
sudo fdisk -l
Тут у нас и то, что мы создали только что, а также sda1 и sda2 — там где у нас хранится система. Если посмотреть внимательнее на sda2:
sudo fdisk -l /dev/sda
то можно увидеть, что его тип – Linux LVM. Про LVM мы ещё поговорим.
Через командную строку вы также можете воспользоваться псевдографической утилитой cfdisk:
sudo cfdisk /dev/sdc
Также есть и другие утилиты – к примеру parted. В конечном счёте, чем пользоваться – решаете вы. Но в целом, практически на всех системах бывают предустановлены fdisk и parted. На старых системах можно наткнуться на fdisk, который не поддерживает GPT, но сейчас это не так актуально. В любом случае, знать много инструментов – хорошо, но зная основы можно разобраться с любой утилитой.
lsblk
покажет вам блочные устройства в древовидной форме, где прекрасно видно, что это за диск или раздел и к чему он относится.
Помните, названия дисков даются udev-ом и могут меняться? Однако у дисков и разделов могут быть свои идентификаторы, которые могут помочь вам опознать различные устройства. И это хорошо видно, если запустить команду:
ll -R /dev/disk
где по различным идентификаторам есть символические ссылки, указывающие на текущее название каждого диска и раздела. То есть, как бы не изменилась буква диска – sda, sdb или sdc – идентификатор всегда будет один и тот же, и обращаясь к диску или разделу по идентификатору, вы всегда будете обращаться к нужному диску или разделу.
Получилось довольно много информации, хотя пока мы не затронули тему файловых систем и LVM. Попрактикуйтесь с разделами – создавайте их, удаляйте, используйте различные утилиты – как графические – тот же Disks и Gparted, так и терминальные – fdisk, cfdisk, parted. Всё это позволит вам лучше закрепить материал и в дальнейшем более уверенно чувствовать себя при работе с дисками и разделами.
© Copyright 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия 5f665cc2 .
Обозначения дисков и дисковых разделов в системах linux.
Один из основных постулатов Unix/Linux — «всё есть файл», и жесткие диски — не исключение.
Каждый найденный ядром диск, отображается в виде файла в специальном каталоге устройств «/dev»
Диски.
/dev/hda — master на 1 контроллере,
/dev/hdb — slave на 1 контроллере,
/dev/hdc — master на 2 контроллере,
/dev/hdd — slave на 2 контроллере.
SATA/ SCSI HDD, а также многие переносные накопители типа USB flash:
/dev/sda, /dev/sdb, /dev/sdc и т.д.
На новых Linux-ядрах >=2.6.21 для некоторых чипсетов может действовать новая система именования IDE-дисков, при которой IDE-устройства именуются также как и SATA/ SCSI .
Приведем наглядный пример:
dd if=/dev/sda 512 1
сохранит MBR c первого диска SATA/ SCSI в системе в обычный файл MY_SATA_MBR.BIN.
Получить список обнаруженных системой дисков можно выполнив команду fdisk -l:
v-serv:~# fdisk -l Disk /dev/sda: 200.0 GB, 200048565760 bytes 255 heads, 63 sectors/track, 24321 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 3824 30716248+ c W95 FAT32 (LBA) /dev/sda2 3825 4532 5687010 83 Linux /dev/sda3 4533 5140 4883760 83 Linux /dev/sda4 5141 24321 154071382+ 5 Extended /dev/sda5 5141 5991 6835626 83 Linux /dev/sda6 5992 7207 9767488+ 83 Linux /dev/sda7 7208 10854 29294496 83 Linux /dev/sda8 10855 24321 108173646 83 Linux Disk /dev/sdb: 320.0 GB, 320071851520 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 365 2931831 83 Linux /dev/sdb2 366 1216 6835657+ 83 Linux /dev/sdb3 1217 1277 489982+ 82 Linux swap / Solaris /dev/sdb4 1278 38913 302311170 5 Extended /dev/sdb5 1278 4924 29294496 83 Linux /dev/sdb6 4925 5046 979933+ 83 Linux /dev/sdb7 5047 6870 14651248+ 83 Linux /dev/sdb8 6871 7478 4883728+ 83 Linux /dev/sdb9 7479 8086 4883728+ 83 Linux /dev/sdb10 8087 21553 108173646 83 Linux /dev/sdb11 21554 33711 97659103+ 83 Linux /dev/sdb12 33712 38913 41785033+ 83 Linux
Разделы.
Конкретный раздел (синонимы — том, партиция) определяется по номеру, после обозначения устройства, начиная с 1. Например: hdc5 — пятый том мастера на втором контроллере IDE, sde3 — третий том пятого SATA/ SCSI накопителя.
Например: как быстро уничтожить форматированный раздел — заполним нулевыми байтами первые 10MB:
dd if=/dev/zero count=Разделы могут быть:
основными, которых на диске может быть не более 4-х;
расширенными (Extended) — логические разделы (обычно только один) с которыми нельзя работать, контейнер для дополнительных разделов;
дополнительными — их номера всегда >=5.
Кроме номера и размера, каждый раздел имеет свой тип, который обозначен одним байтом:
sda sdb . не понимаю
Если на вашем компьютере несколько контроллеров дисков SATA, SCSI или IDE, порядок добавления соответствующих узлов устройств является произвольным. Это может привести к тому, что имена устройств, такие как / dev / sda и / dev / sdb, будут переключаться при каждой загрузке, что приведет к невозможности загрузки системы, панике ядра или исчезновению блочного устройства. Постоянное именование решает эти проблемы
….
udev управляет файлами устройств в каталоге /dev, добавляя их, переименовывая и создавая символические ссылки. udev полностью замещает функционал hotplug и hwdetect.
Обработка событий в udev происходит параллельно, что теоретически улучшает производительность старых систем. С другой стороны, это может усложнить администрирование. Так, при перезапуске системы порядок загрузки модулей ядра может измениться, а при наличии в машине нескольких блочных устройств могут поменяться названия их файлов. Например, для системы с двумя жёсткими дисками файл /dev/sda после перезагрузки может превратиться в /dev/sdb
Участник с: 02 июня 2012
заблокирован
amon
почему внезапно так произошло?
как это внезапно. ты знал что ядерные имена непредсказуемо меняются.
да и неважно что до какого то момента лично у тебя все было ОК.
вот произошло и может произойти в будущем. и не предсказуемо.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Зарегистрироваться или войдите чтобы оставить сообщение.
© 2006-2023, Русскоязычное сообщество Arch Linux.
Название и логотип Arch Linux ™ являются признанными торговыми марками.
Linux ® — зарегистрированная торговая марка Linus Torvalds и LMI.
Именование дисков (sda, sdb, sdc. ). Как поменять порядок?
Может кто знает, как поменять именование устройств, а конкретно SATA накопителей в системе? Есть мамка Asus Z-87-Pro с двумя контроллёрами SATA, на одном контроллёре 2 порта (ASMedia), на втором 6 (Intel).
Системный диск с Linux на борту я подключил к первому контроллёру (ASMedia), так как на втором контроллёре (Intel) дергаю диски в Hot-plug режиме не останавливая систему. Не знаю, насколько это хорошо, но кажется что система подключенная на другом контроллёре избавит от каких-то задержек или сбоев. В будущем возможно на контроллёре Intel из дисков сделаю массив (контроллер позволяет), а система будет на другом контроллёре (ASMedia), думаю так будет хорошо.
Проблема в том, что не совсем для меня удобно, что система именует устройства начиная с устройств на контроллере Intel, а затем на ASMedia, таким образом системный диск и его наименование (sda,sdb,sdc) всегда является плавающим, самым последним в именовании. Например, если я подключу 2 диска, то системный поименуется как sdc, если один дополнительный диск подключу, то системный станет sdb.
Как сделать так, чтобы не переключая системный диск с контроллёра ASMedia сделать диск в системе sda? Т.е. чтобы Linux именовал вначале устройства с ASMedia конторллера?
dva20
17.11.21 12:13:13 MSK
← 1 2 →
Это плохая практика. Используй уникальные идентификаторы разделов место этого.
wandrien ★★
( 17.11.21 12:17:45 MSK )
UUID специально для ентого придуман.
pfg ★★★★★
( 17.11.21 12:17:57 MSK )
Ответ на: комментарий от pfg 17.11.21 12:17:57 MSK
На уровне системы он и так используется, чел про ручной доступ говорит. Ну неудобно писать
smartctl -a /dev/disk/by-uuid/97e127cf-13d4-472c-b65c-065026075931
izzholtik ★★★
( 17.11.21 12:25:08 MSK )
Нафейхуа? А главное зачем?
erfea ★★★★★
( 17.11.21 12:26:13 MSK )
Ответ на: комментарий от izzholtik 17.11.21 12:25:08 MSK
значит рисовать свои правила для udev.
я б еще и монтировал бы под отдельными именами /dev/d_main и подобное.
pfg ★★★★★
( 17.11.21 12:29:12 MSK )
Ответ на: комментарий от izzholtik 17.11.21 12:25:08 MSK
Да, всё верно. Неудобно «соображать» где какой раздел и диск в различных системных утилитах. Тут я знаю, что у меня, например, sda это системный диск, а не как сейчас плавающий и зависит от количества подключенных дисков. Запоминать uuid’ы типа 97e127cf-13d4-472c-b65c-065026075931 даже не предлагайте :))
dva20
( 17.11.21 12:32:18 MSK ) автор топика
Ответ на: комментарий от pfg 17.11.21 12:29:12 MSK
Ммм… Не сталкивался с UDEV, попробую. Мне надо это изучать.
dva20
( 17.11.21 12:34:38 MSK ) автор топика
Ответ на: комментарий от dva20 17.11.21 12:32:18 MSK
Тебе нужно именовать именно физические диски или разделы?
/dev/disk/by-label/ и /dev/mapper/ не годятся?
wandrien ★★
( 17.11.21 12:36:11 MSK )
Ответ на: комментарий от dva20 17.11.21 12:32:18 MSK
ну не запоминай, сделай симлинки на ююайдишные пути и юзай их
s-o ★
( 17.11.21 12:36:49 MSK )
Ответ на: комментарий от dva20 17.11.21 12:32:18 MSK
Запоминать uuid’ы типа 97e127cf-13d4-472c-b65c-065026075931 даже не предлагайте
RebHat
( 17.11.21 12:36:51 MSK )
Ответ на: комментарий от dva20 17.11.21 12:34:38 MSK
Вот тут в комментах есть про правила UDEV:
(Сам не пробовал.)
wandrien ★★
( 17.11.21 12:37:17 MSK )
Ответ на: комментарий от pfg 17.11.21 12:29:12 MSK
Так-то да, но чел наверняка майнер и часто диски меняет, тогда придётся при замене/добавлении диска вручную правила менять. Может, лучше колхоз-вариант именования по номеру порта, а не по UUID, как с сетевыми устройствами сделано?
izzholtik ★★★
( 17.11.21 12:38:17 MSK )
Ответ на: комментарий от RebHat 17.11.21 12:36:51 MSK
Спасибо! Это хороший вариант! (не знал такое)
dva20
( 17.11.21 12:38:49 MSK ) автор топика
Ответ на: комментарий от izzholtik 17.11.21 12:25:08 MSK
А симлинки разве не могут исправить ситуацию?
QsUPt7S ★
( 17.11.21 12:39:13 MSK )
Ответ на: комментарий от QsUPt7S 17.11.21 12:39:13 MSK
В общем случае нет, не весь софт им следует.
izzholtik ★★★
( 17.11.21 12:41:00 MSK )
Ответ на: комментарий от RebHat 17.11.21 12:36:51 MSK
Он не все показывает. Принципа я не знаю, но у меня там только 1 из 3 виден..
izzholtik ★★★
( 17.11.21 12:43:04 MSK )
Ответ на: комментарий от wandrien 17.11.21 12:36:11 MSK
Не знал про /dev/disk/by-label/ — это в принципе выход для моих скриптов. Переделаю /dev/sda1 к примеру, на /dev/disk/by-label/root . Мне нужно чтобы в скриптах, да и в ручном вызове различных утилит более менее именование дисков и разделов было постоянным и понятным для моего мозга 🙂
dva20
( 17.11.21 12:43:35 MSK ) автор топика
Последнее исправление: dva20 17.11.21 12:44:09 MSK (всего исправлений: 1)
Ответ на: комментарий от dva20 17.11.21 12:43:35 MSK
переделай на uuid.
это 128битное уникальное число вписанное в заголовок данной файловой системы. оно не изменится пока не форматнешь раздел
pfg ★★★★★
( 17.11.21 12:48:24 MSK )
Ответ на: комментарий от dva20 17.11.21 12:43:35 MSK
Ну так label для этого и придумали простое понятное человеку название(и постоянное пока сам не сменишь) Называешь диски как тебе удобно и все. Например system bekap musor vinda lin
anonymous
( 17.11.21 12:49:40 MSK )
Ответ на: комментарий от wandrien 17.11.21 12:36:11 MSK
Вот что ещё интересно, я с этим не разобрался ещё, если сейчас системный диск и имя его устройства в системе у меня фактически плавающие, то при подключении дополнительного диска в режиме hotplug системный диск «вылетает», система фризится в этот момент, потом отмораживается и я могу вывести в lsblk устройства в которых системный диск больше не отображается, т.е. он отваливается и через несколько секунд вообще всё наглухо виснет.
Всё же лучше наверное будет решить проблему с UDEV и поименовать системный диск жёстко.
dva20
( 17.11.21 12:54:43 MSK ) автор топика
Ответ на: комментарий от dva20 17.11.21 12:54:43 MSK
вариатов в линухе навалом — проблема лишь в выборе наиболее удобного.
pfg ★★★★★
( 17.11.21 13:04:49 MSK )
Ответ на: комментарий от pfg 17.11.21 13:04:49 MSK
Удобный это как было у меня раньше, системный диск всегда sda , а все остальные именуются по порядковому номеру шины в которую они подключены. Было всё «хорошо» пока я не переместил системный диск на отдельный контроллёр (думаю что правильно сделал). Необходимость возникла в том, что хочу позже RAID сделать, а систему вынести за пределы этого RAID’а, т.е на другой контроллёр (ASMedia). И начались вот эти проблемы, что контроллёр ASMedia не первичный. Может быть это где-то на материнке настраивается, не знаю, ещё смотрю, изучаю.
dva20
( 17.11.21 13:10:37 MSK ) автор топика
Ответ на: комментарий от dva20 17.11.21 13:10:37 MSK
хех, а потом еще появится еще куча разных функций и набор различных точек монтирования 🙂
label а потом и uuid для различения этого бардака и был внедрены.
предположу, что порядок перечисления устройств намертво вшит в прошивку биоса и не настраивается. главное чтобы работал, всех находил и был уникальным для системы.
pfg ★★★★★
( 17.11.21 13:58:01 MSK )
Последнее исправление: pfg 17.11.21 14:00:31 MSK (всего исправлений: 1)
Никак, переименование блочных устройств не поддерживается.
anonymous
( 17.11.21 14:22:39 MSK )
Ответ на: комментарий от anonymous 17.11.21 14:22:39 MSK
Label можно переименовать как хочешь.
anonymous
( 17.11.21 14:47:42 MSK )
Ответ на: комментарий от anonymous 17.11.21 14:47:42 MSK
Я и не говорил, что нельзя создавать любые ссылки.
anonymous
( 17.11.21 15:12:00 MSK )
Ответ на: комментарий от izzholtik 17.11.21 12:25:08 MSK
Сначала смотришь вывод fdisk -l, потом пишешь хоть /dev/sdc
grem ★★★★★
( 17.11.21 15:25:09 MSK )
Вот здесь похожая проблема как у меня.
Вообщем, как мне здесь посоветовали, лучшим решением является обращение к партициям по их меткам /dev/disk/by-label/ или по /dev/disk/by-id/ к дискам и партициям. Также, можно на эти ссылки сослаться другой ссылкой, например /dev/mysysdisk -> /dev/disk/by-id/ata-Samsung_SSD_860_EVO_250GB_S4BFNJ0MB25158X и далее использовать эту ссылку в скриптах и ручном использовании в качестве параметров в различных утилитах.
Про ссылки на блочные устройства типа /dev/sda-z следует забыть и не использовать в скриптах, хотя это было очень удобно, но крайне не надёжно 🙂
Всем огромное спасибо за подсказки, идеи!
dva20
( 17.11.21 16:07:49 MSK ) автор топика
Ответ на: комментарий от grem 17.11.21 15:25:09 MSK
ну не знаю.
Мне больше всего нравится мой вариант — дать дискам статические имена в зависимости от порта, в который они воткнуты. Если один диск вылетит или добавится, остальные имена никуда не переползут. Если это возможно для sata, конечно.
izzholtik ★★★
( 17.11.21 16:14:38 MSK )
Ответ на: комментарий от izzholtik 17.11.21 16:14:38 MSK
дать дискам статические имена в зависимости от порта, в который они воткнуты
как такое сделать?
RebHat
( 17.11.21 16:22:25 MSK )
Ответ на: комментарий от RebHat 17.11.21 16:22:25 MSK
Поня Тия не имею, вероятно, тоже через udev. Во всяком случае, я так USB модемы различаю.
Вот тут есть наброски неизвестной работоспособности.
izzholtik ★★★
( 17.11.21 16:31:03 MSK )
Ответ на: комментарий от anonymous 17.11.21 12:49:40 MSK
Например system bekap musor vinda lin
odin, thor, loki, ullr, baldr.
anonymous
( 17.11.21 16:35:21 MSK )
Ответ на: комментарий от izzholtik 17.11.21 16:31:03 MSK
ок, спс, будем почитать
RebHat
( 17.11.21 16:35:24 MSK )
Ответ на: комментарий от RebHat 17.11.21 16:35:24 MSK
Во всяком случае, у меня есть /sys/devices/pci0000:00/0000:00:1f.2/ata1. ata6, в которых рассыпуха соответствующих scsi и block девайсов. Вероятно, можно от этого оттолкнуться.
izzholtik ★★★
( 17.11.21 16:37:46 MSK )
так первая школоло-программа вас пошлет куда подальше от школоло-линукса
надо читать куда symlink приведет и вывод использовать
nanosecond ★
( 17.11.21 16:51:19 MSK )
Ответ на: комментарий от RebHat 17.11.21 16:22:25 MSK
anonymous
( 17.11.21 17:21:36 MSK )
Ответ на: комментарий от anonymous 17.11.21 15:12:00 MSK
Label это не совсем ссылка это такой же индефикатор диска как и uid
anonymous
( 17.11.21 17:29:06 MSK )
Если кому-нибудь будет ещё интересно, то можно посмотреть в каком порядке именуются устройства на шине PCI, у меня это так:
$ lspci 00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06) 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06) 00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) 00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) 00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04) 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-V (rev 05) 00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) 00:1c.5 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #6 (rev d5) 00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) 00:1f.0 ISA bridge: Intel Corporation Z87 Express LPC Controller (rev 05) 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05) 03:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
А здесь ссылки на дисковые устройства с маркировкой на шине PCI ( 00:1f.2 и 03:00.0 ) на котором они находятся:
$ ls -l /dev/disk/by-path/ total 0 lrwxrwxrwx 1 root root 9 2021-11-17 16:58 pci-0000:00:1f.2-ata-1 -> ../../sda lrwxrwxrwx 1 root root 9 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0 -> ../../sda lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part4 -> ../../sda4 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part5 -> ../../sda5 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1.0-part6 -> ../../sda6 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part4 -> ../../sda4 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part5 -> ../../sda5 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:00:1f.2-ata-1-part6 -> ../../sda6 lrwxrwxrwx 1 root root 9 2021-11-17 17:04 pci-0000:00:1f.2-ata-2 -> ../../sdc lrwxrwxrwx 1 root root 9 2021-11-17 17:04 pci-0000:00:1f.2-ata-2.0 -> ../../sdc lrwxrwxrwx 1 root root 10 2021-11-17 17:14 pci-0000:00:1f.2-ata-2.0-part1 -> ../../sdc1 lrwxrwxrwx 1 root root 10 2021-11-17 17:14 pci-0000:00:1f.2-ata-2-part1 -> ../../sdc1 lrwxrwxrwx 1 root root 9 2021-11-17 16:58 pci-0000:03:00.0-ata-1 -> ../../sdb lrwxrwxrwx 1 root root 9 2021-11-17 16:58 pci-0000:03:00.0-ata-1.0 -> ../../sdb lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:03:00.0-ata-1.0-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:03:00.0-ata-1.0-part2 -> ../../sdb2 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:03:00.0-ata-1-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 10 2021-11-17 16:58 pci-0000:03:00.0-ata-1-part2 -> ../../sdb2
dva20
( 17.11.21 17:44:34 MSK ) автор топика
Последнее исправление: dva20 17.11.21 17:48:17 MSK (всего исправлений: 2)