Comment savoir facilement si un périphérique bloc (ou une partie de celui-ci) est monté d'une manière ou d'une autre

10

Je veux savoir quel est le moyen le plus simple de déterminer (sans privilège root) si un périphérique de bloc (par exemple sdb) ou une partie de celui-ci est monté (et quelle partie de celui-ci).

La vérification /proc/mountsde sdb n'est pas suffisante car sdbou l'une de ses partitions peut être utilisée par LVM. Vous pouvez vérifier, /sys/block/sdb/sdb*/holders/mais vous obtenez des dm-xentrées qui doivent être résolues en /dev/mappernoms afin de vérifier /proc/mounts. Possible mais s'il existe une solution plus simple ... (qui ne devrait pas nécessiter le privilège root)

Hauke ​​Laging
la source
2
Je suis curieux, n'essayiez-vous pas simplement de savoir si l'appareil est monté? * / titulaires et * / * / titulaires est assez bon pour vous dire qu'il est monté si le périphérique n'existe pas dans la table / proc / mounts. Pourquoi avez-vous besoin de le résoudre davantage? c'est-à-dire que cryptsetup l'ajoute aux supports, indiquant que vous ne devriez pas jouer avec le lecteur .. même si le / dev / mapper n'est pas monté, ou provoquer une corruption de cryptage. C'est juste qu'il est monté en interne via un pilote. N'oubliez pas de vérifier également / sys / block / sdb / holder, car le lecteur peut être "maintenu" sans partitions.
Rahly

Réponses:

12

Il s'agit essentiellement de vérifier un sac entier de valises d'angle.

  • Un lecteur peut apparaître dans / proc / mounts
  • Un lecteur peut être utilisé comme échange (utilisez / proc / swaps)
  • Un lecteur peut faire partie d'un PV LVM actif (utiliser pvdisplay)
  • Un lecteur peut faire partie d'un groupe RAID dm-mapper (utilisez / proc / mdstat)
  • Un lecteur est directement accessible par une application (par exemple, Oracle prend en charge l'écriture directement sur un lecteur ou une partition au lieu d'un système de fichiers) (utilisez l'unité de fusion)
  • Un lecteur est directement accessible par une machine virtuelle (utilisez l'unité de fusion)
  • Un disque peut être référencé par un dispositif de bouclage (par exemple mount /dev/sda -o offset=1M /foo) (utilisation losetup -a)

Ce ne sont là que les exemples que j'ai trouvés, compte tenu d'une minute et demie pour y réfléchir. Je suis sûr qu'il y en a une douzaine d'autres.

Ce dernier exemple, je pense, est le plus intéressant et peu de gens le connaissent. Il vous permet de monter un système de fichiers sans utiliser de partitions. Spécifiez simplement l'offset de départ et Linux créera de manière transparente un périphérique de bouclage. L'exemple ci-dessus donne ce qui suit:

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

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

Pourquoi ferais-tu ça? Il s'agit généralement de situations où les choses ont mal tourné auparavant.

Gardez également à l'esprit qu'avec la fonction d' espacement de noms maintenant en ligne principale (voir dissociation ), différents processus peuvent avoir des vues différentes sur ce qui est monté et ce qui ne l'est pas. Ici, les choses commencent à devenir un peu rouges.

tylerl
la source
1

Il y a beaucoup plus de façons de monter des appareils, tous peuvent être combinés, c'est donc comme souvent, à vous de le découvrir.

c'est-à-dire ce qui est utilisé par lvm: pvdisplay

Vous devez donc inclure également nfs, cifs, raid, loop, crypt, etc. Un bon point de départ est toujours /proc/mounts, comme vous l'avez déjà mentionné.


la source