Много много букавак….
Все мы знаем, что есть админы, которые не делают бэкапы, и кто уже делает бэкапы…
Я вот непонятно кто, есть у меня сервер со злым рейдом на 4 порта, исторически сложилось, что на нём 2 зеркальных массива.
2х500 и 2х1500гб
И посетило меня чудо-юдо..
один винт из зеркального рейда пошёл в мир иной, точнее как пошёл, из одной папки пропала вся инфа, я подумал, что юзеры удалили попытался туда вернуть файлы из бэкапа, но убунта мне сказала что они уже там лежат.
вот весело, идём в /var/log/messages а там мама дорогая наш 3ware материться как может, что не получается у него чтение с массива…. перезагружаю сервер, вроде всё нормально, данные появились. ну думаю показалось дальше покуриваю логи, но всё повторяется через пол часа, понимаю, что дело хуже чем кажется, сервер у меня великой фирмы HP с великой штуковиной iLO
Зацепился и перезагружаю сервер и мне 3ware намекает мол браток винт с номером 3 fail!
Ну думаю ясно, бегу в магазин за винтом на 1.5Тб включаю назад рейду говорю, что хочу вот сюда всё скопировать, рейд говорит окей и затихает, система грузится дальше, винта не вижу..
начал гуглить как общаться с этим рейдом из консоли.
оказалось всё просто.
Утилита крутая, можно ей вносить новые винты делать REBUILD
[cc lang=”bash”]
# ./tw_cli
//SERVER> info
Ctl Model (V)Ports Drives Units NotOpt RRate VRate BBU
————————————————————————
c0 9650SE-4LPML 4 4 2 0 1 1 –
[/cc]
так нам сказали что массив звать c0 (бывает ещё показывает c4 например)
дальше смотрим что у нас в этом рейде
[cc lang=”bash”]
//SERVER> info c0
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy
——————————————————————————
u0 RAID-1 OK – – – 465.651 ON OFF
u1 RAID-1 OK – – – 1396.97 ON OFF
Port Status Unit Size Blocks Serial
—————————————————————
p0 OK u0 465.76 GB 976773168 9QM031A0
p1 OK u0 465.76 GB 976773168 9QM05Y63
p2 OK u1 1.36 TB 2930277168 9VS0N8FE
p3 OK u1 1.36 TB 2930277168 S1XWJ9CZB00472
[/cc]
В общем прога умная, целых 180 страниц на неё мануал.
идём дальше.
на 90% ребилда возникла ошибка, тут становится яснее глубина проблемы.
Ладно, отключаем проверку ошибок и продолжаем ребилд… пока идёт ребилд, мы почитаем SMART
тут показывает, что всё ок с диском, но давайте посмотрим S.M.A.R.T.
Долго я игрался с параметрами smarttools чтоб считать параметры с этого массива
Но остановился вот на чём.
[cc lang=”bash”]
smartctl -d 3ware,2 -a /dev/twa0
_______________^[/cc]
где 2 это номер порта на контроллере. (у меня их от 0 до 3х)
Посмотрим что говорит наш винт. (Привожу полный лог для истории, для себя.)
[cc lang=”bash”]# smartctl -d 3ware,2 -a /dev/twa0
smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Device Model: ST31500341AS
Serial Number: 9VS0N8FE
Firmware Version: CC1G
User Capacity: 1 500 301 910 016 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Not recognized. Minor revision code: 0x29
Local Time is: Tue Mar 15 20:48:20 2011 KRAT
SMART support is: Available – device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 617) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 119 099 006 Pre-fail Always – 229705477
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always – 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always – 33
5 Reallocated_Sector_Ct 0x0033 097 097 036 Pre-fail Always – 131
7 Seek_Error_Rate 0x000f 077 060 030 Pre-fail Always – 56935472
9 Power_On_Hours 0x0032 080 080 000 Old_age Always – 18358
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always – 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always – 34
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always – 0
187 Unknown_Attribute 0x0032 001 001 000 Old_age Always – 103
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always – 0
189 Unknown_Attribute 0x003a 084 084 000 Old_age Always – 16
190 Temperature_Celsius 0x0022 058 053 045 Old_age Always – 774045738
194 Temperature_Celsius 0x0022 042 047 000 Old_age Always – 42 (Lifetime Min/Max 0/5)
195 Hardware_ECC_Recovered 0x001a 047 017 000 Old_age Always – 229705477
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always – 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline – 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always – 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline – 268336671769988
241 Unknown_Attribute 0x0000 100 253 000 Old_age Offline – 1679272636
242 Unknown_Attribute 0x0000 100 253 000 Old_age Offline – 1683060254
SMART Error Log Version: 1
ATA Error Count: 192 (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It “wraps” after 49.710 days.
Error 192 occurred at disk power-on lifetime: 18242 hours (760 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 ff ff ff 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ——————–
60 00 01 ff ff ff 4f 00 10:21:03.851 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:21:03.851 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:21:03.851 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:21:03.850 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:21:03.825 READ FPDMA QUEUED
Error 191 occurred at disk power-on lifetime: 18242 hours (760 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 ff ff ff 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ——————–
60 00 01 ff ff ff 4f 00 10:20:50.953 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:50.915 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:50.915 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:50.914 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:50.914 READ FPDMA QUEUED
Error 190 occurred at disk power-on lifetime: 18242 hours (760 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 ff ff ff 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ——————–
60 00 80 ff ff ff 4f 00 10:20:33.021 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:28.989 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:28.947 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:28.906 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:28.864 READ FPDMA QUEUED
Error 189 occurred at disk power-on lifetime: 18242 hours (760 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 ff ff ff 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ——————–
60 00 01 ff ff ff 4f 00 10:20:15.833 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:15.833 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:15.833 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:15.833 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:15.808 READ FPDMA QUEUED
Error 188 occurred at disk power-on lifetime: 18242 hours (760 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 ff ff ff 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ——————–
60 00 01 ff ff ff 4f 00 10:20:02.952 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:02.914 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:02.913 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:02.913 READ FPDMA QUEUED
60 00 01 ff ff ff 4f 00 10:20:02.913 READ FPDMA QUEUED
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
[/cc]
Что тут бросается в глаза
Raw_Read_Error_Rate Википедия подсказывает, что это аппаратная ошибка.
число это растёт нереальными темпами, суть в том, что очень скоро будет смерть второму винту.
все эти “многа буковак” к тому, что листайте иногда SMART посматривайте на ошибки.
многих бед избежать будет можно.
Но это ещё не всё! всё только начиналось, после REBUILD’a мне на винте открылось 3 файла, вместо 1.1 Терабайта.
ну, что понятно ФС улетела, идём делаем проверку
[cc lang=”bash”]fsck -c /dev/sdb1[/cc]
проверка с тестом на бэды, идёт она ацки долго, дальше меня спрашивали куча на первый взгляд несяснох вопросов, где соглашался, а где боялся испортить данные, но вот проверка окончина, онитруем диск и там всего 1 каталог lost+found а в нём весь мой добрый терабайт информации.
в каталогах с номерами….
суть в том, что порушилось дерево ФС, и по сути мне остались только части этого дерева – ветви.
заходя в некоторые я обнаруживал, достаточно огромные ветви, что радовало, достаточно было просто переименовать каталог и перенести, а что-то было мелко по дроблено…
Ладно, раз мы ждём второго падения, копируем всю информацию куданить подальше от этого сервера, у меня под рукой оказалась коробочка intel ss4000, она ацки медленная для таких объёмов, больше суток она создавала массив RAID 5 из 4х винтов на 500Гб.
ещё 3е суток выливалась информация на неё….
Но это детали.
Чтоб таких радостей не повторялось я решил немного обезопасить себя, в закормах нашёл системник с p4 2.4 и ддр3200 на 512мб.
Докупил на него RAID контроллер за 1 т.р. на 4 порта, и купил новый курпус БП и 4 винта на 1.5Тб, чтоб состряпать из них RAID5 для “поддержания штанов”
То есть тупо держать горячую резервную копию ВСЕЙ информации.
Разумеется Бэкапы я делал, те данные что меняются каждый день, я копировал раз в сутки, те данные что меняются реже я хранил на внешних Seagate ( Free Agent Go )винтах.
Пришло время восстановления, тут я ещё наступил на одни грабли 🙁
один из внешних винтов (на 1ТБ )отказывается от питания, постоянно мигает лампочка.
Вот так господа. бывает, винт просто лежал в сейфе с момента последнего успешного бэкапа.
Собственно так ещё раз подтвердилась теория о “горячем” резервировании информации.
4 винта WD + Raid + БП на 450W + корпус мне вышли в 13 т.р.
Это дешевле чем купить в сервер рейд с большим чем 4 шнурками. это дешевле чем что-то выдумывать с внешними носителями, может я и не прав.
Буду раз в комментариях услышать ваше мнение!
ЗЫ проверил ВСЕ винты в серверах, и о чудо ВСЕ 1.5ТБ винты одной серии производства и все на грани смерти.
видимо партия или чего косячное…
пошёл смотреть остальные 500ки держаться молодцом, не смотря на то что в 2-3 раза старше.
на 1Тб сервер с одним SATA диском тоже еле дышит. (у него аптайм кстати под 650 дней.. но видимо ребут будет болезненный 🙁 )
PSS
Я не претендую на КО или ещё чего, не судите строго организация моя совсем небольшая, всего 30 машин и 2 “сервера” один обычный системник второй HP ML 320 g4 – может и наврал с моделью.
про этот сервер можно написать отдельный пост кстати 🙁
я устроился работать и буквально через неделю был куплен этот сервер, я на него взгоромздил файловый сервер и к обеду скорость работы по сети с файлами была около 100кб/c
Оказалось, что винты били под 70-90 градусов. конструкция сервера никакая для 4х винтов, вентиляции просто нет…
В общем родной рейд был демонтирован и установлен 3ware
попробуй обновить прошивку на винтах, если это сеагате. У сеагате были проблемы с прошивкой – там была какая-то ашыпка.
но если винт уже умир (не скажу про тех, которые присмерти) – то перепрошивка не спасает.
З.Ы. глючный этот твой вордпресс – с 10 раза дал отправить коммент
Николай да, какой-то он не доверчивый
Я для избежания подобных ситуаций ставил прогу, которая в командной строке выдавала, в зависимости от параметров запуска, длинный или короткий текст состояния жестких дисков. Кроном два раза в сутки проверяется состояние и результат пишется в текстовый файл, содержимое которого публикуется на внутреннем сайте (там указывается имя харда и его состояние- PASSED или FAILED).