Я предлагаю сделать так:
- на целевой файловой системе создать разряженный файл нужного рамера. Разряженные файлы могу привышать на сколько угодно физически доступное место. Место будет расходоаатся по мере перезаписи участков разрядкнного файла
- остановить виртуалку
- попробовать перенести за один даунтайм ночью:
-- загрузиться в live-систему виртуалку, например systemrescuecd
-- последовательно сдампить через pipe ssh+ lz4 или pbzip2-сжатие или pipe netcat+ lz4 или pbzip2 + aespipe: разметку mbr или gpt, создать разделы lvm, содержимое файловыз систем, каждую подходящей утилитой (ntfs-clone, xfsdump, dump или в крайнем случае tar). Компрессию надо выбирать в зависимости от канала и мощности процессора. Если канал широкий или процессор слабый lz4 через liblz4-tool
- если не успеет за раз, или предвдущий метод кажется сложным, можно использовать rdiff для бекапа в несколько приёмов:
-- забить фс нулями, создав на каждой файл из нулей на всё доступное пространство и удалив его.
-- получить с целевой системы сигнатуру занятого пространства (разряженный файл при чтении даёт нули)
-- получить diff с источника и применить к цели, это делается через pipы
-- прервать процесс в начале рабочего дня если за раз не хватило времени.
-- в следующую ночь повторить.
В результате получится разряженный raw-образ.
Если провайдер не даёт делать диски больше 100Гб, но можно взять двп диска, их можно объеденить с помощью lvm в один большой том. Думаю lvm будет уместнее, т.к фактически диски могут оказатся на одном устройстве и чередование снизит производительность.
Вышеописанные способы я часто применяю в работе. Могу написать конкретные команды, но надо знать файловые системы в lvm