The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как врукопашную подготовить FreeBSD к отключению сервера?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 02-Янв-09, 17:43 
Здравствуйте!

Стоит следующая задача: требуется корректно остановить сервер на FreeBSD и выдать команду на UPS для отключение питания.
UPS "тупой": умеет отключаться только мгновенно (без программируемой задержки) по получению надлежащего сигнала. Для этого надо из скрипта выполнить все подготовительные действия по остановке FreeBSD и _после_ этого вызвать определенную команду.

Участники проектов apcupsd и NUT считают, что данным типом UPS задача решения не имеет, т.к. скрипт rc.shutdown полностью отрабатывает до того, как будут завершены все процессы и файловая система будет стабильна. Окончательные действия выполняются из ядра, и вызвать команду управления UPSом к этому моменту уже невозможно. Тем не менее, один испанец предлагает вручную прописать в rc.shutdown размонтирование и перемонтирование в r/o файловых систем и после этого вызов "рубильника". Сразу скажу, это не срабатывает. /var и /usr не размонтируются, т.к. заняты процессами. Вызов umount -af приводит к немедленному обрушению почти всех оставшихся процессов. Это понятно. Но, хотя отключение питания вещь сама по себе аварийная, не хочется так насиловать систему (хотя крах процессов все же лучше краха файловой системы...). Так можно ли все-таки написать корректный скрипт, аналогичный действиям ядра перед остановкой системы? Что именно ядро делает и в какой последовательности? На ковыряние исходников моего экспириенса, к сожалению, не хватает...

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от Аноним (??) on 02-Янв-09, 20:37 
Отбомжуй в проходе метро денег и купи нормальный УПС.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 02-Янв-09, 20:57 
Уважаемый сэр, меня не интересует Ваше мнение, где мне взять денег на новый UPS. Если не понятно с первого раза, вопрос находится в заголовке.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от anonymous (??) on 02-Янв-09, 21:58 
>Стоит следующая задача: требуется корректно остановить сервер на FreeBSD и выдать команду
>на UPS для отключение питания.
>UPS "тупой": умеет отключаться только мгновенно (без программируемой задержки) по получению надлежащего
>сигнала.

если он настолько тупой, то попробуйте решить проблему "железно" -- т.е. посылать нужный сигнал после пропадания 5V от БП "сервера".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 03-Янв-09, 01:08 
>если он настолько тупой, то попробуйте решить проблему "железно" -- т.е. посылать
>нужный сигнал после пропадания 5V от БП "сервера".

Обычный старенький "dumb signaling". Ваше решение мне нравится оригинальностью! Про использование ACPI при шатдауне я, честно говоря, не подумал. Но тут дело такое. Доделать сам интерфейс UPS'а аппаратно, до поддержки задержки отключения, мне тоже не трудно. Тогда все делается вообще штатно. Интерес больше академический, именно к ковырянию Фри. Здесь я знаю гораздо меньше, а интересно разобраться. Поиск по Интернету практически ничего не дал.
Да, если это правда вызывает вопросы. Сервер домашний и все это делается ради чистого энтузиазизму.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от Vladimir (??) on 04-Янв-09, 01:00 
Думаю придется править и пересобирать ядро.
В /usr/src/sys/kern/kern_shutdown.c есть функция shutdown_halt, которая выдает соотв. сообщение на консоль и вызывает cpu_halt().
До этого момента уже все необходимые процедуры выполнены, все процессы потушены, фс синхронизированы и отмонтированы.
Перед вызовом cpu_halt() необходимо сменить RTS на ком-порту (или другой сигнал, смотря какой кабель к упсу).

i386_set_ioperm(0x03fc,1,1);
outb(0x03fc,2);
i386_set_ioperm(0x03fc,1,0);

Где 0x03fc - регистр выходов ком-порта при базовом адресе 0x03f8 (+4)
2 - второй бит отвечает за RTS, возможно надо записать 0.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 04-Янв-09, 20:59 
>Думаю придется править и пересобирать ядро.
>В /usr/src/sys/kern/kern_shutdown.c есть функция shutdown_halt,

Вот спасибо за наводку на нужное место!

>i386_set_ioperm(0x03fc,1,1);
>outb(0x03fc,2);
>i386_set_ioperm(0x03fc,1,0);

А можно ли из ядра работать с устройствами через open(), ioctl()?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от Vladin (ok) on 11-Янв-09, 19:52 
есть результат ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от anonymous (??) on 03-Янв-09, 01:23 
>один испанец предлагает вручную прописать в rc.shutdown
>размонтирование и перемонтирование в r/o файловых систем и после этого вызов
>"рубильника". Сразу скажу, это не срабатывает. /var и /usr не размонтируются,
>т.к. заняты процессами.

Значит, процессы нужно остановить.
Моё предложение такое:
Вот идёт нормальная последовательность остановки:
stop одно
stop другое
....
stop последнее
umount всё
<----------- вот сюда вставить mount -o ro ...
<----------- послать команду UPS-у выключиться
halt

А что за UPS такой тупой?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 03-Янв-09, 02:15 
>Значит, процессы нужно остановить.
>Моё предложение такое:
>Вот идёт нормальная последовательность остановки:
> stop одно
> stop другое
> ....
> stop последнее

Что касается процессов имеющих управляющие скрипты в rc.d, это делается в rc.shutdown и так. Но в системе может быть произвольное количество процессов, которые никак не управляются этим механизмом и, вообще, может быть загружено что угодно. Как их вылавливать, я себе не очень представляю. kill -15 -1 дает феерический эффект: убивается в том числе и шел, который выполняет rc.shutdown. Естественно, это никуда не годится. В этом то и проблема. К тому же я не уверен, что ядро только процессы подчищает и файловую систему останавливает. Возможно оно еще какие-то действия совершает перед остановкой.

> А что за UPS такой тупой?

Конкретно этот Powercom ONH-600. Выпускался лет 10 назад. Интересен оригинальной, ныне похоже не используемой, схемотехникой, представляющей гибрид on-line и standby. Не вижу пока смысла менять его только ради обладания smart signaling. За эти деньги гораздо интереснее собрать систему удаленного мониторинга/управления по GSM.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от Крин on 03-Янв-09, 11:19 
>[оверквотинг удален]
>проблема. К тому же я не уверен, что ядро только процессы
>подчищает и файловую систему останавливает. Возможно оно еще какие-то действия совершает
>перед остановкой.
>
>> А что за UPS такой тупой?
>
>Конкретно этот Powercom ONH-600. Выпускался лет 10 назад. Интересен оригинальной, ныне похоже
>не используемой, схемотехникой, представляющей гибрид on-line и standby. Не вижу пока
>смысла менять его только ради обладания smart signaling. За эти деньги
>гораздо интереснее собрать систему удаленного мониторинга/управления по GSM.

Да бросьте вы... тот же киловатный упс от инелта c поддержкой нужного вам "парашюта" стоит не так дорого... http://www.ineltups.ru/index.php?direct=catalog&topic=105161...
Каким образом его цеплять к вашей фрюхе спросите в местной тех. поддержки. Они точно знают. Просто там в дурацком описании к дровам написано, что поддерживаются уже несуществующие версии фри... а реально надо по другому настраивать о чем местная тех. поддержка вам с радостью сообщит.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Как врукопашную подготовить FreeBSD к отключению сервера?"  
Сообщение от DmitryVS (ok) on 03-Янв-09, 12:48 
>Да бросьте вы... тот же киловатный упс от инелта c поддержкой нужного
>вам "парашюта" стоит не так дорого...

Ну ёлки-палки. Я ж писал уже, нет проблемы пойти и купить что угодно. Вопрос в том, что мне стало интересно, можно ли аккуратно погасить Фрю до передачи управления ядру.

PS: Предложенный UPS - бяка, по сравнению с имеющимся. Он даже гладкую синусоиду не выдаёт. Если уж менять, то на более приличный line-interactive или on-line.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Как врукопашную"  
Сообщение от Andrey Mitrofanov on 03-Янв-09, 12:55 
>PS: Предложенный UPS - бяка
>Он даже гладкую синусоиду не выдаёт. Если уж менять, то на более приличный

И обязательно с безкислородными проводами для ярких низов! %))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Как врукопашную"  
Сообщение от Keeper email(??) on 03-Янв-09, 17:44 
>>Он даже гладкую синусоиду не выдаёт. Если уж менять, то на более приличный
>
>И обязательно с безкислородными проводами для ярких низов! %))

И с электролитом из соплей девственницы. ^_^

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру