Comment forcer fsck à chaque démarrage - tous les systèmes de fichiers (pertinents)?

14

Je travaille avec un PC sans ventilateur (des centaines d'entre eux, en fait) qui a des partitions debian 6 et 3 (FAT et 2x ext2). Le système n'a pas de bouton d'alimentation en tant que tel, donc la plupart des gens ont tendance à tirer sur la prise pour la «fermer» plutôt que sur init 0 (ou équivalent). En conséquence, le ou les systèmes de fichiers accumulent des erreurs assez rapidement.

J'ai essayé d'utiliser 'shutdown -rF' pour forcer fsck mais cela ne semble pas fonctionner. Je me demande s'il existe un moyen de dire au système de vérifier chaque point de montage / FS avant leur montage.

J'ai essayé de définir le paramètre fsck dans / etc / fstab. Cela me donne généralement un «Erreurs trouvées. Exécutez le message fsck manuellement.

Y a-t-il d'autres options à essayer?

ethrbunny
la source
1
A) Qui étaient vos utilisateurs? B) Auriez-vous pu ajouter un bouton "Arrêt" bien visible qui était toujours visible à l'écran? C) Alternativement, auriez-vous pu éduquer vos utilisateurs? D) Pourquoi les machines n'avaient-elles pas de boutons d'alimentation à l'avant?
unforgettableidSupportsMonica
Cette question est un quasi-doublon de unix.stackexchange.com/questions/180488/… du même utilisateur.
inoubliableidSupportsMonica

Réponses:

16

In /etc/init.d/checkfs.shest la ligne if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, donc fournir forcefscksur la ligne de commande du noyau ou générer un /forcefsckfichier à l'arrêt devrait provoquer un fsck au prochain redémarrage.

Pour empêcher les exécutions manuelles de fsck, demandez fsckà essayer de corriger automatiquement les erreurs avec l' -yoption en décommentant et en changeant no en yesdans l'entrée / etc / default / rcS suivante, après la modification, elle devrait ressembler à:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Une option (forcefsck ou FSCKFIX) n'implique pas l'autre.

gris fini
la source
Cela gérera-t-il la condition «Exécuter fsck manuellement»?
ethrbunny
En effet, j'ai lu trop vite, mis à jour ma réponse.
gris fini
J'ai défini à la fois FSCKFIX = yes et la valeur dans checkfs.sh. Dans aucun des cas, fsck ne s'est exécuté lorsque j'ai redémarré (via init 6). Je dois manquer quelque chose ici.
ethrbunny
Ne changez rien checkfs.sh, modifiez seulement / etc / defaults / rcS et exécutez touch /forcefsckavant de redémarrer. La dernière commande doit être exécutée avant chaque redémarrage ou juste après le démarrage, mais le script d'initialisation fsck est terminé.
gris fini
Hmm .. pas de chance. Je vois toujours le message «montage d'un système de fichiers non contrôlé» suivi de beaucoup d'erreurs «supprimer l'inode référencé». Jusqu'à présent, la modification de / etc / fstab a été la seule chose qui a eu un effet. Je ne sais pas ce que je fais de telle sorte que vos suggestions ne fonctionnent pas.
ethrbunny
8

Ajoutez le fsck.mode=forceparamètre Kernel sur votre chargeur de démarrage. Ajoutez cette option à la GRUB_CMDLINE_LINUX_DEFAULT=variable à l'intérieur /etc/default/grub. En tant que root, générez un nouveau fichier de configuration grub:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Ce paramètre a le même effet que la création du forcefsckfichier à l'intérieur de la racine du point de montage.

La solution d'utiliser le checkfs.sh script conviendra mieux à Debian, mais ne devrait pas fonctionner sur d'autres distributions


la source
7

J'édite ma réponse:

La commande est:

sudo tune2fs -c 1 /dev/sdX

selon l'argument manpages -c pour tune2fs compte le nombre d'instances de montages pour une partition. Par conséquent, 1 force à vérifier les fs après chaque instance de montage.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )

xitij
la source
2
Seule une commande ne suffit pas dans la plupart des cas, écrivez également au moins une explication minimale.
peterh