Препятствуйте тому, чтобы внешний жесткий диск USB спал

Почти для любого вопроса формы: "Почему x является преобладающим выбором в y сегменте рынка?" кластер ответов приблизительно два фактора.

В некотором критическом моменте во время появления и роста того сегмента рынка или ниши рассматриваемый продукт имел некоторые преимущества в стоимости и функциях, которые поощрили ее принятие критической массой. После того как та критическая масса была достигнута затем, все вспомогательные продукты для того сегмента будут поддерживать ее, и все ведущие специалисты в той промышленности/нише будут знакомы с нею как главный выбор.

В какой-то момент назад в 90-х Donald Becker выпустил некоторый код и информацию относительно кластера Беовульфа, который он и Thomas Sterling создали для проекта в НАСА. Это используемое потребительское оборудование, запуская Linux и включая MPI (интерфейс передачи сообщений) и PVM (параллельная виртуальная машина) библиотеки для распределения вычислительных задач через сеть узлов.

В то время, когда альтернативы потребовали намного более дорогих аппаратных средств (главным образом рабочие станции Sun), имели собственное лицензирование программного обеспечения с на/узел или на/ЦП затраты, и обычно были закрытым исходным кодом или имели значительные компоненты с закрытым исходным кодом.

Таким образом Linux имел преимущества во всех трех из этих факторов. Тот Becker выпустил некоторый код и документацию (и сделал так под прохладным именем), дал Linux огромное повышение доверия для такого супервычислительного приложения. (Что это использовалось проектом в НАСА, было также огромное повышение его авторитета).

Оттуда колледжи и университеты взяли подход для своих собственных лабораторий. В течение пары лет после этого все поколение ученых было знакомо с кластерами Беовульфа, и огромное количество инструментов были легко доступны для поддержания многих приложений через них.

11
17.02.2012, 00:33
6 ответов

Да, это обычно встраивается во встроенное микропрограммное обеспечение. Некоторые производители дисков обеспечивают основанный на MS Windows инструмент управления, который позволит Вам изменять различные параметры, включая отключение "сна" или вращать вниз таймер. Если у Вас есть доступ к полю Windows, это могло бы стоить того для преследования того угла.

4
27.01.2020, 19:57

Руководство для Linux hdparm обеспечивает следующую информацию:

-B  Query/set Advanced Power Management feature,
    if the drive supports it.
    A low value means aggressive  power  management
    and a high value means better performance.

    Possible settings range
    from values 1 through  127  (which  permit spin-down),
    and values 128 through 254 (which do not permit spin-down).

    The highest degree of  power  management
    is attained with a setting of 1,
    and the highest I/O performance with a setting of 254.

    A  value  of  255  tells hdparm to
    disable Advanced Power Management altogether on the drive
    (not all drives support disabling it, but  most do).

Однако все еще не гарантируется, что Ваша дисковая полка будет поддерживать передачу этих инструкций к диску. Та же ссылка упоминает, что способность использовать hdparm с корпусом вообще только возможна с определенным, "более новым (2008 и позже)" модели, которые поддерживают Систему перевода Команды SCSI-ATA, иначе "SAT". Я должен все же попытаться делать это на чем-либо кроме недавнего дешевого резервного диска, модели HP SimpleSave. Это, кажется, обеспечивает некоторую ограниченную функциональность управления питанием.

И конечно это также предполагает что OpenBSD hdparm работы таким же образом. Я нисколько не хорошо осведомлен в способах OpenBSD, таким образом, я не могу помочь Вам там.

2
27.01.2020, 19:57
  • 1
    OpenBSD, эквивалентный из hdparm, atactl. Но я не знаю, работает ли это над USB-устройствами; atactl(8) ссылаются wd(4) (дисковая страница справочника драйвера IDE), но не umass(4) (страница справочника драйвера устройства хранения данных USB). –  Gilles 'SO- stop being evil' 04.01.2011, 23:26
  • 2
    , который я собираюсь играть с этим, хотя, так как карты памяти монтируют использование/dev/sd* устройства, я не уверен wd и atactl, применяется. Время, чтобы сделать некоторое чтение/проигрывание. –  gabe. 06.01.2011, 04:08
  • 3
    делает Вы думаете hdparm мог использоваться в цикле в некотором роде без sudo для предотвращения сна? так как –  Aquarius Power 23.08.2014, 04:01
  • 4
    Вы знаете hdparam значение по умолчанию для -B [apm_setting] ? –  jyz 04.09.2016, 22:44

Это решение (для Linux) из http://www.arrfab.net/blog/?p=107 помогло для Seagate на 1 ТБ Портативному диску, который продолжал засыпать:

# sdparm --clear=STANDBY /dev/sdc -S

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

6
27.01.2020, 19:57
  • 1
    какая-либо подсказка относительно выполнения этого без sudo? –  Aquarius Power 23.08.2014, 03:57

Просто мои 2 цента...

Это более чем правда, что вращение дисков уменьшает срок их службы. Многолетний опыт показывает, что запуск и остановка двигателя диска вызывает гораздо большее утомление, чем круглосуточное вращение. На всех моих дисках с большим количеством запусков/остановок есть перераспределенные сектора, и все мои диски, которые вращаются 10 лет 24/7, (хотите верьте, хотите нет) как новенькие. В конце концов, диски созданы для вращения, а не для простоя, поэтому если для вас приоритетнее усталость, а не энергопотребление, смело ставьте диски на круглосуточное вращение.

У меня есть внешний диск на 2 ТБ, который отключается после 30 минут бездействия. Диск должен быть включен 24 часа в сутки 7 дней в неделю для резервного копирования и в качестве небольшого NAS, подключенного к Orange PI.

Я использовал следующее правило udev в

/etc/udev/rules.d

(Оно никогда не работало, так как отключение вращения находится в прошивке диска)

SUBSYSTEM=="usb", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1"

Хотя диск поддерживает

hdparm -B

Я написал небольшой процесс демона, который может запускаться во время загрузки в

/etc/rc.local

который пишет 10 раз в цикле текущую дату и время в файл журнала, чтобы диск всегда был включен. Не стесняйтесь изменять его по своему усмотрению.

Параметры командной строки: целевой каталог для записи awake.log и (опционально) временная задержка (по умолчанию 300)

например,

/usr/sbin/disk_awake /mnt/some_disk/keep_alive 30

код:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <time.h>

int main(int argc, char* argv[])
{
FILE *fp=NULL;
pid_t process_id=0;
pid_t sid=0;
int secs=300;
char log_file[512];
time_t raw_time;
struct tm *time_info;
int ticks=0;
unsigned long step=1;

if (argc<2||argc>3)
{
 printf("Usage: %s target_directory [seconds]\n",argv[0]);
 exit(1);
}
if (strlen(argv[1])>500)
{
 printf("String length of target_directory is HUGE!\n");
 exit(1);
}
if (chdir(argv[1])<0)
{
 printf("Directory %s does not exist\n",argv[1]);
 exit(1);
}
strcpy(log_file,argv[1]);
strcat(log_file,"/awake.log");
if (!(fp=fopen(log_file,"w+")))
{
 printf("Could not open log file %s\n",log_file);
 exit(1);
}
if (!(argv[2]))
{
 printf("Delay argument not specified. Defaulting to 300 seconds\n");
 secs=300;
}
if (argv[2]&&(secs=atoi(argv[2]))<=0)
{
 printf("Could not parse delay option. Defaulting to 300 seconds\n");
 secs=300;
}
printf("Delay interval %d seconds\n",secs);
process_id=fork();
if (process_id<0)
{
printf("Could not fork()\n");
exit(1);
}
if (process_id>0)
{
printf("Started with pid %d\n", process_id);
exit(0);
}
umask(0);
sid=setsid();
if(sid<0)
{
printf("Could not setsid()\n");
exit(1);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while (1)
{
if (ticks==10)
{
 fclose(fp);
 if (!(fp=fopen(log_file,"w+"))) exit(1);
 ticks=0;step++;
}
time(&raw_time);
time_info=localtime(&raw_time);
fprintf(fp,"%s %lu : %s","Step",step,asctime(time_info));
fflush(fp);
ticks++;
sleep(secs);
}
fclose(fp);
return(0);
}
6
27.01.2020, 19:57

Я обнаружил, что у меня работает следующий cronjob.

*/5****/bin/touch /dev/sdb &>/dev/null

Очевидно, обновите его, указав имя устройства вашего диска.

Вы также можете изменить время в зависимости от того, как долго ваш накопитель простаивает, прежде чем он отключится.

9
27.01.2020, 19:57

Я вижу цитаты и вопросы, но не вижу прямых предложений по синтаксису, поэтому добавляю свой ответ, несмотря на то, что один из них был принят. Команда (s )для элегантной де -активации сна с помощьюhdparm(в соответствии с запросом )будет:

hdparm -S 0 /dev/sdx

или, возможно...

hdparm -B255 /dev/sdx

Для того, что ваш диск поддерживает и не поддерживает, выполните:

hdparm -I /dev/sdx

Запускайте их на свой страх и риск, но если ваш накопитель поддерживает первый вариант, это полностью отключает спящий режим, и мне это кажется довольно элегантным. Возможно, эти опции не были доступны в 2010 году, поэтому, если это так, это должно помочь людям, которые приходят сюда!

3
30.05.2021, 21:47

Теги

Похожие вопросы