Як легко дізнатися, чи блокований пристрій (або його частина) встановлений якось


11

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

Перевірка /proc/mountssdb недостатня, оскільки sdbLVM може використовувати один з її розділів. Ви можете перевірити, /sys/block/sdb/sdb*/holders/але ви отримаєте dm-xзаписи, які повинні бути вирішені на /dev/mapperімена, щоб перевірити /proc/mounts. Можливо, але якщо є більш просте рішення ... (яке не повинно вимагати root права)


2
Мені цікаво, ви не просто намагалися дізнатися, чи пристрій встановлено? * / holders і * / * / holders достатньо добре, щоб повідомити вам про його встановлення, якщо пристрою немає в таблиці / proc / mounts. Чому далі потрібно це вирішити? тобто cryptsetup додає його до власників, вказуючи, що ви не повинні возитися з накопичувачем .. навіть якщо / dev / mapper не змонтується, або спричинить пошкодження шифрування. Це тільки те, що його встановлюють внутрішньо через драйвер. Також не забудьте перевірити / sys / block / sdb / holders, оскільки накопичувач може бути «утримуваний» без розділів.
Рахлі

Відповіді:


13

Це по суті питання перевірки цілого пакета кутових шаф.

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

Це лише приклади, які я придумав, давши хвилину-півтори, щоб подумати над цим. Я впевнений, що є десяток інших.

Цей останній приклад, я думаю, є найцікавішим і мало хто про це знає. Це дозволяє монтувати файлову систему без використання розділів. Просто вкажіть початковий зсув, і Linux прозоро створить пристрій циклу. Наведений вище приклад дає наступне:

# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0

# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576

Навіщо ти це робив? Зазвичай це стосується ситуацій, коли раніше речі жахливо пішли не так.

Також майте на увазі, що за допомогою функції простору імен, яка зараз знаходиться в основній лінії (див. Розділення без доступу ), різні процеси можуть мати різні погляди на те, що встановлено, а що ні. Тут речі починають трохи отримувати червону таблетку.


1

Існує набагато більше способів монтажу пристроїв, усі вони можуть бути комбіновані, так що, як це часто, вам належить дізнатися.

тобто для чого використовується lvm: pvdisplay

Тому вам потрібно включити також nfs, cifs, рейд, цикл, склеп тощо. Хороший вихідний пункт - це завжди /proc/mounts, як ви вже згадували.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.