Come scoprire facilmente se un dispositivo a blocchi (o parte di esso) è montato in qualche modo


10

Voglio sapere qual è il modo più semplice per determinare (senza il privilegio di root) se sdbè montato un dispositivo a blocchi (diciamo ) o parte di esso (e quale parte di esso).

Il controllo /proc/mountsdi sdb non è sufficiente perché sdbLVM può utilizzare una delle sue partizioni o una delle sue. Puoi controllare /sys/block/sdb/sdb*/holders/ma ottieni dm-xvoci che devono essere risolte in /dev/mappernomi per poter controllare /proc/mounts. Possibile ma se esiste una soluzione più semplice ... (che non dovrebbe richiedere il privilegio di root)


2
Sono curioso, non stavi solo cercando di scoprire se il dispositivo è montato? * / holder e * / * / holder è abbastanza buono da dirti se è montato se il dispositivo non esiste nella tabella / proc / mounts. Perché è necessario risolverlo ulteriormente? cioè cryptsetup lo aggiunge ai possessori, indicando che non dovresti fare confusione con l'unità .. anche se il / dev / mapper non è montato, o causare il danneggiamento della crittografia. È solo che viene montato internamente attraverso un driver. Inoltre, non dimenticare di selezionare / sys / block / sdb / holder, poiché l'unità potrebbe essere "trattenuta" senza partizioni.
Rahly,

Risposte:


12

Si tratta essenzialmente di controllare un sacco di valigie angolari.

  • Un'unità può apparire in / proc / mounts
  • Un'unità può essere utilizzata come swap (utilizzare / proc / swaps)
  • Un'unità può far parte di un pv LVM attivo (usare pvdisplay)
  • Un'unità può far parte di un gruppo RAID dm-mapper (utilizzare / proc / mdstat)
  • È possibile accedere direttamente a un'unità da un'applicazione (ad es. Oracle supporta la scrittura diretta su un'unità o partizione anziché su un file system) (utilizzare il fusore)
  • È possibile accedere direttamente a un'unità da una macchina virtuale (utilizzare il fusore)
  • Un'unità può essere indicata da un dispositivo di loopback (es: mount /dev/sda -o offset=1M /foo) (uso losetup -a)

Questi sono solo gli esempi che mi sono venuti in mente un minuto e mezzo per pensarci. Sono sicuro che ce ne sono una dozzina.

Quest'ultimo esempio penso sia il più interessante e poche persone lo sanno. Ti permette di montare un filesystem senza usare le partizioni. Basta specificare l'offset iniziale e Linux creerà in modo trasparente un dispositivo di loopback. L'esempio sopra produce quanto segue:

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

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

Perché dovresti farlo? In genere si tratta di situazioni in cui in precedenza le cose sono andate terribilmente male.

Inoltre, tieni presente che con la funzione di spaziatura dei nomi ora in linea principale (vedi unshare ), processi diversi possono avere viste diverse su ciò che è montato e ciò che non lo è. Qui le cose iniziano a prendere un po 'di pillola rossa.


1

Esistono molti altri modi per montare i dispositivi, tutti possono essere combinati, quindi è come spesso spetta a te scoprirlo.

cioè cosa viene usato da lvm: pvdisplay

Quindi è necessario includere anche nfs, cifs, raid, loop, crypt e così via. Un buon punto di partenza è sempre /proc/mounts, come hai già detto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.