Solucionar error Probably resource factory threw an exception.: () oVirt/RHEV vdsm

Solucionar error Probably resource factory threw an exception.: () oVirt/RHEV vdsm

Si al tratar de realizar alguna tarea sobre nuestros discos virtuales, es decir:

  • snapshots
  • clonaciones
  • exportaciones
  • importaciones
  • storage live migration

En la lista de eventos del oVirt GUI se presenta el siguiente error:

Probably resource factory threw an exception.: ()

Y en los logs del vdsm /var/log/vdsm/vdsm.log del host que es SPM encontramos el siguiente mensaje:

OSError: [Errno 17] File exists: '/rhev/data-center/00000002-0002-0002-0002-00000000008b/e1f1947b-b04a-4a50-a22d-f65110516143/images/58693eb1-d498-480e-95e7-524e0a682410'
67acab09-4bfb-4f05-a4f6-a36b31e01743::WARNING::2016-04-03 14:16:45,951::resourceManager::594::Storage.ResourceManager::(registerResource) Resource factory failed to create resource 'e1f1947b-b04a-4a50-a22d-f65110516143_imageNS.58693eb1-d498-480e-95e7-524e0a682410'. Canceling request.
Traceback (most recent call last):
  File "/usr/share/vdsm/storage/resourceManager.py", line 590, in registerResource
    obj = namespaceObj.factory.createResource(name, lockType)
  File "/usr/share/vdsm/storage/resourceFactories.py", line 193, in createResource
    lockType)
  File "/usr/share/vdsm/storage/resourceFactories.py", line 122, in __getResourceCandidatesList
    imgUUID=resourceName)
  File "/usr/share/vdsm/storage/image.py", line 189, in getChain
    srcVol = volclass(self.repoPath, sdUUID, imgUUID, uuidlist[0])
  File "/usr/share/vdsm/storage/blockVolume.py", line 80, in __init__
    volume.Volume.__init__(self, repoPath, sdUUID, imgUUID, volUUID)
  File "/usr/share/vdsm/storage/volume.py", line 181, in __init__
    self.validate()
  File "/usr/share/vdsm/storage/blockVolume.py", line 89, in validate
    volume.Volume.validate(self)
  File "/usr/share/vdsm/storage/volume.py", line 193, in validate
    self.validateImagePath()
  File "/usr/share/vdsm/storage/blockVolume.py", line 460, in validateImagePath
    raise se.ImagePathError(imageDir)
ImagePathError: Image path does not exist or cannot be accessed/created: (u'/rhev/data-center/00000002-0002-0002-0002-00000000008b/e1f1947b-b04a-4a50-a22d-f65110516143/images/58693eb1-d498-480e-95e7-524e0a682410',)

Posiblemente se deba a quedaron links simbolicos rotos en el directorio que apunta a los volumenes presentados al cluster /rhev/data-center/

La solucion para dicho problema es eliminar todos los link simbolicos que se encuentran "rotos", es decir que apuntar a una ruta inexistente, para hacer eso podemos usar el siguiente comando:

[root@virt3 ~]# for file in $(find /rhev/data-center/ -type l); do [ -h "$file" -a ! -e "$file" ] && rm -fvr "$file"; done;

Dicho comando debe ejecutarse en el host que esta como SPM, aunque es recomendable ejecutarlo en todos los hosts de manera a que cuando alguno asuma como SPM no se vuelva a presentar el problema.

Una vez que hecho esto podemos reitentar la tarea que habia fallado.

Deja un comentario