Форум русскоязычного сообщества Ubuntu


Автор Тема: Как получить список путей-файлов разделов накопителя-диска?  (Прочитано 1189 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
В системе самому диску-накопителю соответствует некий файл устройства. Например,
    /dev/sda

Разделам на накопителе соответствует файл устройства
    /dev/sdaX

А как правильно и надёжно получить эти имена файлов? В Shell скрипте, в Perl скрипте, или ещё как-то - Си, или др., код, может быть. Но лучше - Shell утилиты и Perl.

В вопросе есть ещё и второй слой. Совсем шикарно было бы знать, как получить имена не только для MBR, но и для GPT (Guided Partition Table). Но, для начала, хоть бы и про MBR узнать.

Можно:

    sudo parted --list --machine /dev/sda

Она работает с GPT, она выдаёт удобное для парсинга - приемлемо.

Можно так:

    cat /proc/partitions


Как это вообще делают? Что смотреть?

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3026
    • Просмотр профиля
Не очнь вникал, что именно надо, но попробуйте
ls /dev/sd*или смотрите содержимое /dev/disk/.
« Последнее редактирование: 10 Октября 2013, 21:08:50 от Peter_I »
Пётр.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Диски:
echo /dev/sd?
Разделы:
echo /dev/sd??
Ещё:
ls -l /dev/disk/by-*

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Ребят, это всё не работает в реальности. Пути бывают куда сложнее, в т.ч. в них могут быть подкаталоги. Может быть несколько цифр, перемежающихся с буквами.

Потихоньку вырисовывается, что

1)
    /proc/devices
    /proc/partitions


2) blkid

3) Да, верно: /dev/disk/*

До конца я ещё это не осознал.

Оффлайн Spect

  • Старожил
  • *
  • Сообщений: 1173
    • Просмотр профиля
А разделы как различать? Обычно в системе принято по uuid - он уникален, он есть, если есть какой-то раздел, даже не смонтированный, от диска и расположения не зависит. ls /dev/disk/by-uuidДалее, возможны крипторазделы... со своими тайными прелестями ls /dev/mapper
Ubuntu 16.04 LTS [x86-64]/i3-2100T/2*4G/1T HDD/Intel HD 2000
Hatsan Escort Aimguard Combo 12/76, 7+1

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
А разделы как различать? Обычно в системе принято по uuid - он уникален, он есть, если есть какой-то раздел, даже не смонтированный, от диска и расположения не зависит.

Да. Утилиты, создающие разделы, не сообщают полных путей к ним. А утилиты форматирования требуют полных путей к разделам. Вот такая утилита, создающая раздел, поработала, а при форматировании нужно знать пути.

Вместо путей легко вычисляются только порядковые номера. Пути можно вычислить, надёжно вычислить, видимо, но это тупая эвристика, отслеживания появления/исчезновения UUID в системе. Странный способ. Отсюда вопросы.

Читать исходники - принимается. Но, для меня, удивительно, почти удивительно, что нет готовых инструментов прямого получения инфы. Например, перечислить все разделы с путями в порядке следования в таблице разделов. Хотя бы, тупо перечислить существующие полные пути, для конкретного устройства.

То, что выше названо, позволяет навести эвристику на это, получить нужное. Но, что-то свербит, что кто-то тут что-то не так делает.

Оффлайн Spect

  • Старожил
  • *
  • Сообщений: 1173
    • Просмотр профиля
Ничо не понял.. Какие "пути"? Куда смонтировал - того и тапки там и получил "путь". А что такое "путь" для немонтированного в данный момент раздела?
Цитировать
утилиты форматирования требуют полных путей к разделам
и? Форматируем монтированый раздел?
Ubuntu 16.04 LTS [x86-64]/i3-2100T/2*4G/1T HDD/Intel HD 2000
Hatsan Escort Aimguard Combo 12/76, 7+1

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5583
  • Все по палатам!
    • Просмотр профиля
Artif,
Может имеет смысл объяснить задачу?
Извините, я все еще учусь

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Artif,
Может имеет смысл объяснить задачу?

Нужен надёжный способ на автомате превращать пустой накопитель в реально примонтированную в системе ФС, примонтированную в какой-то каталог. Уточнение - этих ФС на накопителе несколько разных.

Как решать: скриптом создавать разделы на накопителе, форматировать их, монтировать в директорию.

Сложность: при форматировании, при создании ФС на разделе, обязательный параметр - путь к разделу (Полный путь, а может он быть не полный... Едва ли.) А в момент создания раздела утилита не говорит о том, какой путь к созданному разделу.

Т.е. я насоздавал разделов, каждый нужного размера, каждый в нужном порядке на нужном накопителе. Хочу их отформатировать, каждый по-своему, но не могу найти: как мне понять, какие ж оказались пути к созданным разделам?

Я знаю их порядок в таблице (знаю номера, я их создавал на чистом). Но и только. А из одних номеров + путь к накопителю не получится путь к разделу. Точнее - часто этих данных мало, когда имеется сложный, полновесный RAID контроллер и его возможности задействованы. И т.п.


Пользователь решил продолжить мысль 11 Октября 2013, 15:39:39:
Ничо не понял.. Какие "пути"?

1) На накопителе есть таблица разделов.

2) В таблице разделов перечислено, где какой начинается и заканчивается. В принципе, они там идут почти по номерам. Пусть у нас они там идут по номерам, без разрывов между номерами.

3) На каждом разделе создаётся файловая система.

4) Каждая файловая система может быть примонтирована в какой-то каталог/папку/директорию. И только тут уже туда можно записывать обычные файлы.

Каждый пункт "делается" отдельными утилитами-командами. В этом топике проблема стыка 2-го и 3-го пунктов. Поиск средств указать в 3-м пункте, какие пути к созданому во 2-м пункте.

P.S. Для читающих и интересующихся в своём развитии: содержимое накопителя и содержимое разделов на накопителе доступны как содержимое разных файлов внутри каталога /dev. Это такое свойство Linux систем. В этой теме вопрос о именах этих файлов. Как их находить программой.
« Последнее редактирование: 11 Октября 2013, 15:48:54 от Artif »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5583
  • Все по палатам!
    • Просмотр профиля
Кстати, эту работу выполняет инсталлятор. Может посмотрите логи? Здесь: /var/log/installer и какие мысли придут...
Извините, я все еще учусь

Оффлайн Artif

  • Автор темы
  • Участник
  • *
  • Сообщений: 207
    • Просмотр профиля
Ответ такой: сравнивать до и после, или ещё как-то разбирать вывод команды
    sudo blockdev --report

При прогонке своих тестов, если были какие-то ошибки, то может быть полезно
    sudo lshw -C disk -short
    sudo lshw -C volume -short
    man mknod

Чтобы без перезагрузки виртуальной машины починить заломанное тестами в системе. Смотря что и как поломать.

P.S. Есть libparted - https://www.gnu.org/software/parted/api/index.html
Но это другая песня.
« Последнее редактирование: 17 Октября 2013, 18:18:55 от Artif »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
По-моему, стоит копнуть глубже
man blkid lsblk

 

Страница сгенерирована за 0.049 секунд. Запросов: 25.