web-dev-qa-db-fra.com

Remonter un disque occupé en mode lecture seule

Je souhaite forcer une partition de disque en mode lecture seule et la conserver en lecture seule pendant plus de 30 minutes.

Ce que j'ai essayé:

  1. mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)

    ( Problème : Cela a donné une erreur de périphérique occupé car certains processus utilisaient la partition. Je ne veux pas tuer les processus en utilisant le disque. Je veux simuler soudainement le disque en lecture seule lorsque les processus l'utilisent encore.

  2. Clé sysrq magique utilisée, comme ci-dessous

    echo u > /proc/sysrq-trigger
    

    Problème : Cela rendra toutes les partitions de disque en lecture seule (bien que le périphérique soit occupé). Mais après 20-30 minutes, la machine se redémarre. Certaines machines redémarrent immédiatement une fois cette commande exécutée. Je ne sais pas encore ce qui cause ce redémarrage. Je ne veux pas que la machine redémarre d'elle-même et ai besoin de garder le disque en mode lecture seule pendant plus de 30 minutes.

Question: Existe-t-il un meilleur moyen de forcer une partition de disque unique en lecture seule et de la maintenir dans cet état pendant une demi-heure et de la ramener en mode lecture-écriture sans provoquer de redémarrage dans le processus?

20
AdithyaCS

Normalement, vous ne pouvez pas remonter un système de fichiers en lecture seule si un processus contient un fichier ouvert en écriture ou s'il contient un fichier supprimé mais toujours ouvert. De même, vous ne pouvez pas démonter un système de fichiers qui a un fichier ouvert (ou des utilisations similaires de fichiers tels qu'un processus ayant son répertoire actuel, un exécutable en cours d'exécution, etc.).

Vous pouvez utiliser umount -l pour libérer le point de montage et empêcher l'ouverture d'autres fichiers, mais gardez le système de fichiers monté et laissez les processus qui ont déjà des fichiers ouverts fonctionner normalement.

Je ne peux pas penser à un moyen générique de forcer un système de fichiers à être remonté en lecture seule alors qu'il ne devrait pas l'être. Cependant, si le système de fichiers est soutenu par un périphérique de bloc, vous pouvez rendre le périphérique de bloc en lecture seule, par ex.

echo 1 >/sys/block/dm-4/ro
echo 1 >/sys/block/sda/sda2/ro

echo u > /proc/sysrq-trigger est un moyen assez extrême pour forcer le remontage en lecture seule, car il affecte tous les systèmes de fichiers. Il s'agit d'une méthode de dernier recours pour laisser le système de fichiers dans un état propre juste avant le redémarrage.

Le remontage d'un système de fichiers en lecture seule ne provoque pas de redémarrage. La cause du redémarrage n'est pas directement liée au remontage de la partition en lecture seule. Peut-être que ce n'est pas du tout lié, ou peut-être que cela déclenche un bogue dans l'application qui la fait tourner et fait surchauffer le processeur et votre processeur est défectueux ou overclocké et finalement redémarre. Vous devez rechercher la cause du redémarrage.

Utilisez l'option de force de mount (en supposant que votre montage en a une; GNU mount ne le fait pas, contrairement à BSD et macOS par exemple)):

mount -f -o remount,ro /mount/point

Bien sûr, votre kilométrage peut varier en fonction du système de fichiers réel, de la version du noyau et de la situation, il s'agit donc simplement d'une option de niveau supérieur essayant d'autres astuces de niveau inférieur, par exemple mentionné par @Gilles.

3
Piotr Findeisen