Comment savoir si ses disques sont débranchables à chaud ?

Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour.

Comment puis-je savoir sous Linux (Ubuntu) si mes disques durs sont débranchables à chaud (hot swap) ?
Et si c'est possible, comment procéder ? ( je pense qu'il est fortement déconseillé de débrancher un disque pendant qu'il tourne par exemple ?? )

Ce sont des disques dur en SATA tout ce qu'il y a de plus classique.

Merci.
A voir également:

1 réponse

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Ce qui suit n'est pas une réponse précise mais j'espère pourra te servir de point de départ dans tes recherches.

Pour commencer tu peux vérifier que toutes les partitions du disque en question ne sont pas montées, car aucun accès au disque ne devrait être fait dans ce cas si on omet les commandes bas niveau genre dd ou fdisk, qui n'ont pas besoin qu'une partition du disque soit montée pour y accéder.

En effet, quand tu retires un "périphérique en toute sécurité", le système commence par "umount" les partitions qui le concerne. Chacune d'elle est associé à un device (par exemple /dev/sda1, /dev/sda2 concernent les partitions du disque /dev/sda). Tu peux voir quels devices sont monté à un moment donné en lançant la commande suivante :

mount


Ensuite tu peux filtrer en affichant que les lignes qui concernent /dev/sda :

mount | grep /dev/sda


Attention car si tes mounts sont faits en utilisant les UUIDs et non les notations /dev/sd... tu peux croire qu'une partition n'est pas montée alors qu'elle l'est. Tu peux retrouver ces UUIDs avec la commande suivante

Exemple :

(mando@silk) (~) $ ls -o /dev/disk/by-uuid/ | grep sda
lrwxrwxrwx 1 root 10 déc.   2 11:55 4bfd4208-37e2-45af-833a-d488880d112f -> ../../sda6
lrwxrwxrwx 1 root 10 déc.   2 11:55 60863F6F863F4536 -> ../../sda1
lrwxrwxrwx 1 root 10 déc.   2 11:55 af504369-fb45-4486-9036-7c016e3c73a6 -> ../../sda5
lrwxrwxrwx 1 root 10 déc.   2 11:55 D0DA4397DA43792C -> ../../sda2
lrwxrwxrwx 1 root 10 déc.   2 11:55 ea9f3b2f-2e6c-46da-abcc-b0dadf3371c6 -> ../../sda7


Ensuite tu peux combiner ces deux commandes ensemble pour avoir directement la réponse.

Exemple :

(mando@silk) (~) $ for x in $(ls -o /dev/disk/by-uuid/ | grep sda | cut -d" " -f10); do (mount | egrep "$x"); done ; mount | grep /dev/sda
/dev/disk/by-uuid/4bfd4208-37e2-45af-833a-d488880d112f on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
/dev/sda7 on /home type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/sda2 on /mnt/windows type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)


Ici on voit que / (qui utilise la notation UUID), /home, /mnt/windows sont montées, donc typiquement /dev/sda est utilisé.

Une autre approche consiste à utiliser la commande lsof qui permet de voir quels fichiers sont accédés, mais ce n'est pas forcément le plus pratique sauf si tu sais que ton périphérique est par exemple exclusivement monté dans un dossier particulier (par exemple /media/toto) :

sudo lsof | grep /media/toto


Ensuite je pense que certaines vérifications sont à faire pour voir si ton noyau support le hotplug :

grep -i hot /boot/config-$(uname -r)


Exemple : Je pars du principe que la fonctionnalité dans le noyau que l'on cherche porte dans son nom "hot"

(mando@silk) (~) $ grep -i hot /boot/config-$(uname -r)
CONFIG_HOTPLUG=y
CONFIG_TICK_ONESHOT=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_HOTPLUG_CPU=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_HOTPLUG_PCI_PCIE=y
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_ACPI=y
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
CONFIG_HOTPLUG_PCI_CPCI=y
CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_DM_SNAPSHOT=m
CONFIG_USB_STORAGE_JUMPSHOT=m
# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y


Ensuite on peut vérifier que parmi la fonctionnalité (y) ou en module (m) l'une d'elle correspond à ton besoin en cherchant son nom sur internet.
https://cateee.net/lkddb/web-lkddb/HOTPLUG.html

Si la fonctionnalité qui t'intéresse est en module, vérifie que le module (*.ko) correspondant est chargé (avec la commande lsmod).

Bonne chance
2