Как я могу препятствовать тому, чтобы smartd сообщил, что не может найти диск?

Я нашел путь. Я использовал статистику GNU (stat (GNU coreutils) 8.19) для рассмотрения "Доступа" "Измените" и метки времени "Изменения" файла.

Я мог обновить время "Изменения" путем выполнения a chmod u+x на файле. "Измените" и метки времени "Доступа" остались тем же.

Я мог обновить файл "Доступа" путем выполнения a cat на нем. "Измените" и метки времени "Изменения" остались тем же.

Я записал маленькую программу C, которая просто делает open(filename, O_WRONLY);, пишет единственный байт в дескриптор файла, и затем a close(filedes); на получающемся дескрипторе файла. stat не показал изменения на метке времени "Доступа" подчиненного файла, но "Измените", и метки времени "Изменения" были обновлены.

Это было всем в соответствии с Linux 3.5.4, справедливо недавно Дуга обновления ноутбук Linux, в файловой системе Ext4.

Маленькая программа C:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int
main(int ac, char **av)
{
        int fd = open(av[1], O_WRONLY);
        if (fd >= 0)
        {
                char buf[12];
                write(fd, buf, 1);
                if (close(fd) < 0)
                        fprintf(stderr, "Problem closing file: %s\n",
                                strerror(errno));
        } else {
                fprintf(stderr, "Problem opening \"%s\": %s\n",
                        av[1], strerror(errno));
        }
        return 0;
}
7
27.04.2016, 20:39
4 ответа

Я испытывал ту же проблему, таким образом, я провел некоторое исследование. Я нашел это:

/etc/smartd.conf

# smartd will re-read the configuration file if it receives a HUP
# signal

# The file gives a list of devices to monitor using smartd, with one
# device per line. Text after a hash (#) is ignored, and you may use
# spaces and tabs for white space. You may use '\' to continue lines.

# You can usually identify which hard disks are on your system by
# looking in /proc/ide and in /proc/scsi.

# The word DEVICESCAN will cause any remaining lines in this
# configuration file to be ignored: it tells smartd to scan for all
# ATA and SCSI devices.  DEVICESCAN may be followed by any of the
# Directives listed below, which will be applied to all devices that
# are found.  Most users should comment out DEVICESCAN and explicitly
# list the devices that they wish to monitor.

Я предполагаю что, не регистрируя диск от ядра через

root@localhost# echo 1 > /sys/block/sdX/device/delete

затем удаляя запись устройства из/etc/smartd.conf,

затем выполнение "sudo сервис smartmontools перезапуск" устранит Вашу проблему, и smartd прекратит сообщать о недостающем диске.

5
27.01.2020, 20:17
  • 1
    +1, но я предпочел бы универсальное решение только проигнорировать удаление дисков в целом. Предпочтительно, это работало бы автоматически на все диски и также все еще просканировало бы диски для других проблем. –  Sparhawk 03.03.2014, 07:47
  • 2
    smartd является открытым исходным кодом, я уверен, реализовали ли Вы такое решение затем, Вы могли бы продвинуть его в восходящем направлении –  Ace 05.09.2014, 20:09
  • 3
    Развертывания Redhat Да, я знаю это, но я должен все еще найти решение, которое делает то, что я хочу. –  Sparhawk 06.09.2014, 03:24

Вы можете вызвать Smartd в , только отслеживает определенный набор устройств, явно перечислив эти устройства в /etc/smartd.conf, а не используя Устройстваsan ключевое слово.

Итак, для того, чтобы только монитор / dev / sda и / dev / sdb вы бы удалили с вашего smartd.conf:

DEVICESCAN -m root -M exec /usr/share/smartmontools/smartd-runner

и вместо этого добавьте:

/dev/sda -m root -M exec /usr/share/smartmontools/smartd-runner
/dev/sdb -m root -M exec /usr/share/smartmontools/smartd-runner

, затем перезагрузите демон Smartd.

Основным недостатком этого подхода является то, что вам нужно перечислить каждый диск индивидуально в конфигурации. По крайней мере, только с двумя дисками, это не слишком много хлопот.

3
27.01.2020, 20:17

В моем случае после замены неисправного жесткого диска помогает просто удалить csv и перезапустить службу:

sudo systemctl stop smartmontools
sudo killall smartd
cd /var/lib/smartmontools
sudo rm attrlog.WDC_WD5000LPLX_00ZNTT0-WD_SERIAL_NUMBER.ata.csv
sudo rm smartd.WDC_WD5000LPLX_00ZNTT0-WD_SERIAL_NUMBER.ata.state
sudo rm smartd.WDC_WD5000LPLX_00ZNTT0-WD_SERIAL_NUMBER.ata.state~
sudo systemctl start smartmontools

Мой smartd.conf

DEVICESCAN -H -l error -l selftest -f -s (O/../.././14|L/../.././15|C/../.././17) -m admin@example.com -M exec /usr/share/smartmontools/smartd-runner

Мой /etc/smartmontools/run.d/10s -гвоздь

#!/bin/bash -e

# Send mail if /usr/bin/s-nail exists
if ! [ -x /usr/bin/s-nail ]; then
  echo "Your system does not have /usr/bin/s-nail. Install the s-nail package" 
  exit 1
fi

# $1 - body file
# $2 - "-s"
# $3 - subject
# $4 - admin email

/usr/bin/s-nail -q $1 -s "$3" -S smtp=smtp://192.168.1.11 -S from="SERVER_NAME S.M.A.R.Td <servername@example.com>" $4
1
27.01.2020, 20:17

Возможно, решено добавлением -d removableв DEVICESCAN, вот так:

DEVICESCAN -d removable -m root -M exec /usr/share/smartmontools/smartd-runner
0
27.01.2020, 20:17

Теги

Похожие вопросы