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
#!/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