Warum meldet ZFS die Festplatte nicht als degradiert?

Warum meldet ZFS die Festplatte nicht als degradiert?

SMART hat auf einer meiner Festplatten einen nicht behebbaren Lesefehler festgestellt, zpool statuslistet aber alle Festplatten als ONLINE auf (d. h. nicht DEGRADED).

  1. Wissen Sie, woran das liegen könnte? Ich dachte, ZFS würde über alle Fehler sofort informiert, sobald jemand davon erfährt ...
  2. Muss ich einen Scrub ausführen, um den Status aller Datenträger erneut zu prüfen?
  3. Kann ich SMART irgendwie automatisch an ZFS berichten lassen?

Antwort1

  1. Wissen Sie, woran das liegen könnte? Ich dachte, ZFS würde über alle Fehler sofort informiert, sobald jemand davon erfährt ...
  2. Muss ich einen Scrub ausführen, um den Status aller Datenträger erneut zu prüfen?
  3. Kann ich SMART irgendwie automatisch an ZFS berichten lassen?
  1. Nein, es prüft nicht ständig alle Blöcke, es stellt nur sicher, dass jeder geschriebene Block berücksichtigt (und wiederhergestellt, wenn Redundanz vorhanden ist) werden kann, sobald er benötigt/auf ihn zugegriffen wird. Leerer Speicherplatz wird überhaupt nicht geprüft (weil Sie dort keine wertvollen Daten haben, es wäre also Zeitverschwendung) und normale Daten werden nur geprüft, wenn sie gelesen werden (da das Schreiben nur angehängt werden kann). Wie mmusante richtig sagte, erhalten Sie nur Fehlermeldungen, wenn der Fehler kritisch ist und nicht automatisch behoben werden kann (sonst sehen Sie nur eine Benachrichtigung und die Fehlerzählung erfolgt zpool status).
  2. Ja.
  3. Es kann einfacher sein, den Pool regelmäßig (über Cronjob) zu bereinigen. Die empfohlenen Intervalle sind etwa einmal im Monat für Festplatten in Unternehmensqualität und einmal pro Woche für Festplatten auf Verbraucherebene. Andernfalls können Sie ein manuelles Bereinigen mit einemSkript von Smartmontools:

    Meistens müssen Sie nur ein Skript in /etc/smartmontools/run.d/ platzieren. Immer wenn smartd einen Bericht senden möchte, führt es smart-runner aus und dieser führt Ihr Skript aus.

    Für Ihr Skript stehen Ihnen mehrere Variablen zur Verfügung (siehe auch hier die Manpage von smartd). Diese stammen aus einem Testlauf:

    SMARTD_MAILER=/usr/share/smartmontools/smartd-runner
    SMARTD_SUBJECT=SMART error (EmailTest) detected on host: XXXXX
    SMARTD_ADDRESS=root
    SMARTD_TFIRSTEPOCH=1267409738
    SMARTD_FAILTYPE=EmailTest
    SMARTD_TFIRST=Sun Feb 28 21:45:38 2010 VET
    SMARTD_DEVICE=/dev/sda
    SMARTD_DEVICETYPE=sat
    SMARTD_DEVICESTRING=/dev/sda
    SMARTD_FULLMESSAGE=This email was generated by the smartd daemon running on:
    SMARTD_MESSAGE=TEST EMAIL from smartd for device: /dev/sda
    

    Ihr Skript stellt auch eine temporäre Kopie des Berichts als „$1“ zur Verfügung. Diese wird nach Abschluss gelöscht, aber derselbe Inhalt wird in /var/log/syslog geschrieben.

    Sie müssen dann nur den Gerätenamen Ihrem Pool zuordnen (Sie können ihn analysieren zpool status).

verwandte Informationen