Tout d’abord, la situation: j’ai un ordinateur Linux avec deux baies de disques eSATA acceptant les disques SSD amovibles. J'essaie d'écrire une petite application graphique qui permet à l'utilisateur de monter / démonter / formater / sauvegarder / etc. plus facilement les lecteurs qu'il place dans ces baies.
Tout fonctionne principalement. Un petit problème, cependant, est que je ne sais pas comment trouver des informations sur le contenu des lecteurs insérés avant que les lecteurs aient été montés avec succès.
Ainsi, par exemple, si l'utilisateur insère un lecteur que je ne peux pas monter (p. Ex. Parce qu'il est non formaté ou formaté avec un système de fichiers inattendu), toute mon application peut en dire autant: "Le lecteur n'a pas pu être monté".
Ce n'est pas très satisfaisant, car si le disque n'est pas formaté, l'utilisateur voudra probablement le formater ... mais si le disque contient des données d'un système de fichiers non reconnu, il ne voudra probablement PAS le formater .... ou au moins, je veux pouvoir l’avertir que, ce faisant, il effacera des données potentiellement précieuses.
Ma question est donc la suivante: existe-t-il une méthode permettant d'interroger des informations de base (notamment le type de système de fichiers) à partir d'un lecteur ne nécessitant pas que le lecteur soit déjà monté? Ou dois-je simplement essayer de le monter avec divers systèmes de fichiers connus jusqu'à ce que l'une des tentatives de montage réussisse et donner un vague message "soyez prudent" si aucun d'entre eux ne le fait?
Au cas où cela serait important, les chemins que j'utilise pour monter les lecteurs dans les baies de lecteur sont les suivants:
/dev/disk/by-path/pci-0000:00:1f.2-scsi-2:0:0:0
/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0
la source
lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial
Une autre commande utile est la suivante
blkid
: elle renvoie des informations similaires à,vol_id
mais peut également analyser tous les périphériques du système, au lieu d'exiger la transmission d'un périphérique.Pour forcer l'
blkid
analyse de tous les périphériques au lieu d'utiliser des informations en cache, exécutezblkid -c /dev/null
(vous devez disposer d'une autorisation de lecture sur les périphériques en mode bloc, vous devrez donc généralement l'exécuter en tant que root).la source
whereis blockid
partir de la ligne de commande (ouman blockid
), vous saurez si elle est chargée. Exécuter en tant que root:blkid /dev/sdb1
donne (par exemple):/dev/sdb1: SEC_TYPE="msdos" LABEL="DR-05" UUID="8031-5963" TYPE="vfat"
La page de manuel mérite également une attention particulière.Voici une suggestion d’ IBM: SCSI - Ajout, suppression, réanalyse à chaud des périphériques SCSI: Réanalyse d’un périphérique SCSI . Cela réanalysera cette adresse SCSI à la recherche de nouveaux périphériques, et vous pourrez alors lire les informations dans / var / log / messages. Certains autres outils de disque fonctionneront également sans que vous montiez le lecteur.
J'ai en fait essayé quelque chose de légèrement différent hier, et cela a fonctionné (système RHEL4):
la source
Un aperçu simple de toutes les partitions trouvées par le noyau donne
la source