LINUX.ORG.RU

Восстановление работы после отключения корневого раздела


0

1

Имеется система Arch Linux. Она на флешке. Во время работы по какой-то причине системный диск может неожиданно исчезнуть (например, нечаянно задели флешку и она потеряла контакт), но потом появится назад (мы увидели, что что-то не так и переткнули флешку). Было бы не плохо, чтобы система смогла возобновить работу (многие приложения при пропадании диска рушаться далеко не сразу и есть время подключить его заново с минимальными последствиями). Для этого, по-моему, нужно:

1) Копия mount и всех его зависимостей (либо статически-слинкованный) в tmpfs.

2) Правило udev, которое монтирует в / ФС с указанным UUID. Он же вроде как держит все правила в памяти и сможет их выполнить даже если на диске их уже не будет (пока мы не запросили перезагрузку правил).

3) Не обязательно, но очень желательно. Кеш записи на определённый диск не должен сбрасываться при отключении устройства, а данные должны быть записаны при подключении устройства назад.

Есть альтернативный вариант: /, /dev, /bin, /lib на tmpfs (благо ОЗУ много). На начальном этапе загрузки истинный / монтируется куда-нибудь в другое место, а всякие /boot, /usr, /home и т. п. bind'ятся в нужным каталогам в tmpfs, При завершении работы все изменения с tmpfs переносятся в настоящий корень.

Как всё это сделать как можно более unix-way'но в этом дистрибутиве?

★★★★★

Последнее исправление: KivApple (всего исправлений: 1)

это говно, а не идея обеспечь надёжность аппаратной части, тем более она твердотельная (припаяй, например, или поставь флеху на внутренний usb матери) ппц

anonymous
()
Ответ на: комментарий от anonymous

Флешку привёл как пример. Ситуация такова, что обеспечить надёжность аппаратной части в принципе нельзя, только компенсировать программно. При этом временем загрузки и расходом ОЗУ можно принебречь (все нужные консольные утилиты вряд ли займут больше пары сотен МБ, время загрузки не важно вообще).

KivApple ★★★★★
() автор топика

мне тут напоминают, что с linux ядра 3.* оно иногда паникует при выдёргивании неотмонтированых флешек

доктор, это правда?

anonymous
()
Ответ на: комментарий от anonymous

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

KivApple ★★★★★
() автор топика

1) Копия mount и всех его зависимостей (либо статически-слинкованный) в tmpfs.
memlockd пробовали?

AITap ★★★★★
()
Ответ на: комментарий от AITap

Прочитал описание на оф. сайте. Эта утилита позволяет составить список файлов, которые останутся доступны по своим путям даже если отвалятся все физические ФС?

KivApple ★★★★★
() автор топика
Ответ на: комментарий от dumal

Тот же puppy с диска загружается в ОЗУ и потом сидит только там, скидывая буфера в момент выключения.

dumal ★★
()
Ответ на: комментарий от dumal

Нет, не то. squashfs отвалится при отключении носителя, на котором расположен его файл. Мне же надо удержать в ОЗУ GNU-утилиты, вопреки пропаданию всех физических накопителей. Причём так, чтобы их можно было запустить по пути.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Да. Её, например, используют разработчики всяких «анонимных» LiveCD/USB, чтобы аварийно перезагружаться с затиранием памяти при извлечении флешки.

AITap ★★★★★
()
Ответ на: комментарий от KivApple

Тогда cron'ом каждые несколько минут запускать скрипт, который будет проверять, не отвались ли чего-нибудь и перемонтировать раздел

dumal ★★
()

RAM

разумный вопрос - а чем старый добрый RAM DRIVE не устраивает?

mumpster ★★★★★
()
Ответ на: комментарий от mumpster

именно поэтому разлагающиеся трупы принято закапывать не менее чем на два метра

anonymous
()

Правило udev, которое монтирует в / ФС с указанным UUID.

Возможно, просто так смонтировать корень, как любую другую ФС, не получится, потому что в реальности это делает ядро один раз, потом же может только менять корень на другой с помощью switch_root или pivot_root. Поэтому может понадобиться в качестве корневой подставная ФС, которая не пропадёт (возможно, подойдёт aufs).

gentoo_root ★★★★★
()

Коллеги, Вам что заняться нечем?, о чем вааАпче речь?! - Решение задачи - ради самого эксперимента? ИМХО-абсурд! МАксисмум на что тянет,так это - лабораторка в политехе...
Зачем постить?

papay ★★★
()
Ответ на: комментарий от papay

Почему же? Задача вполне практическая. Допустим есть у вас флешка с LiveUSB любимого дистрибутива. И с её помощью вы можете работать на чужих компьютерах в привычном окружении. Однако если её задеть то это приводит в неприятным последствиям (повреждение ФС, потеря несохранённых документов, необходимость перезагрузки). Компьютеры разные, не везде есть возможность надёжно вставить флешку. Всякие варианты типа припаивания флешки в разъёму отбрасываем, потому что нам нужна мобильность, да и техника чужая.

KivApple ★★★★★
() автор топика

Как вариант, держать всю система в tmpfs, синхронизировать, например, по крону с флешкой, а /home на флешке.

ymuv ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.