Как я вас понимаю :). В итоге купил себе WD Passport на 250 гигов и распял пермычку под питание, чтобы диск головками не щелкал, все теперь работает без проблем много месяцев.
Printable View
Как я вас понимаю :). В итоге купил себе WD Passport на 250 гигов и распял пермычку под питание, чтобы диск головками не щелкал, все теперь работает без проблем много месяцев.
Vollsky
Спасибо большое, буду пытаться)))
PupsDRVR
Мне, к сожалению, 250 не хватит ;) Так что диск - по-любому 3,5"
Есть ещё такой же паспорт на 400 гигов. А с тем диском вы тишины не получите, это по определению. Что касается режима энергосбережения, то Seagate FreeAgent поддерживает это на апаратном уровне, под него есть родная утилита, была изначально на диске записана, если хлопнули её, то с сайта скачайте, которая позволяет выставить время остановки при бездействии. Так что по предыдущей ссылке не стоит даже заморачиваться, все гораздо проще.
PupsDRVR
На счет утилиты я знаю, и в ней то все настроено, и даже при работе с компом режим энергосбережения активируется :)
По ссылке я сделал, жесткий выключается, но обратно уже не включается :D:D:D
Соответственно буду мозговать дальше)))
П.С. что куплено - то куплено, дороги назад уж нет...
Такая вот есть идея: поставить помимо scsi-stop scsi-start, и прописать запуск шпинделя в скрипте при первом же обращении...
Наподобие этого:
Так как я в этом деле мягко говоря не очень, может кто-нибудь сказать - поправка верная?Code:#!/bin/sh
if /usr/bin/[ $# -ne 1 ]; then
/bin/echo 1>&2 "Usage: $0 <device>"
exit 1
fi
PERIOD=30
BOUNDARY=1200
SCSISTOP=/usr/local/sbin/scsi-stop
SCSISTART=/usr/local/sbin/scsi-start
LOGFILE=/tmp/scsi-stop.log
searchstr="disk_io:"
devaddr="(`/bin/ls -l $1 | /usr/bin/awk '{print($5 int($6/16))}'`)"
str=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
cooltime=0
stopped=0
while /bin/true; do
/bin/sleep $PERIOD
newstr=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
if /usr/bin/[ "$newstr" = "$str" ]; then
cooltime=$(($cooltime + $PERIOD))
if /usr/bin/[ $cooltime -ge $BOUNDARY -a $stopped -eq 0 ]; then
$SCSISTOP $1
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Cooled down..." >> $LOGFILE
stopped=1
fi
else
if /usr/bin/[ $cooltime -ne 0 ]; then
if(stopped==1); then
$SCSISTART $1
fi
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Disk first used after $cooltime seconds" >> $LOGFILE
fi
cooltime=0
str=$newstr
stopped=0
fi
done
Вы по моим стопам идете, я все это уже проходил (начиная с этого поста почитайте ) :). Если найдете решение, дайте знать.
Vollsky
Хм... Спасибо за советы, буду пробовать)
PupsDRVR
Выход должен быть... его не может не быть... :)
Свою проблему я решил процентов так на 70...
1) Помимо жесткого диска воткнул в роутер флешку на 128 Мб
2) Подключил ее в /opt
3) Установил ipkg
4) Установил scsi-idle (он уже есть скомпилированный, в списке пакетов)
5) Основываясь на этом материале, запустил такой вот скриптик:
Соответсвенно, висит в бакграунде.Code:#!/bin/sh
if /usr/bin/[ $# -ne 1 ]; then
/bin/echo 1>&2 "Usage: $0 <device>"
exit 1
fi
PERIOD=5
BOUNDARY=1200
BOUNDARY2=1215
SCSISTOP=/opt/sbin/scsi-stop
SCSISTART=/opt/sbin/scsi-start
LOGFILE=/tmp/scsi-stop.log
searchstr="disk_io:"
devaddr="(`/bin/ls -l $1 | /usr/bin/awk '{print($5 int($6/16))}'`)"
str=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
cooltime=0
stopped=0
while /bin/true; do
/bin/sleep $PERIOD
newstr=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
if /usr/bin/[ "$newstr" = "$str" ]; then
cooltime=$(($cooltime + $PERIOD))
if /usr/bin/[ $cooltime -ge $BOUNDARY -a $stopped -eq 0 ]; then
umount -l /tmp/mnt/disc0_1
umount -l /tmp/mnt/disc0_2
mount /dev/discs/disc0/part1 /tmp/mnt/disc0_1
mount /dev/discs/disc0/part2 /tmp/mnt/disc0_2
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Remount... Ready to stop..." > $LOGFILE
stopped=1
str=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
fi
if /usr/bin/[ $cooltime -ge $BOUNDARY2 -a $stopped -eq 1 ]; then
$SCSISTOP $1
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Cooled down..." >> $LOGFILE
stopped=2
fi
else
if /usr/bin/[ $cooltime -ne 0 -a $stopped -eq 2 ]; then
$SCSISTART $1
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Start disk... Ready to use" >> $LOGFILE
fi
cooltime=0
str=$newstr
stopped=0
fi
done
Результат:
Жесткий отключается через n мин простоя.
Чтобы диск запустился, требуется зайти на диск, подождать время PERIOD + время раскрутки шпинделя, и желаемое будет получено)))
Не густо, но и то хлеб... (без команды scsi-start у меня вообще никак не запускается)
Буду думать дальше)))
P.S. Чуть подправил скрипт...
Уже более полугода исправно трудится WL-500W в связке с Seagate USB винтом на 750ГБ. Но что-то меня тут заинтересовало, а почему винт крутится постоянно? Все-таки, наверное это не совсем правильно, можно было бы остановить его, когда к нему нет обращений, как это происходит в Windows к примеру? (прошу сразу прощения за подобное сравнение)
От коробки зависит только. Если не удалось - то в ней дело.
Посмотрите
http://wl500g.info/showthread.php?t=...ight=scsi-stop
у меня коробка Vantec NexStar3 NST-260U2-BK
http://di1.shopping.com/images1/pi/e...7x150-0-0_.jpg
root@DD-WRT:~# cat /proc/scsi/usb-storage-0/0
Host scsi0: usb-storage
Vendor: Prolific Technology Inc.
Product: Mass Storage Device
Serial Number: 0
Protocol: Transparent SCSI
Transport: Bulk
GUID: 067b25060000000000000000
Attached: Yes
отвечает
root@DD-WRT:/tmp# ./scsi-stop /dev/discs/disc0/disc
/dev/discs/disc0/disc is not a SCSI block device:rolleyes:
Господа, а вот как быть в такой же ситуации, но в условиях, что
Программы никакой не шло, hutil скачанный с офф.сайт ничем не помог - может только Acoustic Managment`ом заниматься, никакого Power Managment`a там и близко нет.Quote:
Вроде как программа, идущая в комплекте с винтом позволяет это делать...
hdparm тут нам не помощник, а жаль, остается, конечно, вариант "каждые 5 минут touch'ить диск", но как бы тоже не хотелось, хоть и крон стоит :)
Может есть какие-то универсальные утилиты, чтобы отрубить spindown\standby режим вообще?
Кто-то кроме Aeron.Dae и DemonGloom задавался вообще вопросом?
Винт: Vendor: SAMSUNG Model: HM160HI
У меня нестандартное решение данной проблемы.
Имею следующий набор:
HDD 2,5" Samsung - 80 Гб - 5400 об/мин - IDE
HDD-бокс Transcend StoreJet 2.5 S/R
Подключён к роутеру через активный USB-хаб. Не каких утилит по остановке или не остановке диска в комплекте с боксом небыло, я вначале ломал голову как мне отключить засыпание, а потом придумал просто не отключать отдачу в rTorrent и все ОК ;-). Диск не засыпает т.к. постоянно что-то копируется и считывается.
Вот такое решения придумал я для себя.
Та же фигня с Seagate FreeAgent.
Причем при подключении он на столько мало активен что роутер не успевает его засечь в девайсах.
Причем было так что иногда он просыпался и какое-то время работал нормально, а иногда просто при старте на секунд 30 запускался и тух.
Что делать не знаю, думаю что возможны проблемы с железкой винта.
Тем, у кого Seagate: покопайтесь на сайте производителя в разделе Support. Найдёте нужные программы. Всё настраивается двумя щелчками мышки.
У меня внешний диск Western Digital My Book Premium Edition (WDG1C2500E)
Тоже засыпает после 10 мин неактивности. Причем производитель заявляет что эта фича не отключается.
Приходится постоянно touch'ить диск через cron :(
Винт Fujitsu на 2.5 дюйма с внешним блоком питания. + флешка Вот такая беда:
Означает ли это что проблемы с питанием? (внешний usb-шный блок питания на 1000МА)Code:Nov 3 22:10:01 /opt/sbin/cron[209]: (admin) CMD (/opt/etc/cron.scripts/wakeuphdd.sh)
Nov 3 22:15:01 /opt/sbin/cron[213]: (admin) CMD (/opt/etc/cron.scripts/wakeuphdd.sh)
Nov 3 22:20:01 /opt/sbin/cron[217]: (admin) CMD (/opt/etc/cron.scripts/wakeuphdd.sh)
Nov 3 22:25:01 /opt/sbin/cron[221]: (admin) CMD (/opt/etc/cron.scripts/wakeuphdd.sh)
Nov 3 22:27:18 kernel: usb.c: USB disconnect on device 01:03.2-2 address 3
Nov 3 22:27:18 nmbd[119]: [2008/11/03 22:27:18, 0] nmbd/nmbd.c:sig_term(65)
Nov 3 22:27:18 nmbd[119]: Got SIGTERM: going down...
Nov 3 22:27:19 kernel: hub.c: new USB device 01:03.2-2, assigned address 4
Nov 3 22:27:20 USB storage: removed
Nov 3 22:27:28 kernel: kjournald starting. Commit interval 5 seconds
Nov 3 22:27:28 kernel: EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
Nov 3 22:27:28 kernel: EXT3 FS 2.4-0.9.19, 19 August 2002 on sd(8,16), internal journal
Nov 3 22:27:28 kernel: EXT3-fs: mounted filesystem with ordered data mode.
Nov 3 22:27:28 kernel: JBD: no valid journal superblock found
Nov 3 22:27:28 kernel: EXT3-fs: error loading journal.
Nov 3 22:27:28 kernel: MSDOS FS: Using codepage 950
Nov 3 22:27:28 kernel: MSDOS FS: IO charset cp950
Nov 3 22:27:28 kernel: FAT: bogus logical sector size 0
Nov 3 22:27:28 kernel: VFS: Can't find a valid FAT filesystem on dev 08:00.
Nov 3 22:27:28 kernel: FAT: freeing iocharset=cp950
Nov 3 22:27:28 kernel: FAT: bogus logical sector size 0
Nov 3 22:27:28 kernel: VFS: Can't find a valid FAT filesystem on dev 08:00.
Nov 3 22:27:28 kernel: VFS: Can't find ext3 filesystem on dev sd(8,2).
Nov 3 22:27:28 kernel: MSDOS FS: Using codepage 950
Nov 3 22:27:28 kernel: MSDOS FS: IO charset cp950
Nov 3 22:27:28 kernel: FAT: bogus logical sector size 65535
Nov 3 22:27:28 kernel: VFS: Can't find a valid FAT filesystem on dev 08:02.
Nov 3 22:27:28 kernel: FAT: freeing iocharset=cp950
Nov 3 22:27:28 kernel: FAT: bogus logical sector size 65535
Nov 3 22:27:28 kernel: VFS: Can't find a valid FAT filesystem on dev 08:02.
Nov 3 22:27:28 /opt/sbin/cron[239]: (CRON) STARTUP (V5.0)
Nov 3 22:29:27 kernel: usb.c: USB disconnect on device 01:03.2-2 address 4
Nov 3 22:29:28 kernel: hub.c: new USB device 01:03.2-2, assigned address 5
Nov 3 22:29:37 kernel: JBD: no valid journal superblock found
Nov 3 22:29:37 kernel: EXT3-fs: error loading journal.
Nov 3 22:29:37 kernel: MSDOS FS: Using codepage 950
Nov 3 22:29:37 kernel: MSDOS FS: IO charset cp950
Nov 3 22:29:38 kernel: FAT: bogus logical sector size 0
Nov 3 22:29:38 kernel: VFS: Can't find a valid FAT filesystem on dev 08:00.
Nov 3 22:29:38 kernel: FAT: freeing iocharset=cp950
Nov 3 22:29:38 kernel: FAT: bogus logical sector size 0
Nov 3 22:29:38 kernel: VFS: Can't find a valid FAT filesystem on dev 08:00.
Nov 3 22:29:38 kernel: VFS: Can't find ext3 filesystem on dev sd(8,2).
Nov 3 22:29:38 kernel: MSDOS FS: Using codepage 950
Nov 3 22:29:38 kernel: MSDOS FS: IO charset cp950
Nov 3 22:29:38 kernel: FAT: bogus logical sector size 65535
Nov 3 22:29:38 kernel: VFS: Can't find a valid FAT filesystem on dev 08:02.
Nov 3 22:29:38 kernel: FAT: freeing iocharset=cp950
Nov 3 22:29:38 kernel: FAT: bogus logical sector size 65535
Nov 3 22:29:38 kernel: VFS: Can't find a valid FAT filesystem on dev 08:02.
Nov 3 22:29:38 /opt/sbin/cron[251]: (CRON) STARTUP (V5.0)
Nov 3 22:30:01 /opt/sbin/cron[253]: (admin) CMD (/opt/etc/cron.scripts/wakeuphdd.sh)
swap и файловые системы примонтированы через /etc/fstab
А вот такая последовательность не помогает?
hdparm -B 255 /dev/путь/к/диску
(либо -B 254, если не получится)
hdparm -S 0 /dev/путь/к/диску
hdparm не работает через USB.
У меня проблема непонятно в чем. Решаю одни проболемы, появляются другие. Сейчас роутер спокойно держит стресс-тест на работу с гигабайтными файлами по самбе, но иногда тих отваливается сам.
Воспользовался http://oleg.wl500g.info/bin/scsi-stop, остановил диск, обратно он не запускается:
Device 08:01 not ready.
I/O error: dev 08:01, sector 10264
EXT3-fs error (device sd(8,1)): ext3_readdir: directory #2 contains a hole at offset 0
и т.д.
Прошивка последняя от Олега, wl500w, диск
$ cat /proc/scsi/usb-storage-0/0
Host scsi0: usb-storage
Vendor: Seagate
Product: FreeAgent Pro
Serial Number: 3QJ0A0AJ
Protocol: Transparent SCSI
Transport: Bulk
GUID: 0bc23110fffffff93b30a0b3
Attached: Yes
Port: 2
Bus: 01:03.2-2
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0bc2 ProdID=3110 Rev= 0.00
S: Manufacturer=Seagate
S: Product=FreeAgent Pro
S: SerialNumber= 3QJ0A0AJ
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
lly, перелез на прошивку на новом ядре неделю назад - всё стабильно вроде. Спасибо!
Только вот сегодня обнаружил, что scsi-stop работать перестал, диск не останавливается. Попробовал:
/usr/local/sbin/scsi-stop /dev/scsi/host0/bus0/target0/lun0/disc
И получил:
/dev/scsi/host0/bus0/target0/lun0/disc is not a SCSI block device
На Олеговой десятке все работало.
какую версию busybox используете? если 1.13 stable, то ту фиксы к ней http://busybox.net/downloads/fixes-1.13.2/, в том числе для modprobe и depmod.
Для insmod временно можно использовать старый сорц.
Там патч нужен еще к ядру, гляну
работающие scsi-stop & scsi-start на wl500g.googlecode.com
http://wl500g.googlecode.com/files/s...op-mipsel.tbz2
гы =)
c pptp/l2tp не проверял?
theMIROn, спасибо за оперативность! Навскидку попробовал: диск останавливается, при обращении раскручивается. Потестю подробнее... А scsi-start зачем? Я знаю, что он в scsi-idle входит, но предназначения его не понял...
P.S. Эх, мужики, был бы я хоть чуть-чуть в линухе... Помог бы вам в вашем благородном деле, а так - могу лишь тестить в меру своего скудного юзерского разумения.:)
некоторые модули уже есть в прошивке, потому что используются. некоторые можно добавить дополнительно при наличии флешки/hdd в /opt/lib/modules/2.4.37/
scsi_start/stop - это исполняемые файлы, останавливающие и запускающие usb hdd, которые подключаются к роутеру как блочные scsi устройства. Запускаются вручную, или по cron-у, например. Некоторые переходники usb-ide/sata не реагируют на эти команды, некоторые usb hdd имеют свойство засыпать (останавливаться) самостоятельно. На форуме есть соответствующие темы
Если не понятно зачем это, то не стоит и использовать. Возможность раскрутки usb hdd, если оно уснуло, в прошивку была добавлена.
p.s в последние бинарники прошивок с wl500g.googlecode.com в /usb/sbin уже включены tcpdump, scsi-stop и scsi-start на общий размер 355'782 байта
Собрал таки прошивку сам. 141ую. Простите за ламерский вопрос - а то, что моя прошивка меньше (3637248 байт - супротив 3751936 байт) - это нормально? Могу предполагать, что это может быть связано с разными компиляторами на хостах, но так ли это? Делал по инструкции.
все гораздо проще. взять там, где сказал al37919 и подложить в src/router/Addon
тогда в процессе сборки оно автоматом закинется в /usr/sbin
p.s в архиве scsi-startstop-mipsel.tbz2 scsi-start и scsi-stop лежат отдельными бинарниками для отдельного и независимого использования.
при включении в прошивку лучше для scsi-stop создать символьную ссылку на scsi-start, фактически бинарник один и тот же. зато минус почти 5 кб.
Asus WL500gp подключен внешний диск TRANSCEND StoreJet 2.5, в качестве питающего шнура подошла зарядка от NOKIA (5.7в 800mA) (ЧЕРЕЗ usb пощелкивало:))
все работает FTP, торренты но! постоянная работа диска не устраивает
Scsi-stop увы не работает, halt вырубает все.
Нашел интересную ссылку
http://sg.danny.cz/sg/sdparm.html#mozTocId166213
Уважаемые гуру возможно ли как то использовать sdparm (там сборки различные есть debian package ) для отключения?