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

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

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

  • Разница между / dev и / sys / class?
  • Как сопоставить / sys / bus / usb / devices с / dev / video *?
  • Как найти модуль, реализующий сетевой интерфейс, когда в / sys / class / net / eth0 нет «устройства»?
  • Параметры модуля ядра vs / sys / class / ... объяснение
  • Восстановить из rm -rf / proc / sys / / dev / pts / dev без перезагрузки?
  • udev для файла / sys не работает
  • Как узнать, какие алгоритмы декомпрессии скомпилированы в ядро ​​linux?
  • Можно ли получить индекс сетевого интерфейса не через / sys?
  • 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 , как вы уже упоминали.

    Interesting Posts

    Подведение общих строк в разных файлах

    Shell – печать только определенных строк с вывода

    Принудительное воспроизведение звука с высоким качеством

    установка pendrivelinux на USB-накопителе – используется только 5,8 ГБ 14,7-Гбайт USB-накопителя

    найти 2 файла с похожими именами и переместить их в новое место

    Как замедлить атаки грубой силы против LUKS без замедления производительности LUKS?

    Любой способ запуска нескольких полноэкранных приложений EGL?

    acpi_listen: невозможно открыть сокет /var/run/acpid.socket: нет такого файла или каталога

    update-initramfs выбирает неправильное ядро

    Должен ли «#! / Usr / bin / env xdg-open» быть включен в файлы .desktop?

    Полное имя пути bash? и базовый процесс Linux?

    Поиск и устранение неисправностей HAProxy на RHEL7

    Программа обновления файлов конфигурации

    Почему именованный канал не удаляется после перезапуска системы?

    Каков хороший пример команд трубопроводов?

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