Спящие HDD

У вас сложности? Наши специалисты постараются помочь вам. Если вы сами сталкивались с похожими проблемами - поделитесь опытом.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
asciiz
Junior member
Сообщения: 4
Зарегистрирован: 04 апр 2007, 10:26
Откуда: Мурманск

Спящие HDD

Сообщение asciiz » 04 апр 2007, 11:30

Доброго времени суток!

Может кто подскажет, что тут можно сделать? Есть сервер на S5000PSL с корзиной hot-swap AXX6DRV3G, в которой стоит 3 SATA диска Seagate. Диски эти очень любят засыпать при отсутствии обращения к ним и очень не любят просыпаться. То есть при обращении к диску он начинает раскручиваться, но пока он раскрутится, мы получаем вылет по таймауту. Предполагаю, что это HSC что-то не так делает, потому что если ребутнуть сервер с уже остановившимся винтами, то при загрузке получаем сообщения Disk verify failed (однако потом конечно винты уже раскручиваются и загрузка нормально продолжается).
Установленная система - FreeBSD 6.2 STABLE. Она, к сожалению, не дожидается, пока винт раскрутится, и выдает "FAILURE - device detached", после чего отключает винт. Утилита ataidle не помогла (хотя по идее должна).

Пишу в этот раздел, потому как наверное средствами FreeBSD эту проблему вряд ли можно решить (или нет?). Хочется узнать, еслть ли "железный" способ решить эту проблему? Можно ли как-нибудь заставить винты не останавливаться (если уж по-другому никак)?

Кстати, atacontrol выдает, что у основного диска (на котором стоит система и которому соответсвенно всегда есть обращения) APM enabled и supported, а у двух других - disabled и not supported. Почему так? Ведь диски абсолютно одинаковые  :?

asciiz
Junior member
Сообщения: 4
Зарегистрирован: 04 апр 2007, 10:26
Откуда: Мурманск

Сообщение asciiz » 25 апр 2007, 11:07

Может кому пригодится - проблему решил небольшим изменением ata драйвера, увеличив таймаут ожидания ответа от винта:

+++ /usr/src/sys/dev/ata/ata-disk.c     Thu Apr 19 15:38:10 2007
@@ -229,8 +229,8 @@
    request->dev = dev;
    request->bio = bp;
    request->callback = ad_done;
-    request->timeout = 5;
-    request->retries = 2;
+    request->timeout = 10;
+    request->retries = 3;
    request->data = bp->bio_data;
    request->bytecount = bp->bio_bcount;
    request->u.ata.lba = bp->bio_pblkno;

Ответить

Вернуться в «Серверы - Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 27 гостей