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

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

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

  • В чем разница между procfs и sysfs?
  • Реконструкция двоичного дампа dmidecode из / sys / firmware / dmi / tables
  • Почему rsync не удается скопировать файлы из / sys в Linux?
  • Можно ли получить индекс сетевого интерфейса не через / sys?
  • ЖК-подсветка Sysfs в качестве теплового устройства
  • Получение информации из sysfs
  • A / D контакты всегда читают max (1023)
  • Как найти модуль, реализующий сетевой интерфейс, когда в / sys / class / net / eth0 нет «устройства»?
  • 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 и Unix - лучшая ОС в мире.