@mgoddard, following up on this, the workaround is to set all of the image config parameters in the pxe configuration to point to the same drive. For example (I moved the tftp and httpboot to a directory that I could mount as a docker volume):
tftp_root = /imagedata/tftpboot tftp_master_path = /imagedata/tftpboot/master_images instance_master_path = /imagedata/httpboot/master_images images_path = /imagedata/tmp
The images_path is easy to miss, and defaults to /var/lib/python...
As far as I can tell, the only place where hard links are set in Ironic are in image_cache.py
@mgoddard, following up on this, the workaround is to set all of the image config parameters in the pxe configuration to point to the same drive. For example (I moved the tftp and httpboot to a directory that I could mount as a docker volume):
tftp_root = /imagedata/tftpboot tftpboot/ master_ images master_ path = /imagedata/ httpboot/ master_ images
tftp_master_path = /imagedata/
instance_
images_path = /imagedata/tmp
The images_path is easy to miss, and defaults to /var/lib/python...
As far as I can tell, the only place where hard links are set in Ironic are in image_cache.py