Допустим необходимо сделать мгновенный снимок раздела, например LVM виртуальной машины размером 50 Gb.
На данный момент это выполняется так: создается через lvcreate снапшот lvm образа, его содержимое делится на блоки по 4мб, у блоков считается контрольные суммы(мд5), всё это дело сжимается и складывается в отдельный файл.
Если снапшот делать первый раз, то уменьшить число чтений блоков определенно нельзя. Но - если мы второй и последующий раз делаем снапшот, нам нужны лишь измененные блоки, т.е. всё равно нужно прочитать все эти 50Gb данных, чтобы определить какие блоки были изменены.
Вопрос в следующим: существуют ли стандартные средства, чтобы узнать какие блоки на LVM разделе были изменены - может быть это можно сделать с помощью драйверов и т.п., которые отслеживают событие чтения на диск.
Для файлов конечно же есть очень хорошая фс - btrfs, где подобное уже сделано. Интересует подобное для блочных устройств.
p.s. ещё задача может быть сведена к следующией: LVM разделы состоят из LE (Logical extent), размером обычно 4 Мб. Надо чтобы где-то сохранялась дата последнего изменения каждого LE и чтобы можно было определить полное соответствие между смещением в lvm разделе и каждым LE блоком.