Есть приложение из множеста процессов, которые общаются между собой и хранят всякие данные в shm. Возникла задача обеспечить high availability. Задумались над тем, как реплицировать наше хранилище.
Первый вариант: каким-то образом снять мгновенный snapshot.
Глобальный лок, естественно, не подходит, т.к. все надолго встанет (shm занимает не один Гиг).
Хотелось бы открыть shm на чтение так, чтобы страницы, измененные другими процессами, не менялись. Типа такой copy-on-write только «наоборот».
Второй вариант: подумать над записью дифов наших структур.
Но у нас несколько разных типов данных хранятся в разных shm, т.е. каждый раз придется заново реализовывать работу с дифами.