Effectuer un check fsck sur un disque système

Il arrive parfois que des erreurs soient présentes sur le système de fichier du disque système de votre serveur l'empêchant de fonctionner correctement.

Dans ce cas là, la seule solution est d'effectuer une vérification du système de fichier afin de - peut-être - réparer les erreurs sur le système de fichier.

Le fsck sur un disque doit se faire lorsque celui-ci n'est pas monté ou bien en read-only (lecture seule) sans quoi le risque de perte de données sera très important ! Vérifiez toujours que l'état du disque avant de lancer la vérification et soyez attentif aux éventuels alertes renvoyés par fsck

Il y a deux manière de procéder à la vérification du disque système en fonction de si vous avez accès ou non au shell sur le serveur :

Dans quel cas suivre cette procédure ?

Vous pouvez accéder à un shell pour exécuter des commandes

Si vous parvenez à vous logguer sur votre serveur et accéder à un shell, vous pourrez alors effectuer la vérification sur le disque directement sur le serveur.

Passer le disque en Read-Only

Pour cela, il sera nécessaire de passer le disque système en read-only avec la commande suivante :

# mount -o remount,ro /

Si un message vous indique 'mount: / is busy', cela signifie que le disque est utilisé par certains programmes. Il faudra donc stopper / killer les programmes ayant w/u sur /. La commande 'lsof /' vous permettra de visualiser cela :

# lsof /
COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
rsyslogd   1237       root    3u   REG  202,1  3762377   3544 /var/log/syslog
rsyslogd   1237       root    5w   REG  202,1    29569  25879 /var/log/messages
rsyslogd   1237       root    6w   REG  202,1  2217748  25872 /var/log/auth.log
rsyslogd   1237       root    7w   REG  202,1 36729452  17350 /var/log/daemon.log
rsyslogd   1237       root    9w   REG  202,1   978650  25878 /var/log/user.log
rsyslogd   1237       root   10w   REG  202,1     8108  12417 /var/log/kern.log

Dans le cas ci-dessus, on peut voir que rsyslogd utilise le disque système en écriture, il suffit alors de stopper / killer 'rsyslogd'. Il faudra en faire de même pour les autres process ayant 'w/u' sur '/'.

Puis vérifiez si le disque à bien été monté en ro avec la commande 'mount' :

# mount
/dev/xvda1 on / type ext4 (ro,noatime,errors=remount-ro)

Procéder au fsck

Pour effectuer le fsck sur le disque, tapez alors la commande :

# fsck -f /dev/xvda1
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
DEBIAN7_64: 32869/196608 files (0.2% non-contiguous), 274868/786432 blocks

Le shell est inaccessible sur le serveur

Dans le cas où le shell n'est pas accessible sur votre serveur, alors il faudra nécessairement effectuer la vérification du disque sur un autre serveur Gandi. En effet, il s'agit de l'un des atouts de la virtualisation, qui vous permet d'attacher un disque d'un serveur à un autre serveur.

Tout d'abord, créez un nouveau serveur (en mode Expert) dans la distribution de votre choix. La création du serveur prendra seulement quelques minutes.

Une fois le nouveau serveur crée, arrêter le serveur sur lequel le disque système présente des erreurs, puis détachez le disque système et rattachez le sur le nouveau serveur. Référez vous à la page sur la gestion des disques pour plus d'informations : Attacher un disque à un serveur

Démontage du disque système attaché au nouveau serveur

Lors de l'attachement du disque système à vérifier sur le nouveau serveur, le disque devrait être monté automatiquement. Vous pouvez le vérifier avec la commande 'mount' :

# mount
/dev/xvda1 on / type ext4 (rw,noatime,errors=remount-ro)
/dev/xvdk on /srv/DEBIAN7_64 type ext4 (rw,nosuid,nodev,noatime)

Dans le cas ci-dessus, le disque système à vérifier à le label 'DEBIAN7_64'. Pour le démonter tapez la commande :

# umount /srv/label_du_disque

Effectuer le check fsck

Une fois le disque démonté, vous pouvez alors procéder à la vérification sur le disque avec la commande 'fsck -f /dev/xvdX' (où X correspond au disque à vérifier) :

# fsck -f /dev/xvdk
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
DEBIAN7_64: 32869/196608 files (0.2% non-contiguous), 274868/786432 blocks
Dernière modification: le 22/07/2014 à 16:59 par William D. (Gandi)