Jump to content
  • 0
Sign in to follow this  
gvan

sd 0:0:0:0: [sda] Device not ready: <6>: Sense Key : 0x2 [current]

Question

Keenetic Giga 2, черный, v2.05(AAFS.4)C4 (но проблема началась на последней официальной прошивке или, возможно на бете с opkg). На самом деле было изменено несколько обстоятельств. Кроме установки прошивки с поддержкой opkg, на USB диске ADATA CH94 1ТБ (внутри TOSHIBA MK1059GSM) поменял еще и файловую систему с NTFS на EXT2.

После засыпания HHD и последующем обращении к нему стали сыпаться ошибки (копировал с другого форума и сообщения, где тип ФС NTFS, поскольку проблему удалось решить и сейчас таких ошибок у меня нет):

Jan 21 02:39:18ndmkernel: sd 0:0:0:0: [sda] Device not ready: <6>: Sense Key : 0x2 [current]

Jan 21 02:39:18ndmkernel: : ASC=0x4 ASCQ=0x2

Jan 21 02:39:18ndmkernel: end_request: I/O error, dev sda, sector 1183

Jan 21 02:39:18ndmkernel: tntfs error (device sda1, pid 3): ntfs_end_buffer_async_read(): Buffer I/O error, logical block 0x230 (сектора любые).

Jan 21 02:39:18ndmkernel: tntfs error (device sda1, pid 3): ntfs_end_buffer_async_read(): Buffer I/O error, logical block 0x231.

После нескольких таки сообщений ФС автоматом перемонтировалась в ридонли. Соответственно, такая ситуация совсем не устраивала.

Вот еще пример подобной ошибки у другого пользователя http://forum.zyxmon.org/topic581-giga-ii-usb-hdd-ukhodit-v-read-only.html

Что делал, чтобы решить проблему:

0. Искал решения в Сети.

1. Обновился на тестовую 2.06. Не помогло (-)

2. Подключил внешнее питание к диску через Y-USB кабель. (-)

3. Заменил коробку (интерфейс USB-SATA). (-)

4.1 Пробовал через hdparm отключить засыпание винта. (-)

4.2 (бубен) Заменил Ext2 на Ext3. (-)

5. В соответствии с п. 0 в cron добавил задачу, которая каждые 5 минут пишет в файл на диск текущее время. Помогло (+).

Т.к. роутер с винтом стоит в кладовке, то круглосуточная работа диска не напрягала. Но с учетом того, что винт требуется редко, то хотелось решить вопрос правильным способом: чтобы винт все-таки отключался по таймауту, когда не требуется, и проспался без ошибок при обращении к нему (т.к. хоть и немного, но питание двигатель потребляет, плюс износ самого двигателя).

Дополнительный поиск вывел на следующую страницу http://www.nslu2-linux.org/wiki/FAQ/DealWithAutoSpinDownOnSeagateFreeAgent

Установка параметра

echo 1 > /sys/block/sda/device/scsi_disk*/allow_restart

решила мою проблему. Винт засыпает и при просыпании не возникает ошибок. Сделал скрипт, который запускается при старте роутера и выполняет установку allow_restart в 1.

Соответственно, вопрос. Что-то поменялось в прошивке, если ранее у меня таких проблем не возникало? И возможно ли сделать в следующих прошивках, чтобы данный параметр выставлялся автоматом? Или же проблема настолько специфичная и узко зависит от прослойки USB-SATA, что проявляется очень редко.

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Да не в прошивке дело, а с самими дисками, они тупо не читаются и отваливаются. Тут несколько версий, не хватает тока для питания диска, особенности при долгой работе в ПО самого диска, либо проблемы с блинами диска или его платой контроллером. У меня на нескольких дисках имеется такая же проблема, у одного сразу после покупки, тот самый Seagate FreeAgent, ну не хочет он дружить с роутерами, да и с некоторыми ноутами, явно в его ПО особенность, а у другого контроллер накрылся, как только нагревается, так сразу отвалы начинаются...

Share this post


Link to post
Share on other sites
  • 0
Да у вас не в прошивке дело, а с самим диском, он тупо не читается и отваливается. Тут несколько версий, не хватает тока для питания диска, либо проблемы с блинами диска или его платой контроллером. У меня на нескольких дисках имеется такая же проблема, у одного сразу после покупки, ну не хочет он дружить с роутерами, да и с некоторыми ноутами, а у другого контроллер накрылся, как только нагревается, так сразу отвалы начинаются...

Ну я тоже так думал. Забыл добавить информацию еще по своим экспериментам.

Дополняю.

Читал информацию по SMART через smartctl - хорошая:

[more]SMART Attributes Data Structure revision number: 16

Vendor Specific SMART Attributes with Thresholds:

ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE

1 Raw_Read_Error_Rate 0x000b 100 100 050 Pre-fail Always - 0

2 Throughput_Performance 0x0005 100 100 050 Pre-fail Offline - 0

3 Spin_Up_Time 0x0027 100 100 001 Pre-fail Always - 3766

4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 16616

5 Reallocated_Sector_Ct 0x0033 100 100 050 Pre-fail Always - 0

7 Seek_Error_Rate 0x000b 100 100 050 Pre-fail Always - 0

8 Seek_Time_Performance 0x0005 100 100 050 Pre-fail Offline - 0

9 Power_On_Hours 0x0032 041 041 000 Old_age Always - 23795

10 Spin_Retry_Count 0x0033 253 100 030 Pre-fail Always - 0

12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 2737

191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 137

192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 184

193 Load_Cycle_Count 0x0032 092 092 000 Old_age Always - 89817

194 Temperature_Celsius 0x0022 100 100 000 Old_age Always - 32 (Min/Max 19/55)

196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0

197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0

198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0

199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0

220 Disk_Shift 0x0002 100 100 000 Old_age Always - 83

222 Loaded_Hours 0x0032 098 098 000 Old_age Always - 1021

223 Load_Retry_Count 0x0032 100 100 000 Old_age Always - 0

224 Load_Friction 0x0022 100 100 000 Old_age Always - 0

226 Load-in_Time 0x0026 100 100 000 Old_age Always - 347

240 Head_Flying_Hours 0x0001 100 100 001 Pre-fail Offline - 0

SMART Error Log Version: 1

No Errors Logged[/more]

Подключил винт к ноутбуку, загрузил линукс, проверил диск на bad block. Никаких проблем не обнаружено.

Как и писал выше, если диску (но, скорее всего речь идет о прослойке USB-SATA) не давать спать, то никаких проблем не возникает.

Как решил проблему через установку /sys/block/sda/device/scsi_disk*/allow_restart в 1 уже написал. Два дня тестирую, пока проблема не проявилась.

А раньше достаточно было выждать 10 минут (подождать отключения диска) и обратиться к нему вновь. Т.е. баг у меня воспроизводится с 100% вероятностью.

Теперь же диск спит, сколько хочет и с радостью просыпается без всяких ошибок.

И судя по всему, проблема для linux не нова. Вот еще в тему http://www.yqcomputer.com/1116_5473_1.htm

Share this post


Link to post
Share on other sites
  • 0

В свежем билде 2.06 в пятницу (10.06.2016) этот флаг везде по умолчанию будет взведен в 1.

Share this post


Link to post
Share on other sites
  • 0

Gvan, спасибо, что освежили, а L'ecureuil, спасибо, что отреагировали на эту проблему.

Тема, в общем, давно известная, в кинетиках с микропрограммой V1 решалась отключением энергосбережения USB-диска в веб-конфигураторе https://zyxel.ru/kb/2326/.

Сам я столкнулся с ней при попытке подключения Seagate FreeAgent: viewtopic.php?f=6&t=304&start=450#p3975

Решал проблему отключением энергосбережения диска виндоузной утилитой "SeagateManager".

Share this post


Link to post
Share on other sites
  • 0

Если кто-то еще не планирует переходить на прошивку 2.06 в виду ее активного тестирования и наличия возможных багов и как я использует 2.05, то прилагаю скрипт, который при старте роутера выставляет соответствующие флаги в файлах allow_restart.

Скрипт необходимо разместить в /opt/etc/init.d. Назвал его для примера - SxxUSBAllowReset:

#!/opt/bin/sh
/opt/bin/find /sys/class/scsi_disk -name allow_restart -exec /opt/bin/sh -c "/opt/bin/echo 1 > {}" \;

Поначалу я в данном скрипте тупо выставлял в /sys/class/scsi_disk/0:0:0:0/allow_restart и /sys/class/scsi_disk/1:0:0:0/allow_restart единицу, но в прошивке v2.05(AAFS.6)C4 номера устройств поменялись на 2:0:0:0 и 3:0:0:0, поэтому при очередном рестарте роутера скрипт не отработал и у меня опять посыпались ошибки после остановки винта.

Соответственно выше представлена команда, которая сама ищет имена устройств вне зависимости от их ID и взводит allow_restart в 1.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...