Jump to content

gvan

Forum Members
  • Posts

    210
  • Joined

  • Days Won

    2

Posts posted by gvan

  1. 1 минуту назад, rx5670 сказал:

    До 2.06 такого не было

    Вот нашел. Но здесь речь идет о 2.07. Но, возможно, что так теперь везде.

    Но у меня винт спит (нет никаких звуков и вибрация двигателя не чувствует). Остается, для того чтобы убедиться, что не в окружении самого entware дело, временно отключить поддержку opkg, на всякий случай перегрузиться с выключением питания роутера и посмотреть будет ли винт спать.

  2. 1 час назад, rx5670 сказал:

    Если снять галку опкг не придется ли после переустанавливать всю ентварь?

    Нет. Все будет нормально. Можно сколько угодно раз подключать/отключать. Ничего не пропадет.

    1 час назад, rx5670 сказал:

    как видно, кто-то даже не читает, а пишет в диск.

    К сожалению так и не смог научиться на entware, как посмотреть, что за процесс пишет на диск. Копал пакеты dstat, vmstat. Похоже этой поддержки нет в ядре.

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

    Но повторюсь, Если entware развернут не на диске, который хочется чтобы спал, то он отключается со временем (если конечно к нему нет обращений). У меня по крайней мере так.

  3. В 20.10.2016 в 12:12, rx5670 сказал:

    Всех, кто запускается из /opt/etc/init.d, а также minidlna, transmission, cifs останавливал. Обращения к диску не прекращаются (примерно 1 раз в 15 сек мигает лампа).

    Не замечал такого - диск прекрасно спит. Также giga II. Прошивка сейчас правда сейчас стоит экспериментальная v2.06(AAFS.5)C1 и поддержка opkg перенесена с диска на флэшку (но диск присутствует).

    Swap отключен? Будет ли активность.диска, если отключить модуль opkg, оставив при этом сам диск.

    В момент, когда моргает лампочка, что показывает iostat (пример, если диск в системе называется sda):

    # iostat -k -z -t -d sda 1

    iostat, если по-умолчанию отсутствует, то есть в пакете sysstat. Данный пример показывает статистику sda в килобайтах с интервалом каждую секунду, если обращения были (опция -z).

    Также есть пакет iotop. Он бы показал активность процессов, обращающих к диску. Но к сожалению, на entware он у меня не запускается:

    Could not run iotop as some of the requirements are not met:
    - Linux >= 2.6.20 with

     - I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING)

    Еще увидел внимание, что установлен smartmontools. Тоже ранее использовал данный пакет в совокупности с smartd. Обратил внимание, что если "почитать" параметры smart с диска, то у него тоже со сном после этого возникали проблемы. После перезагрузки, если не обращаться для чтения smart проблема сохраняется? Можно даже временно удалить smartmontools (хотя в этом необходимости нет, т.к. он себя по-умолчанию в cron и в автозагрузку не прописывает).

  4. 3 часа назад, HuduGuru сказал:

    Если почитать документацию на syslog-ng (для Кинетиков, кстати, собрана далеко не последняя версия, нет многих возможностей),

    то в документации для ротации логов рекомендованы два способа:

    1) внешний костыль logrotate

    Ну вообще-то называть logrotate костылем, я бы не стал. Как правило, в linux он является штатным средством для ротации, архивирования, удаления логов. Его преимущество заключается в гибкости настроек и универсальности.

    Возможно, ng-syslog и может самостоятельно сохранять логи в требуемом формате, но удалять-то их все-равно придется через cron. А если требуется старые логи сжимать, то тут вообще, скорее всего, без вариантов.

    Но выбор средства борьбы с логами, конечно, остается за пользователем.

    Но я не зря в начале темы указал, что таким образом можно управлять логами не только от syslog. Есть и другие сервисы и службы (например, почтовые-сервера, прокси, tor и т.д.- благо entware нам позволяет это делать!), которые могут сохранять свои логи, причем в разных каталогах и с различным наименованием. В этом случае logrotate сможет легко с ними управляться.

    3 часа назад, HuduGuru сказал:

    в той же документации написано, что на время работы внешнего logrotate желательно syslog-ng останавливать

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

    Но если захотеть, то можно в конфе logrotate сначала останавливать ng-syslog, а потом после ротации запускать. Возможность для этого имеется, но я не вижу в этом необходимости, т.к. данного механизма достаточно.

    4 часа назад, HuduGuru сказал:

    как будут отрабатываться имена файлов с датой при перезагрузке устройства - непонятно, так как при перезагрузке дата сбивается, и остается неправильной до обновления даты через NTP.

    Да, тут могут быть, наверное, проблемы. Но это не вина ng-syslog или logrotate. Поэтому для себя и не вижу смысла писать логи ng-syslog в формате ${YEAR}_${MONTH}_${DAY}.log, а ротацию логов по нужному мне формату раз в сутки доверить logrotate.

  5. 10 минут назад, makc22 сказал:

    А почему просто в имени файла не использовать дату? Или номер недели+год, месяц+год.... на выбор по желаемому объёму? Старые файлы кроном раз в день чистить по маске.

    Не совсем понял о чем вопрос. logrotate как раз и предназначен для того, чтобы не изобретать велосипед и иметь возможность достаточно гибко настроить ротацию логов (особенно если их несколько). Он сам и удаляет старые файлы.

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

    n                        Name                         │ Size  │Modify time 
    ..                                                    │UP--DIR│июл 16 23:38
    messages                                              │   5075│окт 10 12:21
    messages-20160926                                     │ 247934│сен 26 04:02
    messages-20161002                                     │ 187521│окт  2 04:02
    messages-20161010                                     │ 451485│окт 10 04:02

     

    • Thanks 1
  6. Если вы задались задачей собирать логи (журналы работы) системы в отдельный файл, который не стирается после перезагрузки роутера, то, скорее всего, через некоторое время столкнетесь с проблемой, когда размер лога станет занимать значительный объем диска.

    Задача по включении системного логирования во внешний лог описывается в соответствующей теме "Запись syslog на внешний USB-диск с помощю Syslog-ng", (автор Roman_Petrov).

    Здесь рассмотрим непосредственно механизм ротации логов.

    1. Необходимо установить через opkg пакеты logrotate и cron.

    Cron нужен для периодического запуска logrotate. А logrotate в свою очередь требуется для проверки необходимости ротации логов и непосредственно их ротации в соответствии с заданными условиями (например, интервал времени и объем). 

    С cron могут возникнуть проблемы, если файловая система диска fat или ntfs, т.к. на конфигурационных файлах будут неправильные (с точки зрения linux/cron) атрибуты файлов. И задачи просто не будут запускаться. Решение имеется, но нужно ставить crontab из busybox (п.2).

    Второй и третий вариант решения проблемы с cron и ntfs/fat - это изменить файловую систему подключенного диска на ext2 или ext3, либо поставить поддержку opkg на отдельную флэшку (раздел) с ext2/ext3 (если, не хочется возиться с преобразованием основного диска). Для себя я выбрал третий вариант (хотя и на диске с файлами у меня ext3). Но т.к. основной диск у меня используется редко, и я хочу, чтобы он "засыпал" и отключал питание, то все логи пишу на отдельную флэшку (достаточно будет размером 1 Гб).

    2. Настраиваем ротацию логов. Основной конф /opt/etc/logrotate.conf не трогаем и делаем отдельную конфигурацию для ротации файла /opt/var/log/messages (таким же образом можно будет настроить ротирование и других логов, если они у вас имеются - например, от прокси). Для этого в подключаемом по-умолчанию каталоге /opt/etc/logrotate.d (указано в основной конфигурации /opt/etc/logrotate.conf) создаем конф-файл messages и добавляем в него следующие строки:

    Скрытый текст

    /opt/var/log/messages
    {
        maxsize 1M
        rotate 3
        sharedscripts
        postrotate
                    /opt/etc/init.d/S01syslog-ng reconfigure
        endscript
    }

     

    Здесь ротация производится по достижению размера лога 1Мб, хранится всего три последних файла. После ротации лога перезапускается сервис syslog-ng (нужно для правильного продолжения записи в новый лог). С учетом основной конфигурации (см. файл /opt/etc/logrotate.conf, опция weekly) ротация лога будет производиться каждую неделю или же при достижении объема 1Мб.

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

    Перевод документации по logrotate можно посмотреть на сайте OpenNET.

    3. Далее настраиваем cron в основном файле /opt/etc/crontab. Т.к. по-умолчанию задач, выполняемых ежедневно, еженедельно и т.п., у меня нет, то он выглядит так:

    Скрытый текст

    SHELL=/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
    MAILTO=""
    HOME=/
    # ---------- ---------- Default is Empty ---------- ---------- #
    #*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min
    #*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins
    #01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly
    02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily
    #22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly
    #42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly

     

    Раскоментарена только строка для выполнения ежедневных задач. По-умолчанию после установки cron запускаются все задачи (все строки раскоментарены). Т.е. можно данный файл и не изменять, но при этом в /opt/var/log/messages при выполнении этих задач-заглушек (с частотой, как минимум 1 минута) будет появляться соответствующая запись о выполнении данной задачи. Поэтому решать вам.

    Нужно также перезапустить службу cron. Для этого необходимо выполнить команду с консоли:

    /opt/etc/init.d/S10cron restart

    4. Добавляем в cron задачу, которая будет выполняться один раз в сутки. Для этого в каталоге /opt/etc/cron.daily размещаем исполняемый файл. Я его назвал /opt/etc/cron.daily/logrotate . В нем размещены следующие команды:

    Скрытый текст

    #!/opt/bin/sh

    /opt/sbin/logrotate /opt/etc/logrotate.conf

     

    Исполняемым файл можно сделать через пакет mc (файловый менджер - must have) или с командной строки:

    chmod 755 /opt/etc/cron.daily/logrotate

    Можно проверять необходимость ротации логов чаще, а не только раз в сутки. Для этого нужно раскоментировать соответствующие записи /opt/etc/crontab и поместить задачу logrotate в соответствующий каталог.

    Но, как правило, в нашем случае логи быстро не увеличивают размер и в этом необходимости нет.

    Обращаю внимание, что linux очень часто плохо относится к тому, если в текстовых конф-файлах и т.п. последняя строка не заканчивается символом возврата каретки. Поэтому необходимо после последней строки в файле нажимать Enter для перевода курсора на новую пустую строку. В приведенных мной примерах эта пустая строка имеется.

    Всё.

    Если хочется сразу проверить ротацию лога вручную (и его размер в соответствии с конфом уже больше 1Мб), то команду ротации можно принудительно выполнить с консоли (или просто запустить исполняемый файл-задачу):

    /opt/sbin/logrotate /opt/etc/logrotate.conf
    или (т.к. файл у нас уже исполняемый) запустить задачу
    /opt/etc/cron.daily/logrotate
    • Thanks 2
  7. 1 минуту назад, beowulf0208 сказал:

    Спасибо за помощь

    Пожалуйста. Т.е. в итоге заработало? 

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

    • Thanks 2
  8. 8 минут назад, Roman_Petrov сказал:

    Но ради общества в целом можно подробно тему раскурить и внести в шапку.

    Я тоже об этом подумал. Есть желание это оформить в отдельную тему. Да и так правильней будет: сбор логов это одно дело, а управление их ротацией - другое. Могут быть и другие службы запущены, которые пишут свои логи в отдельные файлы (у меня это, например, прокси).

    Просто кроме меня пока это понадобилось только одному пользователю, поэтому пока руки не доходили :)

  9. 8 минут назад, beowulf0208 сказал:

    а на втором разделе (EXT3) установлен Entware. Установлен обычный cron.

    Хорошо. Покажите содержимое файлов /opt/etc/crontab и вывод команды:

    ls -l /opt/etc/crontab
    ls -l /opt/etc/cron.5mins/test.sh
    ps | grep cron

    Также в test.sh лучше написать

    date >> /opt/tmp/crontest.txt

    Также, с учетом того, что cron работает "поверх" основной системы, то свои логи в веб-интерфейсе роутера он не показывает. Желательно включить логирование через ng-syslog, тогда свои сообщения (в т.ч. и об ошибках cron будет бросать в /opt/var/log/messages).

    • Thanks 2
  10. 16 часов назад, beowulf0208 сказал:

    Может кто-нибудь посоветовать способ как проверить работает ли у меня cron

    Уже ответил в теме Просмотр информации SMART (здоровья) подключенного жёсткого диска по возможным проблемам с cron.

  11. В 08.10.2016 в 18:47, beowulf0208 сказал:

    Но результата работы cron я так и не увидел.

    Если установлен обычный cron через opkg install cron, и файловая система на диске с поддержкой opkg ntfs или fat, то работать задачи из cron не будут.

    Нужно поменять файловую систему на ext2/ext3 или установить crontab из busybox (п.2)

  12. 14 часа назад, Roman_Petrov сказал:

    Решение с logrotate действительно интересно, нужно будет при наличии времени попробовать

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

    Свое предыдущее сообщение немного дополнил, конфигурацию для ротации /opt/var/log/messages вынес в отдельный файл (чтобы не изменять основной конф-файл logrotate).

    Пробуйте. Возможно, что-то не учел или где-то ошибся. Если не получится или что-то не заработает, как нужно, сообщайте. Будем разбираться.

  13. 2 часа назад, John9110 сказал:

    Здравствуйте, а как бы еще ограничить файлы логов по объему? или например по дате? ибо многометровый текстовый файл как то не круто)))

    Все можно сделать. И по объему и по времени. Это же linux. Ставьте logrotate (возможно, он по дефолту уже стоит - я не помню) и настраивайте /opt/etc/logrotate.conf.

    Только еще нужно в /opt/etc/cron.daily засунуть задачу, чтобы он запускал ротацию каждые сутки. И, конечно, предварительно поставить cron.

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

  14. 1 час назад, Алексей Миронович сказал:

    какого файла?

    если о syslog-ng.conf то 

    А точно на кинетике у вас 192.168.6.1 адрес, а не 192.168.1.1?

    Если syslog не запущен, то что выдает ручная команда его запуска с ключом -e (вывод ошибок на консоль) "syslog-ng -e"?

  15. 3 часа назад, Алексей Миронович сказал:

    файл проходит проверку, но всё равно при запуске ошибка

     

    Хорошо. Останавливайте службу и попробуйте запустить ее вручную. Я в конф-файле изменил адрес syslog своего сервера

    source src { udp(ip(192.168.1.111) port(514)); internal(); unix-stream("/dev/log"); }; 
    На самом деле на кинетике у меня адрес 192.168.1.1. Проверку на синтаксис проходит, но запускаться отказывается, т.к. syslog пытается забиндиться на указанный адрес, но естественно не может.

    /opt/etc/init.d$ syslog-ng -e
    Error binding socket; addr='AF_INET(192.168.1.111:514)', error='Cannot assign requested address (126)'
    Error initializing source driver; source='src'

    У вас адрес 192.168.6.111 - это адрес, с которого вы хотите принимать лог? А адрес кинетика какой?

  16. 19 часов назад, Алексей Миронович сказал:

     

    тогда к чему там вот эта строчка?

    
    source src { udp(ip(192.168.1.1) port(514)); internal(); unix-stream("/dev/log"); };

    Я склоняюсь все-таки к тому, что у вас какая-то синтаксическая ошибка в конф-файле.

    Завершите процесс syslog и запустите вручную проверку конфигурации на синтаксис.

    /opt/etc$ /opt/etc/init.d/S01syslog-ng stop
     Checking syslog-ng...              alive.
     Shutting down syslog-ng...              done.
    
    /opt/etc$ syslog-ng -s
    syntax error in /opt/etc/syslog-ng.conf at line 14.

    Я намеренно внес ошибку в конф-файл, и проверка на синтаксис ее показала в той строке, в которой она находится.

    Если ошибок в конфигурации нет, то команда проверки завершится без каких-либо сообщений.

    • Thanks 1
  17. В 27.07.2016 в 20:23, Roman_Petrov сказал:

    В локальном варианте, syslog-ng ставиться на тот же роутер, на котором будут сниматься логи и строчка в файле конфигурации

    
    source src { file("/proc/kmsg"); unix-stream("/dev/log"); internal(); };

    меняется на прием сообщений журнала по сети по протоколу udp через порт 514 (как по умолчанию это активируется в роутере)

    
    source src { udp(ip(192.168.1.1) port(514)); };

     

    Только тогда пропадут сообщения от системы и служб, поднятых через opkg (например, от cron).

    У меня после установки ng-syslog было так:

    source src { unix-stream("/dev/log"); internal(); };

    Объединил предложенную запись с системным логгерами:

    source src { udp(ip(192.168.1.1) port(514)); internal(); unix-stream("/dev/log"); };
    • Thanks 2
  18. И, если не затруднит, помогите со скриптом для автозапуска. Спасибо.
    Если известны команды, которые необходимо выполнить при старте роутера, то, как и отмечено выше, скрипт с ними необходимо разместить в /opt/etc/init.d, название файла должно начинаться на S (например, SxxMount_cifs, xx указано для сортировки скриптов, соответственно, скрипт будет выполняться в самом конце).

    Пример скрипта, выполняющегося при старте системы (не имеет отношения к монтированию), есть здесь.

  19. Если кто-то еще не планирует переходить на прошивку 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.

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

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

    Дополняю.

    Читал информацию по 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

  21. 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, что проявляется очень редко.

×
×
  • Create New...