fsck ramdisk туплю

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
stslam
проходил мимо
Сообщения: 3
Зарегистрирован: 2014-11-27 18:50:31

fsck ramdisk туплю

Непрочитанное сообщение stslam » 2014-11-27 19:00:00

Многоуважаемый ALL

Есть такая извратная, на первый взгляд, задача:

1. При загрузке загнать все минимально в ОЗУ, (по-идее ядро+fsck)
2. Проверить fsck -fy /dev/ada0p2
3. Загрузиться штатно с /dev/ada0p2

Как подступиться?
За полное решение, расписанное от и до
echo "+" >> CARMA

P.S. FreeBSD 10.0-RELEASE-p12

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

Re: fsck ramdisk туплю

Непрочитанное сообщение guest » 2014-11-27 19:59:21

stslam писал(а):Многоуважаемый ALL

Есть такая извратная, на первый взгляд, задача:

1. При загрузке загнать все минимально в ОЗУ, (по-идее ядро+fsck)
а где по Вашему ядро?
2. Проверить fsck -fy /dev/ada0p2
3. Загрузиться штатно с /dev/ada0p2
кто вызывает fsck?
Как подступиться?
изучить процесс загрузки OS FreeBSD
За полное решение, расписанное от и до
echo "+" >> CARMA

P.S. FreeBSD 10.0-RELEASE-p12

stslam
проходил мимо
Сообщения: 3
Зарегистрирован: 2014-11-27 18:50:31

Re: fsck ramdisk туплю

Непрочитанное сообщение stslam » 2014-11-27 20:08:47

По-моему ядро берется из корневой ф/с
root@CMISRV2:/etc # df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ada0p2 147252892 4840492 130632172 4% /

Кто вызывает fsck?
Я так думаю - загрузочный скрипт, которого еще как бы нет.

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

guest
проходил мимо

Re: fsck ramdisk туплю

Непрочитанное сообщение guest » 2014-11-27 20:25:51

stslam писал(а):По-моему ядро берется из корневой ф/с
root@CMISRV2:/etc # df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ada0p2 147252892 4840492 130632172 4% /
да, оно находится на корневой FS, загружает его loader в RAM
Кто вызывает fsck?
Я так думаю - загрузочный скрипт, которого еще как бы нет.
первый процесс во всех Unix'ах - init
Процесс загрузки я изучил, возможно что недостаточно для того, чтобы реализовать описанную задачу.
Поизучаю еще.
правильный подход, есть пара старых ссылок где достаточно глюбоко расписывается bootstrap FreeBSD, но
с тех пор, процесс изменился, хотя тонкости только по sources.
Sorry, ссылки с ходу не нашел, где-то записаны...

stslam
проходил мимо
Сообщения: 3
Зарегистрирован: 2014-11-27 18:50:31

Re: fsck ramdisk туплю

Непрочитанное сообщение stslam » 2014-11-27 22:36:39

Поясню, почему вообще возник данный вопрос.
fsck, на мой взгляд - отрабатывает не совсем корректно, почему - еще не понял.

в /etc/rc.conf переопределил дефолтные значения, задав:
fsck_y_enable="YES"
fsck_y_flags="-f"
backgrounfd_fsck="NO"

Эффект нулевой, - в том смысле, что запуск fsck (при автозагрузке под малтиюзером) не происходит (это было бы хорошо заметно по задержке, т.к. раздел ada0p2 не особо маленький)
Пришел к выводу, что запуск где-то там "внутре" происходит при установленном флаге в суперблоке файловой.
Подтверждения этому, равно как и опровержения - не нашел.

Второй момент, который не "понравился" (файловая система у ada0p2 - ufs) - нестабильный показ ошибок из fsck, - при запуске под multi user (а это же только проверка, писать запрещено) - перечень ошибок плавающий. Три раза запустил - три разных списка получил.
Под синглом, впрочем - аналогично. Если не "лечить" и без журнала - тоже плавающий список.
Может fsck глюкавый? но, скорее всего - есть какой-то неочевидный мне нюанс.
HDD не очень стар и виктория с mhdd ошибок не находят.
Я предполагаю, что fsck не умеет нормально проверять и лечить партицию, на которой он находится.

Поскольку мучимая мною система выполняет позорно-почетную роль NAT + ipfw (ну, в перспективе еще чем-нибудь нагружу) на несколько десятков машин - особо курочить ее тяжеловато, настраиваю из локалки через Putty.

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

guest
проходил мимо

Re: fsck ramdisk туплю

Непрочитанное сообщение guest » 2014-11-28 0:55:10

stslam писал(а):Поясню, почему вообще возник данный вопрос.
fsck, на мой взгляд - отрабатывает не совсем корректно, почему - еще не понял.

в /etc/rc.conf переопределил дефолтные значения, задав:
fsck_y_enable="YES"
fsck_y_flags="-f"
backgrounfd_fsck="NO"

Эффект нулевой, - в том смысле, что запуск fsck (при автозагрузке под малтиюзером) не происходит (это было бы хорошо заметно по задержке, т.к. раздел ada0p2 не особо маленький)
Пришел к выводу, что запуск где-то там "внутре" происходит при установленном флаге в суперблоке файловой.
Подтверждения этому, равно как и опровержения - не нашел.
Ну что Вы...
что запуск fsck (при автозагрузке под малтиюзером)
fsck запускается на несмонтированные FS и запускается из первого процесса в системе - из init'а,
проверяется clean-bit и запускается fsck, в multuser mode - fsck НЕ ЗАПУСКАЮТ, либо в урезанном
варианте man fsck, либо на несмонтированные FS или смонтированные RO (read-only).

Вы либо не поняли весь процесс bootstrap/загрузки xBSD, либо изучили его поверхностно.
Работа fsck в background режиме - вещь неплохая, но сомнительная и малоэффективная.

fsck_y_enable="YES" - принудительно запускать fsck с -y при загрузке, ибо если fsck завершилась
неудачно, init должен остановить загрузку в single-user mode для интерактивного принятия решений.

fsck_y_flags="-f" - прнудительно запускать fsck, даже если FS помечена как clean), используют в
особых ситуациях, например, если используется UFS+SUJ - до версии 9.2 или 9.3.

В чем сокровенный смысл журналируемых FS в двух словах: надежность и быстрое восстановление благодаря
журналу, поднять FS на базе последнего нормального состояния, за счет этого fsck очень быстро
отрабатывает проверку, что важно для FS огромного размера.
Но для журналируемых FS в FreeBSD очень желательно наличие UPS, в FreeBSD возможно использование:
- журналирование на уровне GEOM - использование gjournal (очень медленная работа FS)
- UFS+SUJ, реализацию нельзя назвать надежной и стабильной, хотя к выходу 9.3 и 10.1 исправлено очень
много ошибок и можно не использовать fsck_y_flags="-f"
- ZFS - могучий мышонок, тьфу - монстр, чего только не мОГет, но требует знаний и ресурсов RAM

Так что, боюсь у Вас в конституции непорядок.