Openwrt проверка диска на ошибки

This article refers to Smartmontools. You can install it by

opkg update
opkg install smartmontools

To save flash space there is no drivedb included in the OpenWRT package of smartmontools. The automatic update of drive.db described here is missing as well. In case you can affort/waste ~215kB (12-April-2020) you can download the current database from GIT Drivedb.h.
Transfer it via SCP or WinSCP and place it at

mkdir /usr/share/smartmontools
mv drivedb.h /usr/share/smartmontools/drivedb.h

It allows you to monitor the health of an external storage device. This example assumes an SSD mounted at /dev/sda

smartctl -a /dev/sda
 
smartctl 7.0 2018-12-30 r4883 [armv5tel-linux-4.14.162] (localbuild)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Model Family:     Marvell based SanDisk SSDs
Device Model:     SanDisk SSD PLUS 240GB
Serial Number:    1944AA800xxx
LU WWN Device Id: 5 001b44 8b18d5803
Firmware Version: UF2204RL
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3, ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Mon Apr 13 09:28:31 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
...
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       215
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       27
165 Total_Write/Erase_Count 0x0032   100   100   000    Old_age   Always       -       34
166 Min_W/E_Cycle           0x0032   100   100   ---    Old_age   Always       -       1
167 Min_Bad_Block/Die       0x0032   100   100   ---    Old_age   Always       -       10
168 Maximum_Erase_Cycle     0x0032   100   100   ---    Old_age   Always       -       3
169 Total_Bad_Block         0x0032   100   100   ---    Old_age   Always       -       106
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 Avg_Write/Erase_Count   0x0032   100   100   000    Old_age   Always       -       1
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   063   042   000    Old_age   Always       -       37 (Min/Max 15/42)
199 SATA_CRC_Error          0x0032   100   100   ---    Old_age   Always       -       0
230 Perc_Write/Erase_Count  0x0032   100   100   000    Old_age   Always       -       9 20 9
232 Perc_Avail_Resrvd_Space 0x0033   100   100   005    Pre-fail  Always       -       100
233 Total_NAND_Writes_GiB   0x0032   100   100   ---    Old_age   Always       -       136
234 Perc_Write/Erase_Ct_BC  0x0032   100   100   000    Old_age   Always       -       274
241 Total_Writes_GiB        0x0030   100   100   000    Old_age   Offline      -       131
242 Total_Reads_GiB         0x0030   100   100   000    Old_age   Offline      -       190
244 Thermal_Throttle        0x0032   000   100   ---    Old_age   Always       -       0

Permalink

Cannot retrieve contributors at this time


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

#!/bin/sh
# Copyright 2010 Vertical Communications
# Copyright 2012 OpenWrt.org
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
fsck_e2fsck() {
set -o pipefail
e2fsck -p «$device« 2>&1 | logger -t «fstab: e2fsck ($device)«
local status=«$?«
set +o pipefail
case «$status« in
0|1) ;; #success
2) reboot;;
4) echo «e2fsck ($device): Warning! Uncorrected errors.«| logger -t fstab
return 1
;;
*) echo «e2fsck ($device): Error $status. Check not complete.«| logger -t fstab;;
esac
return 0
}
fsck_ext2() {
fsck_e2fsck «$@«
}
fsck_ext3() {
fsck_e2fsck «$@«
}
fsck_ext4() {
fsck_e2fsck «$@«
}
append libmount_known_fsck «ext2«
append libmount_known_fsck «ext3«
append libmount_known_fsck «ext4«


0

1

root@OpenWrt:~# smartctl --device=auto -a /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

/dev/sda: Unknown USB bridge [0x14cd:0x6116 (0x200)]
Smartctl: please specify device type with the -d option.

Use smartctl -h to get a usage summary

hdd — WD5000LPVT SATA-II

Так же если есть возможность узнать температуру другим способом, напишите :)

Super Top generic enclosure Cypress 0x14cd:0x6116 Super Top / USB 2.0 SATA BRIDGE -d usbcypress Linux

использование параметра -d usbcypress ведет к:

root@OpenWrt:~# smartctl -d usbcypress -i /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Smartctl: Device Read Identity Failed (not an ATA/ATAPI device)

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

Но на здоровье диска проверяет, в чем проблема то?


root@OpenWrt:~# smartctl --device=scsi -H /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

SMART Health Status: OK

Использование параметра -T permissive приводит к:

root@OpenWrt:/etc/defconfig# smartctl --device=scsi -i -T permissive /dev/
sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Device: WDC WD50 00LPVX-55V0TT0   Version: 
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
>> Terminate command early due to bad response to IEC mode page

As mentioned previously, I’m a believer in monitoring things closely and another tool that is useful. Some form of filesystem checker which reports changes is useful even if it is only to remind me of changes I’ve made.

Like my mini_logcheck script this also has to be very lightweight and based on standard busybox tools.

How it works

What we do is maintain a database of the filesystem the last time we looked at it. This includes inodes, MD5 checksums, permissions, sizes etc., then on each run we do a diff against the last time, and email that if stuff has changed.

Installation & Configuration

Download mini_fscheck for OpenWrt and ensure you also have the following packages installed:

  • cron — needed to run mini_fscheck
  • mini_sendmail — needed to send emails

Put mini_fscheck somewhere suitable (eg. /usr/sbin though /etc would arguably be OK considering it contains email configuration). You will need to edit the file to set the email configuration appropriately for your needs.

You may also want to modify the find command to include/exclude things that you want to monitor.

If you are using my mini_logcheck then don’t forget to add a rule rule in for running this for crond:

crond[[0-9]+]: USER root pid [0-9]+ cmd /usr/sbin/mini_fscheck$

This will be logged each time the cron runs the script so if you don’t have this you will get an email every time.

Then add a cron entry (create a a new file if needed) in /etc/crontabs/root to run the script:

# m h dom mon dow command
  42 */2 * * * /usr/sbin/mini_fscheck

How often you run the filesystem check is up to you — more often will catch problems earlier but this is fairly CPU and IO intensive and if the rules are not perfect it risks filling your mailbox with messages.

Restart cron to read the new crontab and start things off:

# /etc/init.d/cron restart

Then each time the script runs it should email you any new log lines which are not excluded by the patterns on the find lines.

The first run should email you about generating the databases, and after that you should get diffs of the files that change.

Описание часто используемых команд в OpenWrt linux:

echo — Вывод текста или значений переменных
uname -a — Показать версию ядра Linux;
cat /proc/cpuinfo — Показать информацию о железе
cat /proc/meminfo — Показать расширенную информацию о занимаемой оперативной памяти
ls /dev — Показать все устройства в системе
id — Показывает сводную информацию по текущему пользователю (логин, UID, GID)
cat — Просмотр содержимого файла
strings — Поиск текстовых строк в файле
cut — Удаление определённых секций из каждой строки файла
grep — Поиск подстрок в файлах

ps — Список запущенных процессов
killall имя прцесса — Убить процесс по названию
free — Информации об использовании памяти
fdisk -l Информация о всех подключенных дисках;
blkid — Выводит UUID информацию всех доступных накопителей в системе;
df Показывает свободное и занятое место в разделах;
mkfs.ext4 /dev/sda1 — Форматирует диск sda1 в FS ext4
mount /dev/sda1 /mnt — Монтирует раздел /dev/sda1 к точке монтирования /mnt;
mount — Показывает полную информацию о примонтированных устройствах;
umount /mnt — Отмонтирует раздел от точки монтирования /mnt;
clear — Очистить окно терминала;
reboot — Перезагрузить устройство;
exit — Завершить сеанс;
sleep 10 — Пауза 10 сек
passwd — Меняет пароль текущего пользователя;
date — Показывает текущую дату и время;
pwd — Показывает текущий путь;
ls — Показывает список файлов и каталогов в текущей папке;
mkdir /test — Создание папки с именем test;
rmdir /test — Удаление папки с именем test;
rm -i stats.gif — Удаление файла с именем stats.gif;
touch /tmp/myfile.txt — Создать фаил
chmod 777 /tmp/myfile.txt — Изменить права доступа к файлу
find — Поиск файлов или каталогов find / -name ‘*fil*’ -print
mv — Перемещение и переименовывание файлов
cd /tmp — Перейти в указанную папку;
wget htp://cyber-place.ru/images/misc/stats.gif — Скачать файл в текущую папку
chgrp — Смена группы
chown — Смена владельца файла или каталога
cp — Копирование файлов и каталогов (синтаксис : cp что куда )

stty -F /dev/ttyATH0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts — Изменить параметры UART порта

opkg update – обновляет список пакетов (загружая его из репозитория, указанных в конфигурационном файле);
opkg upgrade – обновляет все установленные пакеты;
opkg install <имя_пакета> – устанавливает пакет (в качестве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);
opkg remove <имя_пакета|регулярно� �_выражение> – удаляет один или несколько пакетов;
opkg list – выводит на экран полный список пакетов;
opkg list-installed – выводит на экран список установленных пакетов.

cat /home/primer- Показать содержимое файла /home/primer ;
vi /folder/filename — открыть файл в редакторе vi

i — включить режим редактирования
[Esc] — выйти из режима редактирования

u — undo (отмена)
CTRL + R — redo

:w [Enter] — сохранить внесенные изменения.

:q [Enter] — выйти без сохранения изменений
:wq [Enter] — сохранить внесенные изменения и выйти.

dd — удалет строку на которой находится курсор
x — удалет символ на котором находится курсов

[y] — копирует строку в буфер
[P] — вставляет скопированную строку после той, на которой в текущий момент находится курсор

echo $REMOTE_ADDR — Посмотреть Ваш IP

Понравилась статья? Поделить с друзьями:
  • Openvpn ошибка установки
  • Openvpn ошибка сертификата
  • Openvpn ошибка при подключении
  • Openvpn ошибка аутентификации
  • Openvpn ошибка tls