Влажные фантазии сисьадмина: моментальный снапшот работающей системы... винт в 1тб моментально заснапшоть, ага. Я не представляю как это вообще возможно в ситуации когда у нас живая линукс-система на железе «as is». Когда это не чудо-виртуалка, с чудо-виртуализацией, что ещё было бы понятно. Нет, чудес не бывает и сделать снапшот «на живую» невозможно. И ладно, если какие-то файлы ещё в кэше, выполним sync, и ладно, если работает база данных в памяти, сделаем # .dump > /database.sql. Моментальный снапшот — слишком большой риск, когда каждую наносекунду в системе происходят изменения. В принципе понятно, почему это невозможно.
Хардкорные сисьадмины делают снапшот путём даунтайма, — выбрали ночь с воскресенья на понедельник, вырубили всё, сделали dd-копию и включили обратно. Такие советы на stackoverflow встречаются. Это норм, если у тебя из проектов — лишь блог про тебя, да про твоего кота, который кроме твоего кота никто и не читает. Другие ограничиваются архивированием /etc, /home, мол в случае поломок легко всё накатить с нуля, а ничего важного в других местах храниться не должно. Способ хороший для пользователей десктопа, но не для сервера же.
В реальности мы имеем проект который может отвалиться с нашей стороны в любой момент: сгорит блок питания, выйдет из строя материнская плата или жёсткий диск накроется бэд-секторами. Брать новую железку, накатывать откуда-то бэкап недельной давности, это э... вообще не ынтырпрайзно ниразу. Это время, время это самый дорогостоящий ресурс который нужно экономить, а уж я то знаю толк в экономии ресурса!
Все эти моментальные снапшоты, копии системы даже наносекундной давности, храние готовой конфигурации — вот это всё херня и вообще не то пальто. Бэкапы хороши в случае утери информации, но когда речь зашла о работе системы — мы должны смотреть в сторону создания _отказоустойчивости_, а не бэкапов вовсе!
Постоянно работать должны как минимум два клона одной системы, а чтобы ни одна из них не работала вхолостую — пусть делят нагрузку между собой. Тобишь это должно быть распараллеливание, обе системы получают одинаковую кодовую базу из вне, у них должна быть настроена репликация базы данных. При домашнем использовании я допускаю вариант, что когда ломается одна железка, все ваши действия должны ограничиться максимум перетыканием сетевого кабеля из одного системника в другой.
И только так мы сможем иметь тот самый волшебный моментальный «снапшот» системы из одной железки на другую: когда они работают в паре и одна может заменить другую. Верно?
Теперь вопрос. А посоветуйте что-нибудь конкретное почтитать про настройку, чтобы были nginx, php, postgresql/sqlite, код обновляется через на всех системах-клонах git, всё это делалось само, автоматически, и всё добро было распараллеленно для отказоустойчивости!
Заранее спасибо.