Jak łatwo dowiedzieć się, czy urządzenie blokowe (lub jego część) jest w jakiś sposób zamontowane

10

Chcę wiedzieć, jak najłatwiej jest ustalić (bez uprawnień roota), czy zamontowane jest urządzenie blokowe (powiedzmy sdb), czy jakakolwiek jego część (i która część).

Sprawdzanie /proc/mountssdb nie wystarczy, ponieważ sdbLVM może użyć jednej z jego partycji. Możesz sprawdzić, /sys/block/sdb/sdb*/holders/ale otrzymujesz dm-xwpisy, które muszą zostać przetłumaczone na /dev/mappernazwy w celu sprawdzenia /proc/mounts. Możliwe, ale jeśli istnieje łatwiejsze rozwiązanie ... (które nie powinno wymagać uprawnień administratora)

Hauke ​​Laging
źródło
2
Jestem ciekawy, czy nie próbowałeś tylko dowiedzieć się, czy urządzenie jest zamontowane? * / holders i * / * / holders jest wystarczająco dobry, aby powiedzieć ci, że jest podłączony, jeśli urządzenie nie istnieje w tabeli / proc / mounts. Dlaczego musisz to rozwiązać dalej? tzn. cryptsetup dodaje go do uchwytów, wskazując, że nie powinieneś bałagać się na dysku. nawet jeśli / dev / mapper nie jest zamontowany lub spowoduje uszkodzenie szyfrowania. Po prostu jest montowany wewnętrznie za pośrednictwem sterownika. Nie zapomnij również sprawdzić / sys / block / sdb / holders, ponieważ dysk może być „wstrzymany” bez partycji.
Rahly,

Odpowiedzi:

12

Chodzi przede wszystkim o sprawdzenie całej torby skrzynek narożnych.

  • Dysk może pojawić się w / proc / mounts
  • Napęd może być używany jako swap (użyj / proc / swaps)
  • Dysk może być częścią aktywnego LVM pv (użyj pvdisplay)
  • Dysk może być częścią grupy RAID dm-mapper (użyj / proc / mdstat)
  • Aplikacja może uzyskać bezpośredni dostęp do dysku (np. Oracle obsługuje zapis bezpośrednio na dysku lub partycji zamiast systemu plików) (użyj utrwalacza)
  • Dostęp do dysku można uzyskać bezpośrednio za pomocą maszyny wirtualnej (użyj utrwalacza)
  • Napęd może być określany przez urządzenie sprzężenia zwrotnego (np mount /dev/sda -o offset=1M /foo) (zastosowanie losetup -a)

To tylko przykłady, które wymyśliłem, dając półtorej minuty na przemyślenie. Jestem pewien, że jest tuzin innych.

Myślę, że ten ostatni przykład jest najciekawszy i niewiele osób o nim wie. Pozwala na zamontowanie systemu plików bez użycia partycji. Wystarczy określić początkowe przesunięcie, a Linux przejrzyście utworzy urządzenie sprzężenia zwrotnego. Powyższy przykład daje następujące wyniki:

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

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

Dlaczego chcesz to zrobić? Zazwyczaj dotyczy to sytuacji, w których sprawy potwornie się wcześniej potoczyły.

Należy również pamiętać, że dzięki funkcji przestrzeni nazw teraz w głównej linii (patrz unshare ), różne procesy mogą mieć różne poglądy na temat tego, co jest zamontowane, a co nie. Tutaj zaczyna się trochę czerwona pigułka.

tylerl
źródło
1

Istnieje znacznie więcej sposobów montowania urządzeń, wszystkie z nich można łączyć, więc to zależy od Ciebie, aby się dowiedzieć.

tj. co jest używane przez lvm: pvdisplay

Potrzebujesz więc także nfs, cifs, raid, loop, crypt i tak dalej. Dobry punkt wyjścia jest zawsze /proc/mounts, jak już wspomniałeś.


źródło