Remonter un disque occupé en mode lecture seule

19

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 à être 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?

AdithyaCS
la source
3
Avez-vous réfléchi fsfreeze -f? Il ne remonte pas exactement le système de fichiers en lecture seule. Au lieu de cela, il bloque tous les écrivains jusqu'à fsfreeze -u. Mais c'est similaire ...
Celada
Merci Celada! c'est une bonne idée! .. Pour le moment, je n'ai pas de fonction fsfreeze sur ma machine mais je vais essayer.
AdithyaCS du
J'ai essayé fsfreeze -fet dans mon cas c'était plus "os freeze". Peut-être parce que les écritures ont été bloquées au lieu d'être rejetées?
Piotr Findeisen
fsfreezerendu mon système inaccessible et je n'ai pas pu entrer la commande de dégel ne pouvant pas revenir à un terminal et j'ai dû redémarrer dur ma machine. Soyez donc prévenu ! :)
Alex

Réponses:

16

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 -lpour 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 exemple

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

echo u > /proc/sysrq-triggerest 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 le 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.

Gilles 'SO- arrête d'être méchant'
la source
2
Malheureusement, ce n'est pas une solution portable. Sur framboise, je reçois: "Autorisation refusée" lorsque je coursecho 1 | sudo tee /sys/block/mmcblk0/mmcblk0p2/ro
Piotr Findeisen
.. et echo u > /proc/sysrq-triggern'est pas seulement extrême, mais peut également vous forcer à redémarrer si vous souhaitez remonter RW. Lorsque j'ai essayé cela, puis remonté (avec mount..), j'ai dmesgdit "Impossible de remonter RDWR en raison de la liste des inodes orphelins non traités. Veuillez démonter / remonter à la place"
Piotr Findeisen
@PiotrFindeisen l'avez-vous exécuté en tant que root?
hanshenrik
@hanshenrik je suppose que oui
Piotr Findeisen
4

Utilisez mountl'option force de (en supposant que votre monture en a une; GNU mountnon, mais 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 d'une option de niveau supérieur essayant d'autres astuces de niveau inférieur, comme par exemple mentionné par @Gilles.

Piotr Findeisen
la source
1
@psusi no. Cela m'a permis de remonter ma /partition ext4 .
Piotr Findeisen
2
Il s'avère que je pensais à umount -f, mais j'ai juste essayé de remonter vers ro, et bien que -f fasse que la commande ne retourne pas d'erreur, le système de fichiers n'est en fait pas fait en lecture seule.
psusi
1
@psusi, pas de surprise. Je ne m'attendrais pas à ce qu'une approche unique fonctionne dans tous les cas. Cela a fonctionné pour moi de manière répétée (partition racine ext4 sur framboise pour le sujet) - et je veux dire remonter sur RO, sans ignorer les erreurs - donc je suppose que cela fonctionnera pour certains, mais pas tous, d'autres cas. Désolé, cela n'a pas inclus le vôtre.
Piotr Findeisen
13
mont l'homme dit -fest --fake. Quote: "Fait que tout soit fait sauf l'appel système réel; si ce n'est pas évident, cela" fausse "le montage du système de fichiers. Cette option est utile en conjonction avec l'indicateur -v pour déterminer ce que la commande mount essaie de faire Il peut également être utilisé pour ajouter des entrées pour les périphériques qui ont été montés précédemment avec l'option -n. L'option -f vérifie les enregistrements existants dans / etc / mtab et échoue lorsque l'enregistrement existe déjà (avec un montage normal non faux, cette vérification est effectuée par le noyau). "
Will Manley
3
BSD et, par conséquent, les montages macOS signifient en -f effet «force».
terdon