unix way - не пытайтесь найти готовый комбаин, собирайте ваше решение из кирпичиков. Пусть за iscsi отвечает тот же istgt а за снапшоты - btrfs.
Если закрыть глаза именно на iscsi (мало ли вы виртуальные машины через них подключаете локально, видел я такие конструкции) У qemu/kvm есть опции когда можно подключить диск но все изменения пишутся в отдельный файл. То же самое есть у всех крупных систем виртуализации, правда называется везде по разному.
Если универсально, то исторически lvm позволяет делать снапшоты на блочных устройствах, но за счет значительного понижения производительности, т.е. вы можете создать 100500 снапшотов на основе вашего базового диска, и каждый отдать в свою отдельную машину. Не рекомендую для вашего случая 256 активных снапшотов это будет фейл.
Вы можете воспользоваться copy on write файловыми системами например btrfs или zfs (хуже в linux работает), в них создание снапшота не понижает производительность (т.е. за это не приходится платить), правда сами файловые системы менее шустрые, так как сильно фрагментируют контент, но если сравнивать с lvm то на порядок эффективнее.
p.s. windows машины очень активно пишут при обновлениях, гигабайтами, наступит момент, когда весь этот сыр бор будет создавать больше проблем чем пользы.
btrfs и zfs имеют фичу - дедупликация, т.е. вы просто рядом складываете все копии ваших контейнеров а система сама находит одинаковые блоки и оптимизирует, правда в зачаточном уровне, btrfs только offline (это относительно новая фича, почти нет нормальных утилит, но если ставить самую свежую версию из исходников, там много что добавили вкусного) а у zfs под linux жутко низкая производительность (я игрался на десктопном железе, не рекомендуется для hdd только ssd), причем ничем не оправданная, и дикое потребление оперативной памяти (70 байт на блок, т.е. для 4кб блоков 1тб hdd будет кушать 18гб ram, правда никто не делает 4к блоки, 16 или 32 да), она будет оправдана в вашем случае и автоматически сократит занятое место одинаковыми машинами.
p.p.s. только что установленный windows со включенным сжатием zfs занимает на диске 8гб места, btrfs чуть больше... через год использования место, занимаемое контейнером (никаких программ не установлено, это машина была исключительно для запуска google chrome) - 26гб (внутри контейнера 46гб).