Le serveur ne semble plus fonctionner la nuit

Demande d'aide : c'est ici.
Répondre
michel_martin
Messages : 5
Inscription : 27 déc. 2024, 10:28
Status : Hors-ligne

Bonjour à vous,

J'ai un serveur de fichier sous Debian depuis quelques années.
J'utilise pour ça samba, mdadm et smartmontools.
Étant sous Debian 10 j'ai décidé de le réinstaller sous Debian 12.
Je ne suis pas très rigoureux pour la gestion de ce serveur dans le sens où j'éteins régulièrement le serveur quand je n'en ai pas besoin.
Donc la vérification des disques durs se font tous les soirs à 2h du matin et donc uniquement lorsque celui ci est en fonctionnement.

Depuis la nouvelle installation de Debian ça ne marche plus.
J'ai essayé plein de réglage différent mais ça ne marche plus donc j'ai opté pour un script simple avec la commande du test planifié avec cron.

Ça marche sur le coup donc je replanifie ce script la nuit (2h du mat) et ça ne marche plus.
J'ai un script qui se lance au démarrage (et qui marche) et qui me permets d'avoir le résultat de mes test de mes HDD.
Donc je l'ajoute à cron.

et là je peux voir :

Code : Tout sélectionner

=======================================================
Mise à jour

/root/action-a-faire.sh: ligne 8: ntpdate : commande introuvable
le 2024-12-27 03:00:11
=======================================================

mdadm -D /dev/md0
/root/action-a-faire.sh: ligne 20: mdadm : commande introuvable
=======================================================

smartctl -l selftest /dev/sda
/root/action-a-faire.sh: ligne 25: smartctl : commande introuvable

smartctl -l selftest /dev/sdb
/root/action-a-faire.sh: ligne 27: smartctl : commande introuvable
J'ai pensé à une veille mais j'en ai compris que non à moins de mal avoir interprété ça :

Code : Tout sélectionner

○ suspend-then-hibernate.target - Suspend; Hibernate if not used for a period of time 
	Loaded: loaded (/lib/systemd/system/suspend-then-hibernate.target; static)
	Active: inactive (dead) Docs: man:systemd.special(7) 
○ sleep.target - Sleep 
	Loaded: loaded (/lib/systemd/system/sleep.target; static) 
	Active: inactive (dead) Docs: man:systemd.special(7) 
○ suspend.target - Suspend 
	Loaded: loaded (/lib/systemd/system/suspend.target; static) 
	Active: inactive (dead) Docs: man:systemd.special(7) 
○ hibernate.target - System Hibernation 
	Loaded: loaded (/lib/systemd/system/hibernate.target; static) 
	Active: inactive (dead) Docs: man:systemd.special(7) 
○ hybrid-sleep.target - Hybrid Suspend+Hibernate 
	Loaded: loaded (/lib/systemd/system/hybrid-sleep.target; static) 
	Active: inactive (dead) Docs: man:systemd.special(7)
Qu'en pensez-vous ?
Avatar de l’utilisateur
zargos
Membre
Membre
Messages : 197
Inscription : 07 juil. 2023, 13:34
Status : Hors-ligne

Bonjour,

Il faut modifier ton script qui n'est pas adapté à Debian 12:
  • ntpdate n'est pas installé. Par défaut Debian 12 utilise systemd-timesyncd.
  • mdadm n'est présent que pour le RAID, si tu n'as pas de raid alors tu n'as pas la commande mdadm d'installé. Fait un

    Code : Tout sélectionner

    dpkg -s mdadm
    pour vérifier. S'il est bien présent c'est que ton script n'utilise pas le chemin complet (il faut toujours utiliser le chemin complet) ou bien il n'est pas lancé dans le bon environnement.
  • Pour smartctl même punition que pour mdadm:

    Code : Tout sélectionner

    dpkg -s smartmontools
Pour l'histoire de la veille, et d'une façon générale quand tu donnes un résultat, pense à mettre aussi la commande que tu as utilisé.
michel_martin
Messages : 5
Inscription : 27 déc. 2024, 10:28
Status : Hors-ligne

Bonjour Zargos,

Pour rappel le script marche correctement automatiquement à chaque démarrage.
Ntpdate, mdadm et smartmontools sont bien installés et fonctionnent sans problème (le jour).
Les 2 services de smartmontools sont bien chargés et activés mais ils ne fonctionnent pas la nuit d'où mon passage à cron.

J'ai dû créer ce serveur avec Debian 8 et à chaque évolution de Debian je réinstalle tout comme d'habitude sans profiter des nouveautés.
Voilà pourquoi j'utilise encore ntpdate parce que je n'ai pas encore pris le temps d'évoluer. :blush:

Pour la veille le résultat affiché était à partir de cette commande

Code : Tout sélectionner

 systemctl status suspend-then-hibernate.target sleep.target suspend.target hibernate.target hybrid-sleep.target 
Est-ce que Debian 12 prends plus en compte les réglages d'un bios que la version 10 ? D'où cette apparente veille matériel ?
michel_martin
Messages : 5
Inscription : 27 déc. 2024, 10:28
Status : Hors-ligne

Voici les informations demandées :

Code : Tout sélectionner

dpkg -s mdadm

Package: mdadm
Status: install ok installed
Priority: optional
Section: admin
Installed-Size: 1236
Maintainer: Daniel Baumann <daniel.baumann@progress-linux.org>
Architecture: amd64
Version: 4.2-5
Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libudev1 (>= 183), debconf, lsb-base, udev
Pre-Depends: init-system-helpers (>= 1.54~)
Recommends: default-mta | mail-transport-agent, kmod | module-init-tools
Suggests: dracut-core
Conffiles:
 /etc/cron.d/mdadm e2384a232bdaaf9ec65173d5282e40fe
 /etc/cron.daily/mdadm 487494f679bd1417e85336baf93aa890
 /etc/init.d/mdadm efc6265fbfed68898f122344143747f9
 /etc/init.d/mdadm-waitidle 0d575d4210d6927d4f674ec7c2abbd30
 /etc/logcheck/ignore.d.server/mdadm 5eeaf5c5c7dc0291a986e43004dfd495
 /etc/logcheck/violations.d/mdadm efd87cec251921ce0642171eae5f3b73
 /etc/modprobe.d/mdadm.conf d3be82c0f275d6c25b04d388baf9e836
Description: Tool to administer Linux MD arrays (software RAID)
 The mdadm utility can be used to create, manage, and monitor MD
 (multi-disk) arrays for software RAID or multipath I/O.
 .
 This package automatically configures mdadm to assemble arrays during the
 system startup process. If not needed, this functionality can be disabled.
Homepage: https://raid.wiki.kernel.org/index.php/Linux_Raid

Code : Tout sélectionner

dpkg -s smartmontools

Package: smartmontools
Status: install ok installed
Priority: optional
Section: utils
Installed-Size: 2199
Maintainer: Dmitry Smirnov <onlyjob@debian.org>
Architecture: amd64
Source: smartmontools (7.3-1)
Version: 7.3-1+b1
Depends: debianutils (>= 2.2), lsb-base (>= 3.2-14), libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libgcc-s1 (>= 3.0), libselinux1 (>= 3.1~), libstdc++6 (>= 11), libsystemd0
Suggests: gsmartcontrol, smart-notifier, mailx | mailutils, curl | wget | lynx, gpg
Conflicts: smartsuite, ucsc-smartsuite
Conffiles:
 /etc/default/smartmontools 618f0c8e227d548c67eb09cfead5fd55
 /etc/init.d/smartmontools adb3ef22d28d58271e83afd120df6bce
 /etc/smartd.conf 30b0b5bf920f5fbea63a22b4ca557f2a
 /etc/smartmontools/run.d/10mail 07e70aa86dcab3b2c7205254e3e942e2
Description: control and monitor storage systems using S.M.A.R.T.
 The smartmontools package contains two utility programs (smartctl and smartd)
 to control and monitor storage systems using the Self-Monitoring, Analysis and
 Reporting Technology System (S.M.A.R.T.) built into most modern ATA and SCSI
 hard disks. It is derived from the smartsuite package, and includes support
 for ATA/ATAPI-5 disks. It should run on any modern Linux system.
Avatar de l’utilisateur
zargos
Membre
Membre
Messages : 197
Inscription : 07 juil. 2023, 13:34
Status : Hors-ligne

comment lances-tu ton script la nuit?

Depuis Debian 10 l'architecture a pas mal évolué, donc si tu ne met pas à jour tes scripts en fonction des évolutions, tu peux avoir des erreurs.
michel_martin
Messages : 5
Inscription : 27 déc. 2024, 10:28
Status : Hors-ligne

Bonjour Zargos,

avec

Code : Tout sélectionner

crontab -e
j'ai ajouté

Code : Tout sélectionner

0 1 0 0 0 /root/hdd-monitor.sh
0 3 0 0 0 /root/action-a-faire.sh
Sachant que le script "action-a-faire.sh" se lance au démarrage via un service mis en place avec systemctl et qu'il marche bien à chaque fois.
Et hdd-monitor.sh fonctionne bien au lancement manuel.

Debian est sur un disque nvme.
Avatar de l’utilisateur
franb
Membre
Membre
Messages : 139
Inscription : 04 nov. 2017, 09:41
Status : Hors-ligne

Une des différences entre les taches executées par cron et celles lancées à la main est l'environnement. Vérifie les variables d'environnement notamment le PATH. Eventuellement met le chemin en dur dans ton script.
michel_martin
Messages : 5
Inscription : 27 déc. 2024, 10:28
Status : Hors-ligne

Bonjour à vous,

En suivant vos conseils j'ai mis à jour mon script en indiquant les chemins absolus des programmes appelés (dans le genre /bin/cut ou /sbin/smartctl).

Et ça marche.

Je vous remercie.

Petite question subsidiaire :
Devrai-je ajouter un truc du genre (code ci-dessous) au début du script pour ne pas avoir à indiquer le chemin complet d'un programme ?

Code : Tout sélectionner

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Avatar de l’utilisateur
franb
Membre
Membre
Messages : 139
Inscription : 04 nov. 2017, 09:41
Status : Hors-ligne

Usuellement, on le met en entête des fichiers crontab pour que ça s'applique à tous les scripts. Tu rajoutes ta ligne au début de ta crontab
Répondre