Forcer fsck au démarrage ?

Bonjour,

j’ai constaté depuis peu que mon serveur debian (jessie) ne fait aucun fsck au démarrage.
Manifestement ce n’est pas une erreur, linuxquestions.org/question … 175433189/

Toutefois, j’ai essayé différents moyens de forcer manuellement un fsck sans succès.

  • La création du fichier /forcefsck donne ce message dans le syslog: [quote]“Please pass ‘fsck.mode=force’ on the kernel command line rather than creating /forcefsck on the root file system.”[/quote]

  • J’ai donc essayé de passer fsck.mode=force dans GRUB_CMDLINE_LINUX

Suivi d’un update-grub
Le message ne s’affiche plus, mais toujours pas de fsck…

  • Ma dernière tentative a été de passer le disque en erreur:

Dumpe2fs indique alors effectivement que l’état du disque est “not clean with errors”, mais après un redémarrage toujours sans fsck, le disque est passé à “clean”!

J’ai également changé la config de /etc/default/rcS pour passer FSCKFIX à yes. Sans plus de succès sur les méthodes précédentes.

J’ai trouvé ici même, sur ce topic, qu’utiliser sysvinit permettait de prendre en compte /forcefsck. Mais je dois bien avouer que je ne comprend pas comment démarrer avec sysvinit au lieu de systemd. Et je présume qu’il doit exister un moyen de faire un fsck proprement avec systemd. Mais je ne parviens pas à trouver d’infos à ce sujet.

J’aimerais vraiment pouvoir refaire des fsck de mes disques, ils n’ont pas été vérifié depuis 1 an 1/2 maintenant…

En espérant trouver de l’aide ici :smiley:
Merci de votre aide.

Salut,
Il y a les service systemd-fsck@.service

freedesktop.org/software/sy … rvice.html

Sur mon desktop, je vois bien passer le fsck au debut du boot.
Si je verifie le status voila ce qui est:

[code]root@desktop:/usr/lib/systemd# systemctl status systemd-fsck*
● systemd-fsck-root.service - File System Check on Root Device
Loaded: loaded (/lib/systemd/system/systemd-fsck-root.service; static)
Active: inactive (dead)
start condition failed at sam. 2016-02-13 08:58:53 CET; 24min ago
ConditionPathExists=!/run/initramfs/fsck-root was not met
Docs: man:systemd-fsck-root.service(8)

● systemd-fsck@dev-disk-by\x2duuid-4fabe726\x2d5797\x2d4439\x2d9a1f\x2dc02b62b0d143.service - File System Check on /dev/disk/by-uuid/4fabe726-5797-4439-9a1f-c02b62b0d143
Loaded: loaded (/lib/systemd/system/systemd-fsck@.service; static)
Active: active (exited) since sam. 2016-02-13 08:58:55 CET; 24min ago
Docs: man:systemd-fsck@.service(8)
Process: 402 ExecStart=/lib/systemd/systemd-fsck %f (code=exited, status=0/SUCCESS)
Main PID: 402 (code=exited, status=0/SUCCESS)

févr. 13 08:58:55 desktop systemd-fsck[402]: /dev/sda2 : propre, 36825/7938048 fichiers, 5129035/31748096 blocs[/code]
log du boot:

root@desktop:/# journalctl -b | grep fsck févr. 13 08:58:55 desktop systemd-fsck[402]: /dev/sda2 : propre, 36825/7938048 fichiers, 5129035/31748096 blocs

Pour / c’est initramfs qui fait le job

[code]root@desktop:/run/initramfs# cat fsck.log
Log of fsck -a -t ext4 /dev/sda1
Sat Feb 13 07:58:47 2016

fsck from util-linux 2.25.2
/dev/sda1: clean, 186948/1831424 files, 1380247/7323904 blocks

Sat Feb 13 07:58:47 2016

[/code]

Le paquet est-il bien installé?
initramfs-tools
générateur générique et modulaire d’initramfs

root@desktop:/run/initramfs# apt list initramfs-tools En train de lister... Fait initramfs-tools/stable,now 0.120 all [installé, automatique
La fstab

[code]root@desktop:/usr/lib/systemd# cat /etc/fstab

/etc/fstab: static file system information.

Use ‘blkid’ to print the universally unique identifier for a

device; this may be used with UUID= as a more robust way to name devices

that works even if disks are added and removed. See fstab(5).

/ was on /dev/sda1 during installation

UUID=7b327cad-72cf-4e2f-8156-3a185e1a0c20 / ext4 errors=remount-ro 0 1

/home during installation

UUID=4fabe726-5797-4439-9a1f-c02b62b0d143 /home ext4 defaults 0 2

lecteur cdrom

/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

disque usb UUID=5A521CA2521C84C3

UUID=5A521CA2521C84C3 /media/guy/Elements ntfs defaults,nofail 0 2
[/code]

il y avait un conflit entre les parametres kernel et initramfs, je ne sais pas ou ça en est
lists.debian.org/debian-user/20 … 01432.html

En tout cas sur Debian Jessie 8.3 fsck passe bien

1 J'aime

Merci de ta réponse.

Ce matin en démarrant la machine de test pour voir ce que tu me disais, cette saleté a fait un fsck sans que je lui demande rien (je pense qu’elle joue avec mes nerfs :016 )

Le log dans /run/initramfs/fsck.log, je ne le connaissait pas! Toutefois il ne contient que le log de ce matin.
Je n’aurais pas le temps aujourd’hui, mais il me reste encore à trouver comment forcer le fsck (/forcefsck semblant être sans effet) pour éviter des fsck intempestif durant le boot.

systemd-fsck@dev-disk-by est bien actif chez moi aussi.
Le fstab est bon avec 1 pour le disque système et 2 pour les autres.

Je vais continuer les essais avec ce nouveau log :023

bonjour.

Tune2fs vous permet de programmer la vérification de vos différentes partitions.Tune2fs fait partie du paquet e2fsprogs

[quote]- J’ai donc essayé de passer fsck.mode=force dans GRUB_CMDLINE_LINUX
Code:
GRUB_CMDLINE_LINUX=“fsck.mode=force”

Suivi d’un update-grub
Le message ne s’affiche plus, mais toujours pas de fsck…[/quote]
ça devrait bien forcer le fsck
freedesktop.org/software/sy … rvice.html
pour le boot normal j’utilise GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT=“quiet apparmor=1 security=apparmor"
GRUB_CMDLINE_LINUX=”"

si le disque est de grande taille il peut y avoir des problèmes de time-out
bugs.debian.org/cgi-bin/bugrepo … =788050#65
Faut jeter un oeil la-dedans

[code]root@desktop:/lib/systemd/system# cat systemd-fsck-root.service

This file is part of systemd.

systemd is free software; you can redistribute it and/or modify it

under the terms of the GNU Lesser General Public License as published by

the Free Software Foundation; either version 2.1 of the License, or

(at your option) any later version.

[Unit]
Description=File System Check on Root Device
Documentation=man:systemd-fsck-root.service(8)
DefaultDependencies=no
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=local-fs.target shutdown.target

ConditionPathIsReadWrite=!/
ConditionPathExists=!/run/initramfs/fsck-root

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-fsck
StandardOutput=journal+console
TimeoutSec=0[/code]

[code]root@desktop:/lib/systemd/system# cat systemd-fsck@.service

This file is part of systemd.

systemd is free software; you can redistribute it and/or modify it

under the terms of the GNU Lesser General Public License as published by

the Free Software Foundation; either version 2.1 of the License, or

(at your option) any later version.

[Unit]
Description=File System Check on %f
Documentation=man:systemd-fsck@.service(8)
DefaultDependencies=no
BindsTo=%i.device
After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-fsck %f
StandardOutput=journal+console
TimeoutSec=0[/code]

NB:
A chaque boot c’est ok sans rien toucher:

[code]root@desktop:/var/run/initramfs# ls -alrt
total 4
-rw-r–r-- 1 root root 0 févr. 14 08:53 fsck-root
-rw-r–r-- 1 root root 194 févr. 14 08:53 fsck.log
drwxr-xr-x 2 root root 80 févr. 14 08:53 .
drwxr-xr-x 25 root root 820 févr. 14 08:54 …
root@desktop:/var/run/initramfs# cat fsck.log
Log of fsck -a -t ext4 /dev/sda1
Sun Feb 14 07:53:10 2016

fsck from util-linux 2.25.2
/dev/sda1: clean, 186955/1831424 files, 1380167/7323904 blocks

Sun Feb 14 07:53:10 2016

[/code] root@desktop:/var/run/initramfs# journalctl -b | grep fsck févr. 14 08:53:18 desktop systemd-fsck[400]: /dev/sda2 : propre, 36795/7938048 fichiers, 5328688/31748096 blocs root@desktop:/var/run/initramfs#

initramfs est à l’heure UTC, il est faut aussi s’assurer que l’horloge fonctionne correctement , j’utilise NTP cf en fin de boot

févr. 14 08:53:31 desktop ntpd[977]: Listen normally on 4 eth0 févr. 14 08:53:31 desktop ntpd[977]: peers refreshed févr. 14 08:53:33 desktop ntpd_intres[999]: DNS ntp1.jussieu.fr -> 134.157.254.19 févr. 14 08:53:33 desktop ntpd_intres[999]: DNS ntp.sophia.cnrs.fr -> 195.220.194.193 févr. 14 08:53:34 desktop ntpd[977]: Listen normally on 5 eth0 févr. 14 08:53:34 desktop ntpd[977]: peers refreshed févr. 14 08:53:35 desktop ntpdate[1148]: the NTP socket is in use, exiting

Je constate quelques incohérences dans les informations fournies par les outils.

Après un arrêt brutal, le serveur a redémarré et effectué un fsck, avec la correction de quelques inodes.
Mais…

[ul][li] /var/log/fsck/checkfs et /var/log/fsck/checkroot indiquent un fsck datant de 2015.[/li]
[li] dumpe2fs -h /dev/sda1 indique que le dernier check à eu lieu en 2014.[/li]
[li] /run/initramfs/fsck.log indique pour sa part le fsck qui vient d’être fait, avec le log des opérations effectuées.[/li]
[li] Pourtant, fsck.mode est sur skip (je voulais constaté la différence)[/li][/ul]

En revérifiant sur une machine qui n’a pas subit de modification:
[ul][li]enable_periodic_fsck à 0 dans /etc/mke2fs.conf[/li]
[li]GRUB_CMDLINE_LINUX vide.[/li]
[li]FSCKFIX inchangé dans /etc/default/rcS[/li]
[li]Maximum mount count à -1 et Check interval à 0 pour sda1[/li][/ul]
J’ai un log dans /run/initramfs/fsck.log indiquant le dernier démarrage. Et effectivement je vois passer fsck.

Il est à noter que je n'ai pas remarqué le passage de fsck avant cela car je suis habitué à un fsck verbeux au démarrage, ce qui ne semble plus être le cas avec systemd...

Donc en fait… Je me retrouve dans la situation inverse de celle qui m’a amené ici. Le système fait un fsck à chaque démarrage!!!
Et avec un fsck.mode=skip, il continue à faire des fsck discret à chaque démarrage…

@avram, j’ai modifié le temps entre 2 vérifications à l’aide de tune2fs, celui-ci se basant manifestement sur les infos qu’on peut lire à l’aide de dumpe2fs il demande un check disk.

J’aurais préféré qu’il le fasse… Plutôt que de le dire…

J’en conclu présentement que le fsck effectué par systemd à l’aide de systemd-fsck@.service échappe à tout contrôle pour le moment. :think:
Y-a-t-il un moyen de démarrer sur sysvinit? Juste le temps d’un check disk maîtrisé sur tout les disques afin de s’assurer de leur intégrité de manière fiable.

J’ai moi même trouvé la réponse à cette question, mais ça peut aider.
J’ai ajouté init=/lib/sysvinit/init à GRUB_CMDLINE_LINUX pour forcer un démarrage avec sysvinit, dés lors cela m’a permis de passer un /forcefsck.
L’information “Last checked” du disque dur est mise à jour et les logs /var/log/fsck/checkroot et /var/log/fsck/checkfs contiennent le log de ce fsck forcé.

Alors c’est plus ou moins réglé. J’arrive à forcer un fsck au moment voulu, mais ça oblige à modifier l’init le temps de la manœuvre. Avec systemd, c’est une autre histoire.

Merci du temps que vous m’avez accordé. :text-thankyouyellow:

Le fsck sur / est géré par initramfs
Pour l’incidence de l’horloge voir ça
lists.debian.org/debian-kernel/ … 00417.html

Et les éventuels soucis quand on fait du dual boot avec windows
generation-nt.com/reponses/s … l#26348768