Как без проблем расширить корневой диск на лету в виртуальной машине linux?
Раздел данных, который с высокой вероятностью нужно расширять делаете в конце блочного устройства. Так, чтобы за ним ничего не было. И неважно, рутовый это раздел или ещё какой.
Когда понадобится расширить:

 расширяете блочное устройство
 через parted командой resizepart увеличиваете раздел
 затем расширяете файловую систему: resize2fs для ext4, xfs_growfs для xfs. Если у вас какая-то вдруг другая экзотика - предварительно уточните команду.

Всё.

Можно добавить lvm, вся разница что между 2 и 3 пунктом добавятся pvresize и lvresize. Либо, по желанию, можно будет создавать дополнительные разделы (и/или диски) и их добавлять в lvm.
lvm поможет, если вы решили сделать отдельный раздел под ОС и отдельный под данные, а потом поняли, что раздел ОС сделали слишком маленьким.

PS: "Виртуальная машина, не особо важно под каким будет гипервизором" - не все гипервизоры могут корректно оповестить гостевую систему об изменении блочного устройства, для некоторых нужен рестарт виртуалки.
Сразу так себе решение, думайте над тем, чтобы хранить весь хлам в каком-то внешнем хранилище, s3 или в какой-то БД, или на худой конец, сетевой фс.

А то потом вы захотите сделать два инстанса вашего гениального творения, и будет большой УПС.