LINUX.ORG.RU
ФорумAdmin

Можно ли форсированно перевести ФС в RO для внезапной перезагруки с ноги, отключения устройства, или при зависании?

 , , ,


0

1

Лол, ЛОР.

Юзкейс моей задачи: процессы (может вообще ядерные, типа NFS, loopback block device и т.п.) работают в данный момент с ФС на ЗАПИСЬ. Внезапно не получается завершить процесс (баги ведра, дескриптор открыт изнутри ядра), однако нам надо:

1. Внезапно быстро ребутнуться.
2. Отключить питание с переводом ФС в консистентное состояние. Из сервера идёт дым, надо срочно выключиться. Или мы отключаем компьютер, но lo-девайс с ISO не размонтирован (или используется многоуровневое хитрое монтирование). Мы в любом случае уже отправили всем killall -9, пока выключаться, но мы никак не можем перевести ФС в RO из-за дескпторов на запись в ведре.
3. Внезапно быстро отключить устройство от компьютера. Например, Вы сидите в офисе, под Вами машинный зал, через дорогу датацентр. Из машинного зала мейнфрейм подключен через FICON в ДЦ. Вы видите в окно, как на улице эскалатор начинает раскапывать асфальт в том месте, где лежит Ваша оптика. Нужно срочно перевести ФС в консистентное состояние не ожидая процессов и отключиться, времени нет.

В целом такая задача решается через fsfreeze в случае кручения внутри гипервизора (ПО внутри гостя получает ивент от гипервизора о том, что надо остановить ФС (сделать sync и не позволять запись), после ответа, что sync завершен, гипервизор делает снапшот и отсылает ивент о разморозке ФС).

Но как нам сделать fsfreeze для невиртуализированной системы? Просто вызвать fsfreeze? А как же кэши устройств? И сложные конфигурации с LUKS, LVM, RAID, SSD-кэшированием? Как мы можем быть уверены, что sync успешно прошел по всем уровням и устройство действительно можно безопасно отключить от горящего сервера?



Последнее исправление: ktulhu666-razban (всего исправлений: 1)
Ответ на: комментарий от sin_a

Ты не сможешь сделать экстренное RO-перемонтирование, если ведро открыло дескриптор на запись и пишет. А sync не поможет - после него ФС не отключится/перемонтируется RO, а дальше продолжит писаться.

ktulhu666-razban
() автор топика

У журналируемых файловых систем не бывает неконсистентного состояния, в общем-то. Просто бывают файлухи, которые после ребута ждут пенделя (ой-вей, введи рут-пароль и набери fsck), а бывают, которые восстанавливаются сами молча, в процессе монтирования (reiserfs) или на фоне (xfs).

С базами данных сложнее, но там, как правило, есть механизм для этого - FLUSH TABLES для mysql, например.

Многие базы данных тоже журналируемые, могут быть убиты в любой момент (см. на предмет append-only хранилищ).

AngryElf ★★★★★
()

баги ведра

Проблему нужно решать отсюда.

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

Ты не сможешь сделать экстренное RO-перемонтирование, если ведро открыло дескриптор на запись и пишет.

Ты пробовал? По моему sysrq как раз для этого и сделали.

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