Results 1 to 11 of 11

Thread: Скрипт для "авто"лечения HDD

  1. Thumbs up Скрипт для "авто"лечения HDD

    Надоело ручками выполнять одни и те же команды при лечении HDD, поэтому написал такой скрипт:
    PHP Code:
    #!/bin/sh

    logger -t treat-hdd "treat-hdd has been started"

    /opt/etc/init.d/rc.unslung stop
    sleep 2s

    rm 
    /tmp/syslog.log
    cat 
    /opt/var/log/messages >> /tmp/syslog.log
    /sbin/syslogd -m 0 -s 0 -/tmp/syslog.log --l 7

    for i in `cat /proc/mounts | awk '/ext3/{print($1)}'`
    do
        
    lsof -t $i xargs kill -9
        mount 
    -o remount,ro $i
    done

    # тут нужно вписать все линки (если есть) и ФС, что у вас есть
    /bin/umount /opt
    /bin/umount /home
    /bin/umount /tmp/mnt

    for i in `/usr/bin/awk '/ext3/{print($1)}' /etc/fstab`
    do
      /
    bin/grep -q $i /proc/mounts || /sbin/fsck.ext3 -yvf $i 2>&| /usr/bin/logger -t fsck.ext3
    done

    for i in `/usr/bin/awk '/ext3/{print($1)}' /etc/fstab`
    do
      /
    bin/grep -q $i /proc/mounts || /bin/mount $i 2>&1
    done

    # смонтировать обратно линки (если есть)
    /bin/mount -o bind,sync,noatime,rw /tmp/mnt/opt /opt
    /bin/mount -o bind,sync,noatime,rw /tmp/mnt/part1 /home

    # кусок post-mount для запуска "жизни" роутера
    # дополнить по вкусу
    /opt/sbin/transmission_watchdog
    /opt/etc/init.d/rc.unslung start
    sleep 2s

    logger 
    -t treat-hdd "treat-hdd has been finished" 
    Важно помнить, что для функционирования этого скрипта на HDD присутствовал swap в виде отдельного раздела! Предупреждая вопросы "да он у всех есть!" хочу сказать, что некоторые используют swap-файл, а не swap-раздел.
    Скрипт положить в /usr/local/sbin/, назвать treat-hdd и сделать chmod +x /usr/local/sbin/*. Не забыть сделать flashfs save && flashfs commit для сохранения результата
    В последствии, в логе, можно посмотреть результаты лечения. Или сделать выборку cat /opt/var/log/messages | grep fsck.ext3 либо в терминале, либо через web-морду роутера System Setup - System Command.

    Этот скрипт можно загнать в cron:
    PHP Code:
    # лечить HDD 1-го и 15-го числа каждого месяца
    03 3 1,15 * * root /usr/local/sbin/treat-hdd 
    Last edited by Сhemist; 30-05-2009 at 15:59.
    Последние работы на elist.ws & motozone.ru!

    Если фортуна повернулась к тебе задом... не теряйся!

  2. #2
    Quote Originally Posted by Сhemist View Post
    Надоело ручками выполнять одни и те же команды при лечении HDD, поэтому написал такой скрипт:
    Вспоминается сразу анекдот про автомат для бриться: "Да, но лица же у всех разные?! Да, но только первый раз..."
    Так и тут... Вы правда считаете, что все проблемы с ФС можно и нужно решать слепым указанием '-y' для fsck? Да еще другим советуете...
    Знаете, так Вы можете узнать о проблеме, когда уже на диске даже восстанавливать будет нечего...
    © 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc

  3. Quote Originally Posted by ABATAPA View Post
    Вы правда считаете, что
    Да, и никаких проблем не вижу, потому что:
    а) никто не отменяет ежедневное чтение логов. Мой небольшой опыт UNIX-подобных систем приучил меня утреннее прочтение новостей в Интернете почему-то начинать с логов моих серверов
    б) никто не отменяет еженощный бэкап. И даже такую малютку, как этот роутер я бэкаплю на независимую систему.
    в) честно, но я еще не разу не сталкивался с такими ошибками, что ключ '-y' что-то испортил. Всегда после проверки проверяю lost+found - это тоже никто не отменял.
    г) и как можно заметить, в этом скрипте, сделал запись лога выполнения этой операции именно для того, чтобы контролировать процесс.

    Почему уважаемый ABATAPA так набросился на '-y' для fsck.ext3 в моем примере? Почему Вы проигнорировали это здесь, здесь и здесь
    В конце концов голову тоже никто не отменял. Тупое копирование буковок и циферок с форума на свой роутер возможно только из [DURAK EDITIONS].

    Однако стоит заметить, что я не отрицаю опасность ключа '-y', так как сам не люблю чтобы система проявляла подобие интеллекта. Поэтому для тупых американцев (с)Задорнов пишу: Все вышеизложенное вы используете на свой страх и риск!!! Автор не несет ответственности за потерю данных после использования этого скрипта!!!
    Последние работы на elist.ws & motozone.ru!

    Если фортуна повернулась к тебе задом... не теряйся!

  4. #4
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    может имеет смысл разобраться с причиной постоянных ошибок? Я свой диск проверял вручную, наверное, года полтора назад, когда как раз выяснилось, что были проблемы с usb переходником. С тех пор ни разу, хотя работает 24/7

  5. У меня на "обслуживании" два роутера. На одном регулярно, раз в месяц что-то слетает. На другом пореже, скажем раз в три месяца, но тоже глючит. Пробовал коробки менять (USB-box), БП 4А поставил, сделал swap-раздел, pre-mount и pre-shutdown настроил - все одно не помогает. Кстати, после смены коробки под HDD вегда происходил глобальный наворот с переформатированием (спецам на заметку).
    Нагрузка тоже по максимуму. 24/7 торрент с десятком раздачь и осел с десятком файлов... + собственно инет не несколько компов по вафле и шара по samba.
    Не знаю уж за что взяться Пришлось вот такой "топор" делать, чтобы больную голову лечить.

    Сам удивляюсь, потому что на "больших" машинах вообще ни разу не пользовался fsck-ом!
    Last edited by Сhemist; 31-05-2009 at 09:00.
    Последние работы на elist.ws & motozone.ru!

    Если фортуна повернулась к тебе задом... не теряйся!

  6. #6
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    основных причин --- две: глюки железа, либо желание от этого слабого устройства получить слишком много. Осел и rtorrent у меня тоже работают. Для начала посоветовал бы избавиться от всех веб морд --- php это баловство. Т.е. оставить только то, без чего нельзя.

  7. Quote Originally Posted by al37919 View Post
    желание от этого слабого устройства получить слишком много
    +10 Тут я полностью согласен - злоупотребляю по максимуму. Собственно "второй" роутер, что реже глючит, и загружен значительно меньше.
    Quote Originally Posted by al37919 View Post
    Для начала посоветовал бы избавиться от всех веб морд --- php это баловство
    На это я пойтить не могу У меня стоят squid (мне кажется из-за него все регулярно валится) и несколько морд: CGI-PROXY, ftp2www, ADOS, vnStat + vnStat PHP frontend, RRDTool и еще немного своих прибамбасов. Думаю от этого должен помереть любой подобный девайс
    Последние работы на elist.ws & motozone.ru!

    Если фортуна повернулась к тебе задом... не теряйся!

  8. #8
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    На это я пойтить не могу У меня стоят squid (мне кажется из-за него все регулярно валится) и несколько морд: CGI-PROXY, ftp2www, ADOS, vnStat + vnStat PHP frontend, RRDTool и еще немного своих прибамбасов. Думаю от этого должен помереть любой подобный девайс
    да, я думаю это все объясняет... Ну тогда проверяй почаще. Например, через cron ежесуточно ночью

  9. Quote Originally Posted by al37919 View Post
    ежесуточно
    Думаю, раз в две недели пока хватит. Если еженощно зарядить ABATAPA будет ругаться
    Последние работы на elist.ws & motozone.ru!

    Если фортуна повернулась к тебе задом... не теряйся!

  10. #10
    Вещь однозначно полезная.
    А если что кому надо подпилять под конкретные условия - напильник в руки.

  11. #11
    Quote Originally Posted by Сhemist View Post
    Да, и никаких проблем не вижу, потому что:
    Когда Вы (или кто-то другой) увидите проблемы, может быть уже поздно.
    Например, сменится геометрия "винта" после перетыкания в "большой" комп и запуска какой-нибудь утилиты (типа PQ Magick 8), которая "исправит" таблицу разделов и "подвинет" начало раздела. И т. д. Я столько таких случаев видел, что все вспоминать просто не хочу.
    Кроме того, ключ '-y' не гарантирует, что вопросы задаваться не будут.
    Например, они будут задаваться, если раздел смонтирован:
    Code:
    $ fsck -yvf /dev/discs/disc0/part2
    fsck 1.41.4 (27-Jan-2009)
    WARNING: couldn't open /etc/fstab: No such file or directory
    e2fsck 1.38 (30-Jun-2005)
    /dev/discs/disc0/part2 is mounted.
    
    WARNING!!!  Running e2fsck on a mounted filesystem may cause
    SEVERE filesystem damage.
    
    Do you really want to continue (y/n)?
    И запуск такого скрипта не с консоли приведет к тому, что на этом вопросе все и прервется.
    И `rc.unslung stop` отнюдь не гарантирует, что удастся перемонтировать раздел в 'ro' - его, например, могут "держать" процессы, которые сбрасывают данные на диск перед выходом (например, transmission), а задержки, а уж тем более проверки на то, что перемонтирование в 'ro' удалось, там нет; могут "держать" "зомби"-процессы, имеющие открытые файлы на запись, процессы, которые открыли каталог ниже точки монтирования (например, хозяин зашел ssh/telnet, и в консоли сделал `cd /каталог`.
    И, таким образом, fsck не отработает. Заметит ли автор это в логах? Ведь там будет всего лишь строка вида "fsck.ext3: /dev/discs/disc0/part2 is mounted". Ведь не для всех очевидно, что это сообщение, по сути, об ошибке. Или будет излишне полагаться на "панацею"? Кроме того, в приведенном скрипте далеко не все передается в лог. Например, там не будет тех самых ошибок перемонтирования, и последующего монтирования. Может, тогда уж и там поставить pipe?

    Наиболее грамотным будет перегружать роутер и выполнять проверку при загрузке. Остановка программ и перемонтирование разделов все равно приведет к перерыву сервисов - так тогда зачем все усложнять? Перезагрузка заодно "почистит" утечки памяти, "освежит" swap. И главное - если она будет производиться вручную, а не "на автопилоте", то человек сможет заметить ошибку. А уж индицировать её можно разными путями - тем же миганием PWR с помощью pwrled.

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


    Quote Originally Posted by Сhemist View Post
    Думаю, раз в две недели пока хватит. Если еженощно зарядить ABATAPA будет ругаться
    Да мне все равно. Это не я к кому-то, а ко мне обращаются с просьбой помочь восстановить данные. У меня-то все работает - месяцами и годами...
    © 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc

Similar Threads

  1. Скрипт для скачивания подкастов Python + Google Reader
    By 1ac3124 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 4
    Last Post: 18-08-2010, 12:36
  2. Помогите разобрать скрипт rc.unslung
    By raiwo in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 5
    Last Post: 28-10-2008, 19:51
  3. Flashing Oleg's Firmware in WL HDD
    By hugo in forum WL-HDD Custom Development
    Replies: 29
    Last Post: 21-10-2004, 14:55

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •