Option C) - disabling the cache is not viable with the current imagebackend codebase. The basic idea was to download the glance image directly into the instance directory instead of downloading it to the cache (_base). However even if the image is downloaded directly to the instance directory nova still needs to convert between image types. In an extreme case: qcow2 image in glance + force_raw_images=True config, + use_cow_images = True config means that the nova image fetch code downloads a qcow2 image from glance, then convert it to raw[1] due to force_raw_images, then the qcow2 imagebackend needs to convert such raw image back to qcow2. Such conversion uses double disk space temporarily so it fails in an almost fully allocated environment.
Option C) - disabling the cache is not viable with the current imagebackend codebase. The basic idea was to download the glance image directly into the instance directory instead of downloading it to the cache (_base). However even if the image is downloaded directly to the instance directory nova still needs to convert between image types. In an extreme case: qcow2 image in glance + force_raw_ images= True config, + use_cow_images = True config means that the nova image fetch code downloads a qcow2 image from glance, then convert it to raw[1] due to force_raw_images, then the qcow2 imagebackend needs to convert such raw image back to qcow2. Such conversion uses double disk space temporarily so it fails in an almost fully allocated environment.
[1] https:/ /github. com/openstack/ nova/blob/ ef3b5707328f460 d0d03759061c01b 1a20f28743/ nova/virt/ images. py#L137