Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2018-01-09 12:01:32

  jacek22 - Użytkownik

jacek22
Użytkownik
Zarejestrowany: 2017-12-13

analiza dysku

witam, korzystam z narzędzia smartctl - w jaki sposób sprawdzić mogę czy dysk nadaje sie do uzytku albo nie jest ostro zajechany i zaraz moze odleciec w kosmos?

na które parametry powinienem zwrócić uwage?

chce napisac skrypt w bashu do automatycznego wykrywania takiego dysku w ramach nauki ale nie wiem, które parametry powinny zostac wziete pod uwage i w jaki wartosciach najlepiej

Offline

 

#2  2018-01-09 13:49:13

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: analiza dysku

np tak:

Kod:

# G1 ###   wto sty 09 13:42:39  domek : ~ 
root ~> smartcheck

/dev/sda - Model: Seagate Barracuda ES
/dev/sda - Symbol: ST3400620NS
/dev/sda - Seria: 9QH0BX9K
/dev/sda: Power_On_Hours = 38930
/dev/sda: Reallocated_Sector_Ct = 0
/dev/sda: Spin_Retry_Count = 0
/dev/sda: Reported_Uncorrect = 0
/dev/sda: Current_Pending_Sector = 0
/dev/sda: Offline_Uncorrectable = 0
/dev/sda: UDMA_CRC_Error_Count = 0
/dev/sda: Multi_Zone_Error_Rate = 0

Skrypcio wygląda tak:

Kod:

#!/bin/bash
#

SMARTCTL=`which smartctl 2>/dev/null`

if [ -z $SMARTCTL ] || [ ! -x $SMARTCTL ]; then
 echo "It seems you have no smartmontools installed. "
 echo "Invoke 'apt install smartmontools' and re-run script"
 exit 1
fi

function check {
tmp_parm=`mktemp`
tmp_name=`mktemp`
$SMARTCTL -A $1 | sed -r 's/^\s+//g' > $tmp_parm
$SMARTCTL -i $1| sed -r 's/^\s+//g' > $tmp_name

echo -e $1 - `egrep -m1 "Model " $tmp_name | awk '{$1="";$2=""; print  "Model:   "$0}'`
echo -e $1 - `egrep -m1 "Device " $tmp_name | awk '{$1="";$2=""; print "Symbol:  "$0}'`
echo -e $1 - `egrep -m1 "Serial " $tmp_name | awk '{$1="";$2=""; print "Seria:   "$0}'`

for val in 9 5 10 11 171 172 177 181 187 188 196 197 198 199 200 231 ; do
 print=`egrep "^$val " $tmp_parm | awk '{ print $2" = "$10 }'`
  if [ ! -z "$print" ]; then
   echo -n "$1: "
  if  [[ `echo $print | grep "Power_On_Hours" ` ]]; then
   echo -e "\033[36;2m$print\033[0m"
  elif [ `echo $print | awk '{ print $3 }'` != 0 ]; then
   echo -e "\033[31;2m$print\033[0m"
  else
   echo -e "\033[32;2m$print\033[0m"
  fi
 fi
done

echo


rm -f $tmp_parm
rm -r $tmp_name

}

if [ $# -gt 0 ]; then
 devices=$@
else
 devices=`ls /dev/sd[a-z] 2>/dev/null ; ls /dev/nvme[0-9]n[0-9] 2>/dev/null`
fi

echo
if [ -b /dev/twe0 ]; then
 check "-d 3ware,0 /dev/twe0"
 check "-d 3ware,1 /dev/twe0"
else
 for d in $devices; do
  check $d
 done
fi

Poza tym skonfiguruj sobie dostarczanie maili systemowych do skrzynki (np przez ESMTP), skonfiguruj demona [b]smartd[/b], żeby pilnował parametrów dysków,
w razie problemów dostaniesz eleganckiego maila z informacją.

Sznurki:
https://wiki.archlinux.org/index.php/S.M.A.R.T.#daemon_management
https://www.techrepublic.com/blog/linux-and-open-source/send-mail-with-esmtp-for-a-simple-single-user-system/

Ja np mam tak ustawione:

Kod:

 cat /etc/smartd.conf

Kod:

DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,35,48  -m root
/dev/sda -H -l error -l selftest -t -I 194-W 4,40,48 -R 5 -m root

Gdzie parametr  [b]-m root[/b] oznacza, gdzie ma posłać pocztę (adres email lub nazwa użytkownika (p ile masz ustawione aliansy pocztowe)).

Pozdro

Ostatnio edytowany przez Jacekalex (2018-01-09 13:56:44)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2018-01-09 14:09:28

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: analiza dysku

Ale kombinujecie. xD

Demon smart potrafi sam wykrywać takie "padające w niedługim czasie" dyski i wysyła odpowiedni komunikat w logu systemowym. Praktycznie można sobie monitorować każdy z parametrów i jak te będą ulegać zmianie, to w logu będzie stosowna informacja, np:

Kod:

Jan 07 18:11:31 morfikownia smartd[1286]: Device: /dev/sda [SAT], SMART Prefailure Attribute: 3 Spin_Up_Time changed from 142 to 141
Jan 08 10:54:23 morfikownia smartd[1286]: Device: /dev/sda [SAT], SMART Prefailure Attribute: 3 Spin_Up_Time changed from 141 to 142
Jan 08 18:49:01 morfikownia smartd[1286]: Device: /dev/sda [SAT], SMART Prefailure Attribute: 3 Spin_Up_Time changed from 142 to 141

A wszystko można se ustawić w /etc/smartd.conf . Ja mam tam taką linijkę:

Kod:

/dev/sda -H -l error -l selftest -t -I 190 -I 194 -W 0,50,55

No i ona:
- włącza monitoring dysku /dev/sda
- sprawdza status żywotności dysku
- sprawdza liczbę błędów dysku
- sprawdza ilość błędnych testów
- monitoruje zmiany we wszystkich atrybutach dysku
- ignoruje zmiany w prametrach 190 i 194, które w przypadku mojego dysku odpowiadają za temperaturę.
- wypisuje log z informacją jedynie w przypadku gdy temperatura dysku przekroczy 50 stopni, a gdy przekroczy 55 to wysyła maila na konto root.

Ta konfiguracja może być rozbudowana jak cholera wliczając w to również automatyczne przeprowadzanie testów co jakiś czas. Więcej info jest w

Kod:

$ man smartd.conf

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00009 SET NAMES latin2
0.00117 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.148.108.201' WHERE u.id=1
0.00073 UPDATE punbb_online SET logged=1732684222 WHERE ident='3.148.108.201'
0.00101 SELECT * FROM punbb_online WHERE logged<1732683922
0.00079 SELECT topic_id FROM punbb_posts WHERE id=316684
0.00104 SELECT id FROM punbb_posts WHERE topic_id=30183 ORDER BY posted
0.00094 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30183 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00091 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30183 ORDER BY p.id LIMIT 0,25
0.00081 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30183
Total query time: 0.00766 s