LINUX.ORG.RU

Разработка ПО устойчивого к сбоям под Linux


0

0
Может кто посоветует.
Надо написать небольшую прогу, она будет использоваться на
дровах типа троек или четверок, в жестком режиме - когда
на день несколько раз могут вырубать свет или просто тупо
выключать комп.
Вопрос такой - какую взять файловую систему чтоб она была устойчива
к такого рода сбоям.
★
Никакая файловая система (и никакое железо) такого не переживет. Разве что раскошелишься на гигабайтную флэшку...
vsl ☆
()
Ну это читать надо !
Делаеш линух на дискетке ! пихаеш туда прогу!
тока надо чтобы дисковод дискетку непортил при включении
выключении! Вроде есть такие умные !
Ставиш винт неважно какой ! Главное чтоб он сам ненакрылся!
Пихаем дискетку в дисковод !
Включаем питание!
Грузиш ядро в память ! запускаеш fdisk сносиш все
бьеш винт на разделы ! mkfs!
с дискетки все разворачеваеш на винт
и все запускаеш наверное классно получится !
Ну логи прийдется слать куданибуть на стабильное !

Где то дока была на эту тему!

Да ежели памяти много (в чем я сомневаюсь) то можно и без
винта обойтись ! Тогда все круто будет!

Да если поразмыслить то можно поставить первый винт в
read_only аппаратно и монтировать в read_only!
все с него грузить и разворачивать на второй !

Вобщем нема денег занимаемся гемороем :-(
Aleks_IZA ★
()
Попробую более точнее сформулировать вопрос,
на винте надо хранить небольшую БД которая в процессе работы обновляется.
Но так как linux-овый ext2 все операции с диском здорово кэширует,
то вероятность потери данны при сбое очень велика.
Интересно чтобы было нечто похожее на транзакции, то бишь я
я сам мог управлять работой кэша, скажем я накапливаются изменения
в файлах А,В и С, потом я говорю "записать на диск" и происходит
запись всех изменения на диск, если перед "записать на диск" вырубился свет
то файлы А,В,С останутся в предыдущем состоянии. Конечно
если свет вырубят в момент физической записи, то получится херня.
Но вариант такого события уже намного маловерояней, и его можно обойти.

Ты упоминал про доку. Если можно поподробней.
temofey ★
() автор топика
Про доку сразу нескажу !
Исчи на тему watchdog или удаленных роутеров нв линухе!
Про этот изврат есть две статейки!

А про кешерирование были грабли man fsynk должно помочь!
Но так непрокатит может аккомулятор от мотоцикла через диод на
5 вольт и на 12 от машины!
Неполучится что либо на диске хранить !
Aleks_IZA ★
()
Нет таких крепостей которые небрали большевики :-).
Конечно к 0-я вероятность потери данных свести не удастся,
но до разумных пределов я думаю можно.
Просто интересно если кто нечто подобное делал? Отзовитесь.
temofey ★
() автор топика
Ответ на: комментарий от temofey
Как я уже помянул, в промышленных железках используют флэшки. Но это сильно дорого. Гораздо дешевле поставить UPS (если физические условия, где железка расположена будет, сие позволят). Если есть возможность протянуть ethernet - то использовать diskless тачку и отдельно сервер, защищенный UPS-ом и милиционером со свистком и дробовиком.
vsl ☆
()
поставь журнализируемую FS - reiserFS (будь там пеньтиумы сказал бы поставить NTFS :) По крайней мере журнализирвоанные FS гарантируют не противоречивость логических записей на диске.
Ogr ★
()
Записали A,B,C umount; mount записали A+B+C; umount; mount; стерли
A,B,C. Жуть, а что делать? Еще лучше, если база и A,B,C на разных
разделах, причем слет нафиг одного 100% не должено сказываться на
восстанавливаемость задачи.
PS: это я придумал только что, не серчайте если что...


vodz ★★★★★
()
без UPS'ы хотя бы для аварийного завершения только вешаться остаётся
anonymous
()
Ответ на: комментарий от Ogr
А кого колышет целостность метаданных FS, когда нужна в первую очередь целостность файловых данных? Журналирующие FS не помогут (тем более NTFS, где журналирования что-то и не видно, так лихо она умеет слетать).
vsl ☆
()
2vsl: не надо на счет слетать, еще не разу не видел, хотя выключал нт просто кнопкой питания часто...
2temofey: разбей диски на три раздела: boot, там где база писать будет и все остальное, тем самым ты уменьшишь вероятность слета вообще всего и глянуть как система синхронизирует когда используются magic key и сделать тоже самое, наверняка есть соответсвующий ioctl и вот вызывать его перодически.
Ogr ★
()
Ответ на: комментарий от Ogr
Слетает NTFS со страшной силой, еще веселее, чем ext2... Ну а всякие там извращения с синхронизацией ни к чему хорошему все равно не приведут. Файлы базы данных угробить элементарно, они посложнее любой fs будут...
vsl ☆
()
Граждане какой UPS, UPS - будет стоить больше чем таже вонючая тройка,
на которой все будет исполнятся.
2Org: Что такое magic key?

Такой вопрос - какой минимум ОЗУ на которой будет крутится линукс?
Сразу говорю никаких сетевых примочек не надо.
temofey ★
() автор топика
Ответ на: комментарий от vsl
а причём тут метаданные, SIGPWR handler при достаточном количестве времени (например, ups на 30 секунд) выведет программу к выходу за ручку и всего хорошего пожелает.
anonymous
()
2temofey: magic-key это комбинация sysrq+еще одна клавиша. В линукс используется в лсучае глобального зависания для того чтоб прибить, сохранить данные перед тем как нажмешькнопку питания. Соответствующая документация лежит в /usr/src/linux/Documentation. Кстати ты еще можешь делать бэк-ап на лету (PostgreSQL это умеет), и бэк-ап переписывать на один из не активных разделов. Будет выглядет так (раздел B - back-up( желательно reiserfs), A - куда база данных пишет (все равно какой, этот раздел после каждого unexpected reboot должен быть пересоздан) ):
1) делаешь бэк-ап, на A
2) копируешь его под уникальным именем на B (если в этот момент вырубят питание, то этот бэк-ап улетит)
3) на разделе B хранятся предыдущие бэк-апы, последний из них имеет линк на last-good-backup (lgb)
4) после перезаписывания перекидываешь линк lgb на только что скопированный бэкап (Если вырубят питания на этом месте, то из-за того что журнализированная ос сохраняет метаданные, линк не улетит в неизвестность, а будет показывать на предыдущий бэкап, и даже если вылетит fs, то вероятность такого события ничтожна, т.к. перекидывание линка оооочень быстрая опперация).
5) при unexpected reboot (т.е. система при старте пишет куда-то, что она загрузилась, а при нормальном shutdown'e что нормально выгрузилась) раздел A удаляется и пересоздается, туда же копируется lgb. Возможен как вариант перед удалением проверить целосность базы и на этом основании принимать решение об удалении.
Таким образом у тебя всегда есть last-good-know-state. Частота делания таких бэкапов определяется эксперементально.
2vsl: я не собираюсь тут флеймить, это не фронтпэйдж сайта и не прикольно. Опубликуй новость про НТ Sucks на главной странице и я с удовольствием буду флеймить.
Ogr ★
()
Спасибо, чегото вроде этого я и думал.

И всетаки какой минимальный обьем ОЗУ для Линукса?
В 1Мб влезет? Или это не реально?
Еще вопрос - возможноли сжатие данных на лету на уровне
файловой системы?
temofey ★
() автор топика
2temofey: 1мег это очень очень мало. У меня есть ноутбук 486dx2 66 c 8 мегами, заргузка на нем RH6.2 с выключенными по макисмуму демонами вглядит очень душераздирающе. Тебе придется выкинуть из системы все не нужные модули (т.е. тереть с диска, чтоб не мешали), но все равно для работы нужно хотя бы 4 мега, чтоб это все как-нибудь еще и шевелилось.
Ogr ★
()
Ответ на: комментарий от temofey
Надежности по дешевке НЕ БЫВАЕТ в принципе. Или ты за копейки соберешь убожество, которое сдохнет через месяц, или потратишь в два/три раза больше, и получишь надежную систему, которую один раз поставил, и забыл. И вообще, объяснил бы, какая задача... Промышленная железка, или что еще?
vsl ☆
()
Linux kernel gruzitsya s adresa 1mb t.e. eto ne proidet ...
dumau chto na 4mb on zavedetsya ... koe-kak
ovsov ★
()
Понял. Спасибо.
2vsl: если затраты в 2-3 раза больше то вопрос сам собой отпадет.
Тогда себестоимость получается высоковата. А задача - построить
нечто вроде кассового аппарата.
temofey ★
() автор топика
По поводу кассовых аппаратов!
На сегодняшний день выглядит так!
Стоит флаш маркировку непомню гдето на 16 киллобайт!
Все что бьется пишется во флэш!
Вечером при снятии отчетов ! все дневные чеки плюсуются и
записывается общая выручка в ПЗУ на 256 кил (64 кил)!
одной строкой.

Лет на 10 хватит ежели небольше :-)

Флэшка простая как 3-и рубля обойдется в 50 руб микросхема
+ 100 руб рассыпуха микросхем(+ПЗУ РФ8) для адаптера!
Подцепиш это все к com или lpt но вот прогу писать самому
прийдется !
Aleks_IZA ★
()
Ответ на: комментарий от temofey
Я поминал и про другой, дешевый вариант: завести сервер, который все такие аппараты обслуживал бы, и сетку протянуть. Или аппарат один нужен?
vsl ☆
()
Аппаратов нужно много. Но они работают в автономном режиме, никаких сетей.
temofey ★
() автор топика
Сделайте как раньше было в Сбербанке - провели операцию, на матричнике печатается строчка лога :). А на счет mount/umount - неужели идея не понравилась? Она ведь абсолютно рабочая при одном дополнении: на обоих файлухах нужно создать файлы, заполнив их не нулями, размером равным кешу диска (железного) и после демонтирования, диск должен быть подмонтирован с noatime, a туда опять писать эти единицы, не стирая, а прямо поверх - тем самым гарантируется сброс апаратного кеша при демонтировании и неизменный суперблок.
vodz ★★★★★
()
Пачему не нравится, все мне нравится - основные идеи понятны. Будем пробовать. Есть еще вопросы. Про возможность сжатия данных ФС на лету. Возможно ли? И еще кто нибудь работал с мини дистрибутивами? Интересует следующее - есть скажем минимальный набор всякой билиберды: поддержка IDE, PCI, ISA, VGA, LPT + пользовательская программа. Какова вероятность того что на случайно взятый комп начиная с 386го - все это станет без проблем?
temofey ★
() автор топика
Ответ на: комментарий от temofey
Сжатие для ext2 есть, и вполне нормально работает (я за 3 года использования e2compr на проблемы не нарывался), но все же оно очень сильно снижает надежность. Так что лучше забыть. Я таки не понимаю, чем плоха сеть? Это не сильно дорого получится, дешевле, чем весь тот трах, который ты поимеешь, добиваясь надежности. Кроме того, на винтах поэкономишь...
vsl ☆
()
Я против сети ничего не имею, но как ты собираешься провести сеть скажем в несколько сотен организаций разбросанных по всей стране и разных по уровню - начиная от киоска продающего жевачки - до супермаркета? Хотя наше мудрое правительство хотело нечто подобное сделать - в каждом киоске к кассовому аппрату приделать радиомодем и чтоб данные о каждой покупке бутылки пива прямиком отправлялись в к фискальным органам. Во как. Прямо план ГОЭРЛО. Слава богу ума хватило отказатся.
temofey ★
() автор топика
Ответ на: комментарий от temofey
? ??? ?? ???? ?????? ?????????? ??? ?????? ????????-??????????? ? ???????????
vsl ☆
()
Ответ на: комментарий от temofey
Все, блин, не буду больше пробовать мазилу. Короче, я хотел сказать, что что же это за кассовые аппараты без сетки? Что, мальчик-побегайчик с дискеткой в конце рабочего дня носиться будет?
vsl ☆
()
Может я и не в тему, однако жа припомнился мне тут ROM DOS. Творение небезизвестной Calder'ы

(не надо меня бить!)

Сам по себе ДОС может работать с новелловсой сеткой. Итого: ДОС в ПЗУ (а можно и прогу), сетевой адаптер, и провод. До сервера.

Если все же интересно, то можно поискать на калдеровском ftp. Что-то вроде embedding dos...

anonymous
()
Граждане я может не по руски говорю в 10-й раз,
_сетка в условиях задачи отсутствует как понятие_.
Повторю еще раз что меня интересует:
Интересует следующее - есть скажем минимальный набор всякой
билиберды: поддержка IDE, PCI, ISA, VGA, LPT + пользовательская
программа. Какова вероятность того что на случайно взятый
комп начиная с 386го - все это станет без проблем?
temofey ★
() автор топика
А чем umount; mount; _save_; umount; mount лучше, чем sync; _save_; sync ?

Я бы сделал так: два раздела - система+прога и данные(наименьший раздел). Система всегда readonly, данные либо read-only постоянно, remount rw при записи либо raedwrite всегда, при падении питания fsck в любом случае пройдет быстро.

eliterr ★
()
Если не будешь увлекаться новшествами типа ядра 2.4.0, то работать будет норамьно, особенно если из того списка выкинуть PCI, и все, что надо, скомпилировано под i386.

А по поводу памяти - работал у меня Slackware 4.0 на 386+4Mb. Без компиляции и иксов работал нормально, даже свопа больше 8Mb не требовалось для tetex'а.

eliterr ★
()
temofey: Слушай, а ты уверен что для твоей задачи необходим именно линукс? Может быть на самом деле дос хватит? Там и памяти мега достаточно, и с железом проблем практически нет. Писать можно на винт через bios в конец _устройства_ - что то вроде своей ФС. Дос и ФАТ проще в этом отношении. А если волнует "легальность" - возьми FreeDOS. Или у меня еще интереснее валяется - сырцы килобайт на 20 в асме - вроде доса. Даже проги запускает многие.
P.S. За упоминание "не-линукса" сильно прошу не бить :)))
antt ★
()
> акова вероятность того что на случайно взятый
> комп начиная с 386го - все это станет без проблем?
Высокая.
А надёжность... ReiserFS с сокращённым до минимума временем "отброса" (в ноль его! man fstab!) минимизирует возможные гондурасы.
AffreuxChien ★
()
А я бы посоветовал использовать в качестве файловой системы AdvFS . Ибо устойчивая она к сбоям и очень быстро проверяется - проверено на собственном опыте
anonymous
()
2eliterr:Насчет убрать поддержку PCI - так проблематично, потому как
видеокарта на PCI, тоже может сидеть. А что PCI - настолько проблематичная
штука?

А насколько ReiserFS требовательна к памяти? И возможноли ее криптование?
И как она со старыми ядрами дружит?
temofey ★
() автор топика
Ya bolshe goda nazad zanimalsya primerno shozhei problemoi dlya odnogo iz holdingov v Moskve. Delal dlya nih korporativnuu sistemu peredachi elektronnyh soobshenii. Odna iz zadach byla sleduushei - neobhodimo bylo avtomaticheski peredavat' dannye iz proizvodstvennyh podrazdelenii (tam beton izgotavlivaut, poetomu vsudu cementnaya pyl', gryaz' i polnoe otsutsvie ludei hot' chto-nibud' ponimaushih v komputerah). My ispol'zovali tam svyazku pochtovyi server (Linux) + DOS client. Na servere modem, nastroeno uucp+sendmail i svoi sobstvennyi soft dlya avtomaticheskoi peredachi failov v central'noe podrazdelenie. Dos client imeet dostup k Linux cherez ncpfs (na Linux zapushen mars-nwe) Tak vot, dlya togo chtoby sdelat' server poustoichivei bylo sdelano sleduushee. Kornevoi rasdel montirovalsya v rezhime read-only. /tmp i /var zavedeny na otdel'nyae razdely. Krome togo master obrazy /tmp i /var hranyatsya v kornevom razdele (dopustim /images/tmp i /images/var). Ya perepisal rc.sysinit (my ispol'zovali RedHat5.2) sleduushim obrazom. kornevoi razdel ne proveryaetsya fsck nikogda tak kak povrezhdeniya failovoi systemy voznikaut v osnovnom pri rabote v rezhime read-write. Esli pri proverke /tmp ili /var fsck vozvrashaet oshibku, to my prosto formatiruem eti razdely (mkfs.ext2) i kopiruem na nih obrazy /images/tmp i /images/var iz kornevogo razdela. Dopolnitelno tam stoit UPS i zapushem programmnyi watchdog. Nu i prishlos' neskolko dopolnitelnyh usilii prilozhit', chtoby nekotorye faily iz /etc (i celikom /dev) v kotoryie vse taki proishodit zapis' pri rabote systemy peretashit' v /var. V itoge my poluchili pochtovyi server, kotoryi mozhno smelo vykluchat' bez shutdown i voobshe obrashatsya s nim ochen' vol'no (ludi kotorye tam sidyat znaut pro server tolko to, chto esli chto-to ne tak, nado vykluchit' UPS iz seti i podozhdat' 10 minut). Poterya dannyh konechno vozmozhna, no s etim tam mozhno miritsya, esli voznikaut problemy oni prosto povtoryaut otsylku failov. Bylo ustanovleno 7 takih serverov i oni rabotaut v avtonomnom rezhime uzhe bolshe goda bez sboev. Fedor.
anonymous
()
> А насколько ReiserFS требовательна к памяти?
Примеро как ext2, но чем больше - тем лучше.
> И возможноли ее криптование?
Непрямую - нет, можно через loop-устройства.

Насчёт старых ядер... 2.2.16 и 2.2.18 - Ok.

Но всё равно - однозначного ответа в Вашей ситуации никто не даст....
AffreuxChien ★
()
Я бы вообще ДОСом в этой ситуаци обошелся. Если хочется unix-like - можно встраиваемые ОС глянуть (типа ECOS от того же RedHat) - но я сомневаюсь что они на x86 хороши. Короче, с досом намного проще будет IMO чем с linux'ом.
hvv ★
()
/etc/fstab: <br>/dev/hda1 / ext2 defaults,sync 0 0 <br>И потри скэшированных данных небудет. Плохо будет только если рубанут свет во время физической записи данных на винт. <p>Про 1 Мб памяти забудь, минимум 4. <p>Можно сделать неувалимый линух -- / монтировать в ro, БД держать на /var. Но, ессесно в таких условиях целостности данных не добьешся. Увы.
lb ★
()
Ответ на: комментарий от temofey
Уважаемый ! Я не знаю, че у вас там за контора и какие задачи вы там себе ставите, но хочу довести до Вашего сведения, что использовать кассовый аппарат, которого нет в реестре, низзя. Вам налоговая этого не разрешит. А реестр Вашу поделку протащить нельзя по многом причинам. Во-первых, насколько я понял, Вы не планируете оснащать этот Ваш аппарт флэшкой, а кассовый аппарат эту флэшку обязательно должнен иметь и должна эта флэшка иметь защиту от порчи содержимого хулиганами или некорректной работой Вашей программы. Эта штука называется фискальной памятью и без нее Ваш аппарат кассовым называться никак не может. Есть также много других вещей, из-за которых из IBM PC под Linuxом нельзя кассовый аппарат сделать. Как Вы уберете возможность пользователя переключиться в другую задачу и начать изменять/просматривать файлы ? Ведь за машину может сесть и человек нехороший... Короче, проблема та еще, и правильно гороворя людит, что для таких вещей традиционно используется MSDOS. Других вариантов пока нет. Вот Windows 95 еще, может быть. Dmitry Sanarin sdb386@hotmail.com
anonymous
()
2Dmitry Sanarin:вы случаем не в налоговой работаете? Спасибо что просветили,
а тож мы находились в пучине невединия, и еслиб не вы, то и прибывали там
поселе ;-). Насчет налоговых и всяких реестров - в курсе. В настоящее время
имеется такая поделка, которая "протащена" вопреки всяким злопыхателям
через налоговую, и успешно используется пяток лет. Правда написана
она на клиппере под дос, и от нее уже чуть отдает тухлятинкой. Вот
и встал вопрос переписать ее заново. Тем более что граждан
"хакеров" секущих как перехватывать прерывания,
и ломать программы, под линуксом поменьше будет.
"Как Вы уберете возможность пользователя переключиться в другую задачу и начать
изменять/просматривать файлы?" - это помоему не проблема, как раз в
линукс это зделать гораздо проще, т.к. разграничение прав доступа
имеется, и пускать пользователя только туды куды надо - делается
элементарно.

temofey ★
() автор топика
И еще - посмотрел бы я как win95 будет пыхтеть на тройке с четырьмя
метрами памяти.
temofey ★
() автор топика
Ответ на: комментарий от temofey
Без ГУЁв -- отлично. А на 386 и 4Mb RAM Х-ы запускать быстрее не будет.
lb ★
()
Про Х-ы речь не идет.
Речь идет только о консоли. И собственно что из себя представляет
Win95 без ГУИ? Тот же голый дос.
temofey ★
() автор топика
А почему бы не обращаться напрямую к одному из разделов. Не нужно никакой файловой системы. Через файл-устройство, например, /dev/hda4. Я так понимаю, что записи нужно делать небольшие, но в большом количестве. При пропадании питания наверняка данные успеют сохранится на тех крохах енергии, что остались в конденсаторах блока питания. И ничего восстанавливать после отключения питания не нужно. И кэшированием самому управлять прийдется. А вот насчет инсталяции RedHat 6.2 на i486DX2-66 с 4 Мб ОЗУ. Это только разве что ради эксперимента. Я например, придерживаюсь мнения, что версия Linux, напрямую зависит от аппаратных средств компьютера. Тем более для тех компьютерах, которые теоритически не могут быть подключены к сети (согласно ТЗ). И приемлемый уровень безопасности и работает нормально и быстро. У меня например, когда-то терминальный сервер на i486DX4-100 с 32 Мб ОЗУ очень даже неплохо 20 пользователей обслуживал в тексте естественно.
anonymous
()
2timofey: Во-первых, построить зашищенную от сбоев систему для использование в e-commerce на одной единице в принципе не возможно. Нужна вторая, серверная часть. Во-вторых, без транзакций у вас ничего не выйдет. Я рекомендую использовать транзакционный сервер(известный севис CORBA) плюс в качестве хранилища данных любой доступный SQL сервер, например MySQL или PostgreSQL. Dmitry Yusupov <dmy7@yahoo.com>
anonymous
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.