Как легко узнать, смонтировано ли какое-либо блочное устройство (или его часть)

Я хочу знать, что самый простой способ – определить (без привилегий root), установлено ли блок-устройство (например, sdb ) или любая его часть (и какая часть).

Проверка /proc/mounts для sdb недостаточна, потому что sdb или один из его разделов могут использоваться LVM. Вы можете проверить /sys/block/sdb/sdb*/holders/ но вы получаете записи dm-x которые должны быть разрешены к именам /dev/mapper , чтобы проверить /proc/mounts . Возможно, но если есть более простое решение … (которое не должно требовать привилегий root)

2 Solutions collect form web for “Как легко узнать, смонтировано ли какое-либо блочное устройство (или его часть)”

Это в основном вопрос проверки целого пакета угловых случаев.

  • Привод может появиться в / proc / mounts
  • Привод может использоваться как своп (использование / proc / swaps)
  • Привод может быть частью активного LVM pv (использовать pvdisplay)
  • Привод может быть частью группы RAID dm-mapper (использовать / proc / mdstat)
  • Привод может напрямую получать доступ к приложению (например, Oracle поддерживает запись непосредственно на диск или раздел вместо файловой системы) (используйте фьюзер)
  • Прямой доступ к диску можно получить с помощью виртуальной машины (используйте фьюзер)
  • На накопитель можно ссылаться на loopback-устройство (например: mount /dev/sda -o offset=1M /foo ) (используйте losetup -a)

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

Этот последний пример, я думаю, самый интересный, и мало кто знает об этом. Он позволяет монтировать файловую систему без использования разделов. Просто укажите начальное смещение, и Linux будет прозрачно создавать loopback-устройство. Приведенный выше пример дает следующее:

 # cat /proc/mounts ... /dev/loop0 /foo ext4 relatime,data=ordered 0 0 # losetup -a /dev/loop0 [0005]:2048 (/dev/sda), offset 1048576 

Почему ты бы так поступил? Обычно это связано с ситуациями, когда вещи раньше были ужасно ошибочными.

Также имейте в виду, что с функцией namespacing теперь в mainline (см. Unshare ), разные процессы могут иметь разные представления о том, что установлено, а что нет. Здесь все начинает получать красную таблетку.

Существует гораздо больше способов монтирования устройств, и все они могут быть объединены, так что часто, вам нужно узнать об этом.

т.е. то, что используется lvm: pvdisplay

Поэтому вам нужно включить также nfs, cifs, raid, loop, crypt и т. Д. Хорошей отправной точкой всегда является /proc/mounts , как вы уже упоминали.

  • Как узнать, какие драйверы файловой системы скомпилированы в ядре linux?
  • Как узнать, что я могу сделать с / proc и / sys
  • В чем разница между / sys / block / sda1 / stat и / sys / block / xvda1 / stat?
  • Какая единица этого значения
  • CONFIG_GPIO_SYSFS заставляет / sys / class / leds исчезать
  • Доступ к GPIO после загрузки ядра
  • Реконструкция двоичного дампа dmidecode из / sys / firmware / dmi / tables
  • A / D контакты всегда читают max (1023)
  • Найти модуль ядра за виртуальным сетевым интерфейсом по информации из sysfs / procfs
  • Получение информации из sysfs
  • Не удалось редактировать файл / sys / block / sdX / device / queue_depth
  • Interesting Posts

    Не понимаю, почему getfattr -d ничего не показывает

    как grep имена файлов на основе даты

    Как отправить / загрузить файл с ОС хоста в гостевую ОС в KVM? (Не для совместного использования папки)

    Файл cat1 в файл2 после определенного соответствия шаблону

    Как я могу помешать Meta открыть панель запуска KDE Plasma?

    Отключить раздражающее выделение комментариев в emacs

    Что происходит с транзакцией RPM, когда она прерывается посередине?

    Как я могу сделать Ubuntu UI равномерно использовать сочетания клавиш bash?

    Как показать разрешения в числовом формате?

    Подключиться к конкретному хосту

    изменить владельца файла и его родительские каталоги

    «Askfirst» getty с systemd («нажмите enter, чтобы активировать эту консоль»)

    Можно ли изменить палитру по умолчанию для терминала xterm-256color?

    Я просто хотел найти, где xdg-mime искал ассоциации. Что, черт возьми, это _doing_?

    Backspace, вкладка не работает в терминале (с использованием ssh)

    Linux и Unix - лучшая ОС в мире.