5 Recuperación de archivos perdidos y dañados

En este capítulo, se detallan los procedimientos para la restauración de archivos individuales en el sistema de archivos. Incluye los siguientes temas:

Recuperación de archivos mediante un archivo de punto de recuperación

Un archivo de punto de recuperación es el modo de recuperar archivos perdidos o dañados más rápido, confiable, completo y que menos trabajo requiere. Por lo tanto, si hay disponible un archivo de punto de recuperación, haga lo siguiente:

  1. Inicie sesión en el servidor de metadatos del sistema de archivos como usuario root.

    root@solaris:~# 
    
  2. Si aún no lo ha hecho detenga el archivado y el reciclaje mediante los procedimientos en Detención de procesos de archivado y reciclaje.

  3. En el sistema de archivos de destino, cree un directorio de recuperación temporal para contener los archivos recuperados.

    En el ejemplo, se crea el directorio temporal restore en el punto de montaje del sistema de archivos que se volvió a crear /hsmfs1:

    root@solaris:~# mkdir /hsmfs1/restore
    
  4. Evite que el archivador realice el almacenamiento desde el directorio temporal. Utilice el comando archive -r -n directory, donde:

    • -r -n desactiva de forma recursiva el almacenamiento de archivos que residen en el directorio especificado o debajo de este.

    • directory es la ruta y el nombre del directorio del directorio de recuperación temporal.

    root@solaris:~# archive -r -n /hsmfs1/restore
    
  5. Cambie al directorio de recuperación temporal.

    root@solaris:~# cd /hsmfs1/restore
    
  6. Identifique el archivo de punto de recuperación más reciente disponible.

    En el ejemplo, se crearon archivos de punto de recuperación con fecha para el sistema de archivos hsmfs1 en una ubicación conocida, el subdirectorio hsmfs1_recovery en el sistema de archivos independiente /zfs1. Por lo tanto, el archivo más reciente, 20150324, es fácil de encontrar:

    root@solaris:~# dir /zfs1/hsmfs1_recovery/
    20150321    20150322    20150323    20150324
    root@solaris:~# 
    
  7. Asegúrese de que el archivo que necesita recuperar esté en el archivo de punto de recuperación. Busque el archivo necesario en la salida del comando samfsrestore -t -f recovery-point, donde:

    • -t muestra una tabla de contenido.

    • -f recovery-point-file especifica la ruta y el nombre de archivo del archivo de punto de recuperación seleccionado.

    En el ejemplo, se intenta recuperar el archivo genw445. Por lo tanto, se ejecutó el comando samfsrestore -t con el archivo de punto de recuperación /zfs1/hsmfs1_recovery/20150324. Para simplificar la búsqueda, canalizamos la salida del comando samfsrestore -t al comando grep de Solaris y la expresión regular "genw445" (tenga en cuenta que el comando siguiente se introduce como una sola línea, el salto de línea se identifica por el carácter de barra diagonal inversa):

    root@solaris:~# samfsrestore -t -f /zfs1/hsmfs1_recovery/20150324 | \
    grep "genw445"
    ./genfiles/genw445
    root@solaris:~# 
    
  8. Restaure la información de inode del archivo en el directorio actual. Utilice el comando samfsrestore -f recovery-point file, donde:

    • -f recovery-point-file especifica la ruta y el nombre de archivo del archivo de punto de recuperación seleccionado.

    • file especifica la ruta de acceso exacta y el nombre que el archivo de punto de recuperación muestra para el archivo que desea recuperar.

    En el ejemplo, se recupera ./genfiles/genw445 del archivo de punto de recuperación /zfs1/hsmfs1_recovery/20150324 (tenga en cuenta que el comando siguiente se introduce como una sola línea; el salto de línea se identifica mediante el carácter de barra diagonal inversa):

    root@solaris:~# samfsrestore -f /zfs1/hsmfs1_recovery/20150324 \
    ./genfiles/genw445
    root@solaris:~# 
    
  9. Asegúrese de que el archivo se haya restaurado correctamente. Use el comando sls -D file, donde file especifica la ruta y el nombre del archivo relacionado con el directorio de recuperación temporal.

    En el ejemplo, el archivo genfiles/genw445 se recuperó en el directorio temporal /hsmfs1/restore/:

    root@solaris:~# sls -D genfiles/genw445
    genfiles/genw445:
      mode: -rw-r--r--    links:   1  owner: data        group: hsmfs1      
      length:     14975  inode:    25739.1
    offline; archdone;
    copy 1: ---- Mar  4 11:55 8ae.1 xt 000000
    copy 2: ---- Mar  4 15:51 cd3.7f57 xt 000000
      access:      Mar  4 11:55  modification: Mar  4 21:50
      changed:     Mar  4 11:50  attributes:   Mar  4 21:50
      creation:    Mar  4 11:50  residence:    Mar  4 21:50
    root@solaris:~# 
    
  10. Si el archivo se restauró correctamente, muévalos a la ubicación correcta del sistema de archivos.

    En el ejemplo, se mueve el archivo genw445 desde el directorio de trabajo temporal /hsmfs1/restore/genfiles/ hasta su ubicación original en /hsmfs1/genfiles/:

    root@solaris:~# mv -f genfiles/genw445 /hsmfs1/genfiles/genw445
    root@solaris:~# 
    
  11. Repita este procedimiento hasta que todos los archivos que faltan se hayan recuperado.

  12. Finalice el procedimiento de recuperación. Consulte Restauración del funcionamiento normal de los sistemas de archivos de almacenamiento.

Recuperación de archivos mediante entradas de log

Recuperar archivos con un log de archivador o logs de migración de medios es siempre un proceso tedioso e intensivo si hay varios archivos involucrados. Por lo tanto, siempre que sea posible, utilice los procedimientos descritos en esta sección sólo cuando un punto de recuperación no pueda restaurar el archivo necesario.

Mientras el proceso general para recuperar archivos de medios de archivo es esencialmente el mismo en todos los casos, los detalles pueden variar para diferentes tipos de archivo. Por lo tanto, seleccione el procedimiento destinado para el tipo de archivo que va a restaurar:

Tenga en cuenta que es posible que los archivos no se restauren en la ubicación precisa en la que espera que se recupere una copia desde el medio. Los archivos se restauran en su ubicación en el momento en el que se realizó la copia de archivo de almacenamiento. Por este motivo, los archivos que se movieron posteriormente no se restauran en el directorio donde estaban cuando se perdieron.

Restauración de archivos normales perdidos y dañados

Para cada archivo que deba recuperar, siga los pasos que se detallan a continuación.

  1. Si aún no lo ha hecho, inicie sesión en el servidor de metadatos del sistema de archivos como usuario root.

    root@solaris:~# 
    
  2. Si aún no lo ha hecho detenga el archivado y el reciclaje mediante los procedimientos en Detención de procesos de archivado y reciclaje.

  3. Cambie al directorio raíz del sistema de archivos que está restaurando.

    Los archivos de almacenamiento de Oracle HSM almacenan copias relacionadas con el directorio raíz del sistema de archivos. Entonces, para restaurarlos en sus ubicaciones originales, se deben restaurar desde el directorio raíz.

    En el ejemplo, se cambia a la raíz del sistema de archivos hsmfs1:

    root@solaris:~# cd /hsmfs1
    root@solaris:~# 
    
  4. Si cuenta con un log del archivador para el período en el que se archivó por última vez el archivo normal, busque la entrada más reciente del archivo.

    En el primer ejemplo, se busca una entrada para el archivo regular (tipo f) genA0:

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    

    En el primer ejemplo, se busca una entrada para el archivo regular (tipo f) spcC4:

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  5. Una vez localizada una entrada de log para un archivo requerido, tenga en cuenta el tipo de medio, el número de serie de volumen de los medios y la ruta y el nombre del archivo relacionado con el directorio raíz del sistema de archivos.

    En el primer ejemplo, el archivo genA0 reside en un volumen de cinta LTO (li) con el número de serie de volumen (VSN) VOL004. El archivo se almacenó originalmente en el directorio del sistema de archivos /hsmfs1/genfiles/:

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    

    En el segundo ejemplo, el archivo spcC4 reside en un archivo de almacenamiento de disco (dk) con el número de serie de volumen DISKVOL1. El archivo se almacenó originalmente en el directorio del sistema de archivos /hsmfs1/socfiles/:

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  6. Si un archivo requerido reside en un medio de acceso secuencial, como una cinta magnética, también tenga en cuenta el valor hexadecimal que representa la posición inicial del archivo de almacenamiento (tar).

    En el ejemplo, el archivo genA0 reside en la cinta a partir de la posición 0 x 212 (212):

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    
  7. Si el archivo requerido se almacena en medios de acceso aleatorio, como un disco de almacenamiento, también tenga en cuenta la ruta y en nombre del archivo tar relacionado con el número de serie de volumen.

    En el ejemplo, el archivo spcC4 reside en el subdirectorio f2 inmediatamente debajo del directorio raíz del volumen de disco DISKVOL1:

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  8. Si el archivo que está restaurando se archiva en medios de disco, extraiga la copia de archivo de almacenamiento del archivo faltante o dañado desde el archivo tar en el volumen de disco. Utilice el comando star -xv -f tarfile file, donde:

    • tarfile es el nombre del archivo de almacenamiento.

    • file es la ruta (relacionada con el directorio raíz del sistema de archivos) y el nombre del archivo que debe restaurar.

    El comando star es una versión mejorada de GNU tar de Oracle HSM que restaura los archivos especificados desde el archivo de almacenamiento.

    En el ejemplo, se extrae el archivo de datos socfiles/spcC4 desde el archivo tar DISKVOL1/f2. El archivo se restaura en /hsmfs1/socfiles/spcC4:

    root@solaris:~# star -xvf DISKVOL1/f2 socfiles/spcC4
    
  9. Si restauró el archivo requerido desde un almacenamiento de disco, proceda a restaurar archivos regulares perdidos o dañados hasta que se hayan restaurado todos los archivos requeridos.

  10. Si el archivo que está restaurando se archiva en medios extraíbles, como una cinta magnética, cree un directorio en el sistema de archivos restaurado para mantener archivos de almacenamiento temporales.

    En el ejemplo, se crea el directorio /hsmfs1/tars.

    root@solaris:~# mkdir /hsmfs1/tars
    
  11. Posicione el medio al comienzo del encabezado tar para el archivo de almacenamiento que contiene la copia archivada y lea el archivo desde el medio en la memoria. Utilice el comando request -m media-type -v volume-serial-number -p 0xposition path/requestfile, donde:

    • -m media-type especifica uno de los dos códigos de tipo de medios de dos caracteres que se muestran en Apéndice B.

    • -v volume-serial-number especifica el código alfanumérico de seis caracteres que identifica el volumen de medios.

    • -p 0xposition especifica la posición inicial hexadecimal que anotó en la entrada del log del archivador.

    • path es la ruta al directorio de recuperación temporal.

    • requestfile es el nombre que desea usar para el archivo tar en la memoria que el comando request lee desde el medio.

    En el ejemplo, se crea un archivo de solicitud, /hsmfs1/tars/currentrequest desde la posición 0x78 en el volumen de LTO (li) VOL012:

    root@solaris:~# request -m li -v VOL012 -p 0x78 /hsmfs1/tars/currentrequest
    
  12. Extraiga la copia de archivo de almacenamiento del archivo faltante o dañado desde el archivo tar en la memoria que creó en el paso anterior. Utilice el comando star -xv -f requestfile, donde:

    • requestfile es el nombre del archivo tar en la memoria.

    • file es la ruta (relacionada con el directorio raíz del sistema de archivos) y el nombre del archivo que debe restaurar.

    El comando star es una versión mejorada de GNU tar de Oracle HSM que restaura archivos especificados desde el archivo de solicitud (la copia del archivo de almacenamiento en la memoria).

    En el ejemplo, se extrae el archivo de datos genfiles/genA0 del archivo de solicitud tars/currentrequest. El archivo se restaura en /hsmfs1/genfiles/genA0:

    root@solaris:~# star -xvf tars/currentrequest genfiles/genA0
    
  13. Defina los atributos de archivo necesarios.

    Cuando restaura un archivo desde un archivo tar, sin un archivo de punto de recuperación samfsdump o qfsdump, se pierden los atributos del archivo original. Se debe crear desde cero un archivo .inodes para el archivo, usando los valores de atributo por defecto.

  14. Repita este procedimiento hasta que todos los archivos requeridos se hayan recuperado.

  15. Si es necesario, restaure los archivos segmentados o los archivos de desbordamiento de volumen que se perdieron o dañaron.

  16. De lo contrario, finalice el procedimiento de recuperación. Consulte Restauración del funcionamiento normal de los sistemas de archivos de almacenamiento.

Restauración de archivos segmentados perdidos y dañados

La restauración de un archivo segmentado es muy similar a la restauración de un archivo normal. Sin embargo, puede recuperar los segmentos individuales en lugar de recuperar el archivo mismo. Entonces, para restaurar el archivo, debe volver a ensamblar los segmentos en un único archivo y, a continuación, volver a segmentar el resultado. Para cada archivo que deba recuperar, siga los pasos que se detallan a continuación.

  1. Si aún no lo ha hecho, inicie sesión en el servidor de metadatos del sistema de archivos como usuario root.

    root@solaris:~# 
    
  2. Si aún no lo ha hecho, detenga el archivado y reciclaje mediante el procedimiento en Detención de procesos de archivado y reciclaje.

  3. Si cuenta con un log del archivador para el período en el que se archivó por última vez el archivo segmentado, busque las entradas de los archivos segmentados (tipo S). Seleccione las entradas más recientes de los segmentos del archivo requerido.

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 2476f.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    
  4. Una vez que haya encontrado las últimas entradas de los segmentos, tenga en cuenta los siguientes detalles:

    • El tipo de medios.

    • Los números de serie de volumen de los volúmenes de medios que almacenan los segmentos de archivos.

    • Las posiciones hexadecimales iniciales de los archivos de almacenamiento (tar) que alojan los segmentos.

    • La ruta y el nombre del archivo segmentado relacionado con el directorio raíz del sistema de archivos.

    • El número de segmentos del archivo.

    En el ejemplo, el archivo dat011 está dividido en tres segmentos (1, 2 y 3). Los tres segmentos están almacenados en los tres archivos de almacenamiento, todos en un único volumen de cinta LTO (li), número de serie de volumen VOL013. Los tres archivos de almacenamiento comienzan en las posiciones 0x76a (76a), 0x2476f (2476f) y 0x1409aa4 (1409aa4).

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 2476f.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    
  5. Cambie al directorio raíz del sistema de archivos que está restaurando.

    Los archivos de almacenamiento de Oracle HSM almacenan copias relacionadas con el directorio raíz del sistema de archivos. Entonces, para restaurarlos en sus ubicaciones originales, se deben restaurar desde el directorio raíz.

    En el ejemplo, se cambia a la raíz del sistema de archivos hsmfs1.

    root@solaris:~# cd /hsmfs1
    
  6. Cree un directorio en el sistema de archivos restaurado para contener los archivos de almacenamiento temporales.

    En el ejemplo, se crea el directorio /hsmfs1/tars.

    root@solaris:~# mkdir /hsmfs1/tars
    
  7. Posicione el medio al comienzo de cada archivo de almacenamiento que contenga una copia almacenada de uno o más de los segmentos del archivo y lea el archivo desde el medio en la memoria. Utilice el comando request -m media-type -v volume-serial-number -p 0xposition path/requestfile, donde:

    • -m media-type especifica uno de los dos códigos de tipo de medios de dos caracteres que se muestran en Apéndice B.

    • -v volume-serial-number especifica el código alfanumérico de seis caracteres que identifica el volumen de medios.

    • -p 0xposition especifica la posición inicial hexadecimal que anotó en la entrada del log del archivador.

    • path es la ruta al directorio de recuperación temporal.

    • requestfile es el nombre que desea usar para el archivo tar en la memoria que el comando request lee desde el medio.

    En el ejemplo, se tienen que crear dos archivos de solicitud. El primero, /hsmfs1/tars/request76a, carga el archivo de almacenamiento que comienza en la posición 0x76a en LTO (li) VOL013. Este archivo contiene los primeros dos segmentos. El segundo archivo de solicitud, /hsmfs1/tars/request1409aa4, carga el archivo de almacenamiento en la posición 0x1409aa4, en este caso, en el mismo volumen (los segmentos pueden residir en cualquier volumen de la biblioteca):

    root@solaris:~# request -m li -v VOL013 -p 0x76a /hsmfs1/tars/request76a
    root@solaris:~# request -m li -v VOL013 -p 0x1409aa4 \
    /hsmfs1/tars/request1409aa4
    
  8. Extraiga cada segmento de la copia de seguridad del archivo faltante o dañado desde el archivo tar en la memoria que creó en el paso anterior. Use el comando star -xv -f requestfile segment, donde requestfile es el nombre del archivo tar en la memoria y segment es la ruta (relacionada con el directorio raíz del sistema) y el nombre del archivo que necesita restaurar.

    El comando star es una versión Oracle HSM mejorada de tar de GNU que restaura archivos especificados desde el archivo de almacenamiento al que apunta con el archivo de solicitud.

    En el ejemplo, se extraen dos de los tres segmentos del archivo de datos bf/dat011 desde el archivo de solicitud (archivos tar en la memoria) tars/request76a y uno del archivo de solicitud tars/request1409aa4. El archivo se restaura a un directorio, /hsmfs1/bf/dat011/, en tres partes independientes:

    root@solaris:~# star -xvf tars/request76a bf/dat011/1
    root@solaris:~# star -xvf tars/request76a bf/dat011/2
    root@solaris:~# star -xvf tars/request1409aa4 bf/dat011/3
    

    Cuando se muestran los contenidos de /hsmfs1/bf/dat011, se observa un archivo numerado secuencialmente para cada segmento restaurado:

    root@solaris:~# ls /hsmfs/bf/dat011
    total 40968
    -rw-rw---- 1 root other 10485760 Mar  5 17:06 1
    -rw-rw---- 1 root other 10485760 Mar  5 17:06 2
    -rw-rw---- 1 root other      184 Mar  5 17:07 3
    root@solaris:~# 
    
  9. Vuelva a ensamblar los segmentos restaurados en un archivo temporal único no segmentado.

    En el ejemplo, se concatenaron los tres segmentos en el directorio /hsmfs1/bf/dat011/ para crear el archivo /hsmfs1/bf/dat011file:

    root@solaris:~# cat /hsmfs/bf/dat011/1 /hsmfs/bf/dat011/2 \
    /hsmfs/bf/dat011/3 > /hsmfs/bf/dat011file
    root@solaris:~# 
    

    Cuando se muestran los contenidos de /hsmfs1/bf/, el archivo nuevo aparece junto con el directorio que contiene los segmentos.

    root@solaris:~# ls -l /hsmfs/bf/dat011*
    drwxr-xr-x 2 root root      4096 Mar  5 17:06 dat011
    -rw-rw---- 1 root other 20971704 Mar  5 17:14 dat011file
    root@solaris:~# 
    
  10. Elimine los segmentos y el directorio que los contiene.

    root@solaris:~# rm -r /hsmfs/bf/dat011/ 
    root@solaris:~# 
    
  11. Cree un archivo vacío con la ruta original y el nombre del archivo segmentado. Utilice el comando touch file, donde file es la ruta original y el nombre del archivo.

    En el ejemplo, se crea el archivo vacío /hsmfs/bf/dat011, el nombre original del archivo segmentado que se está restaurando:

    root@solaris:~# touch /hsmfs/bf/dat011 
    root@solaris:~# 
    
  12. Defina el atributo de segmento Oracle HSM en el nuevo archivo vacío recién creado. Use el comando segment -l segment-length file, donde segment-length es la longitud del segmento que anotó en la entrada del log del archivador y file es la ruta original y el nombre del archivo segmentado.

    En el ejemplo, el log del archivador muestra que la longitud del segmento para el archivo dat011 es 10485760 (el archivo termina en el tercer segmento, por lo que la longitud de los datos en el medio es menor que la longitud del segmento):

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 76a.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    

    Entonces la longitud del segmento se establece en 10485760 para el archivo vacío:

    root@solaris:~# segment -l 10485760 /hsmfs/bf/dat011 
    root@solaris:~# 
    
  13. Copie el archivo temporal sin segmentar en el archivo segmentado vacío.

    En el ejemplo, se copia dat011file en dat011:

    root@solaris:~# cp /hsmfs/bf/dat011file /hsmfs/bf/dat011
    root@solaris:~# 
    

    Cuando se ejecuta el comando sls -2K hsmfs/bf/dat011 para mostrar los segmentos, estos aparecen como se muestra a continuación. De modo que el archivo se ha restaurado.

    root@solaris:~# sls -2K /hsmfs/bf/dat011
    -rw-rw---- 1 root other        20971704     Mar  5 17:12 hsmfs/bf/dat011
    ---------- ----- sI {3,0,0,0}
    -rw-rw---- 1 root other        10485760     Mar  5 17:12 hsmfs/bf/dat011/1
    ---------- ----- sS
    -rw-rw---- 1 root other        10485760     Mar  5 17:12 hsmfs/bf/dat011/2
    ---------- ----- sS
    -rw-rw---- 1 root other             184     Mar  5 17:12 hsmfs/bf/dat011/3
    ---------- ----- sS
    
  14. Defina los otros atributos de archivo necesarios.

    Cuando restaura un archivo desde un archivo tar, sin un archivo de punto de recuperación samfsdump o qfsdump, se pierden los atributos del archivo original. Se debe crear desde cero un archivo .inodes para el archivo, usando los valores de atributo por defecto.

  15. El archivo ahora se ha restaurado. Suprima el archivo temporal sin segmentar.

    En el ejemplo, se suprime dat011file:

    root@solaris:~# rm /hsmfs/bf/dat011file
    root@solaris:~# 
    
  16. Repita este procedimiento hasta que todos los archivos requeridos se hayan recuperado.

  17. Finalice el procedimiento de recuperación. Consulte Restauración del funcionamiento normal de los sistemas de archivos de almacenamiento.

Restauración de archivos de desbordamiento de volumen perdidos y dañados

Un archivo de desbordamiento de volumen es un archivo normal que abarca volúmenes de medios. Restaurar un archivo de desbordamiento de volumen es muy similar a restaurar cualquier otro archivo normal. Sin embargo, debe combinar las secciones de un archivo de almacenamiento que reside en varios volúmenes en un único archivo de almacenamiento en disco antes de extraer el archivo de datos del archivo de almacenamiento. Para cada archivo que deba recuperar, siga los pasos que se detallan a continuación:

  1. Si aún no lo ha hecho, inicie sesión en el servidor de metadatos del sistema de archivos como usuario root.

    root@solaris:~# 
    
  2. Si aún no lo ha hecho, detenga el archivado y reciclaje mediante el procedimiento en Detención de procesos de archivado y reciclaje.

  3. Si cuenta con un log del archivador para el período en el que se archivó por última vez el archivo de desbordamiento de volumen, busque la entrada más reciente del archivo. Anote los números de serie de los medios, la longitud de cada sección del archivo, la ruta y el nombre del archivo relacionado con el directorio raíz del sistema de archivos, y el número de secciones en el archivo.

    En el ejemplo, se sabe que el archivo /hsmfs1/rf/rf81 es un archivo de desbordamiento de volumen porque es un archivo normal de tipo f que reside en dos volúmenes, VOL036 y VOL034, y tiene dos secciones, 0 y 1:

    A 2015/03/03 18:28:51 li VOL036 all.1 12d.1 hsmfs1 11731.1 89128448  rf/rf81 f 0 210
    A 2013/08/23 18:28:51 li VOL034 all.1 15f.0 hsmfs1 11731.1 525271552 rf/rf81 f 1 220
    
  4. Cambie al directorio raíz del sistema de archivos que está restaurando.

    Los archivos de almacenamiento de Oracle HSM almacenan copias relacionadas con el directorio raíz del sistema de archivos. Entonces, para restaurarlos en sus ubicaciones originales, se deben restaurar desde el directorio raíz.

    En el ejemplo, se cambia a la raíz del sistema de archivos hsmfs1.

    root@solaris:~# cd /hsmfs1
    
  5. Antes de continuar, asegúrese de que el sistema de archivos contenga suficiente espacio libre para incluir un archivo de por lo menos el doble del tamaño del archivo que se está recuperando.

    Para el archivo en el ejemplo, rf/rf81, necesitaremos 1,2 GB de espacio libre, en función de los tamaños de las dos secciones del archivo: 2 x (89128448 + 525271552) = 1228800000 bytes.

  6. Cree un directorio en el sistema de archivos restaurado para contener los archivos de almacenamiento temporales.

    En el ejemplo, se crea el directorio /hsmfs1/tars.

    root@solaris:~# mkdir /hsmfs1/tars
    
  7. Posicione el medio al comienzo de cada archivo de almacenamiento que contenga una copia almacenada de uno o más de los segmentos del archivo y lea el archivo desde el medio en la memoria. Utilice el comando request -m media-type -v volume-serial-number -p 0xposition path/requestfile, donde:

    • -m media-type especifica uno de los dos códigos de tipo de medios de dos caracteres que se muestran en Apéndice B.

    • -v volume-serial-number especifica el código alfanumérico de seis caracteres que identifica el volumen de medios.

    • -p 0xposition es la posición inicial hexadecimal que anotó en la entrada del log del archivador.

    • path es la ruta al directorio de recuperación temporal.

    • requestfile es el nombre que desea usar para el archivo tar en la memoria que el comando request lee desde el medio.

    En el ejemplo, se crean dos archivos de solicitud. El primer archivo de solicitud, /hsmfs1/tars/requestVOL036, carga el archivo de almacenamiento que comienza en la posición 0x12d en LTO (li) VOL036. El segundo archivo de solicitud, /hsmfs1/tars/requestVOL034, carga el archivo de almacenamiento que comienza en la posición 0x15f en LTO (li) VOL034:

    root@solaris:~# request -m li -v VOL036 -p 0x12d /hsmfs1/tars/requestVOL036
    root@solaris:~# request -m li -v VOL034 -p 0x15f /hsmfs1/tars/requestVOL034
    
  8. Guarde cada uno de los archivos tar en la memoria que haya creado para el disco como una sección del archivo de almacenamiento. Utilice el comando dd if= requestfile of=archive_section, donde requestfile es la ruta y el nombre del archivo tar en la memoria y archive_section es la ruta y el nombre de cada sección del archivo de almacenamiento.

    En el ejemplo, guardamos los archivos de solicitud (archivos tar en la memoria), tars/requestVOL036 y tars/requestVOL034 como tars/archive_part1 y tars/archive_part2:

    root@solaris:~# dd if=tars/requestVOL036 of=tars/archive_part1
    root@solaris:~# dd if=tars/requestVOL034 of=tars/archive_part2
    root@solaris:~# 
    
  9. Vuelva a ensamblar las secciones en un único archivo de almacenamiento.

    En el ejemplo, se concatenan dos secciones, tars/archive_part1 y tars/archive_part2, para crear un archivo de almacenamiento único, /tars/archive_complete:

    root@solaris:~# cat tars/archive_part1 tars/archive_part2 > \
    tars/archive_complete
    root@solaris:~# 
    
  10. Extraiga la copia de seguridad del archivo de desbordamiento de volumen faltante o dañado desde el archivo (tar) que creó en el paso anterior. Use el comando star -xv -f tarfile file, donde tarfile es el nombre del archivo de almacenamiento y file es la ruta (relacionada con el directorio raíz del sistema) y el nombre del archivo que necesita restaurar.

    El comando star es una versión Oracle HSM mejorada de tar de GNU que restaura archivos especificados desde el archivo de almacenamiento al que apunta con el archivo de solicitud.

    En el ejemplo, se extrae el archivo de desbordamiento de volumen rf/rf81 desde el archivo tar tars/archive_complete:

    root@solaris:~# star -xvf tars/archive_complete rf/rf81
    
  11. Defina los otros atributos de archivo necesarios.

    Cuando restaura un archivo desde un archivo tar, sin un archivo de punto de recuperación samfsdump o qfsdump, se pierden los atributos del archivo original. Se debe crear desde cero un archivo .inodes para el archivo, usando los valores de atributo por defecto.

  12. El archivo de desbordamiento de volumen ahora se ha restaurado. Suprima el archivo temporal.

    En el ejemplo, se suprime dat011file:

    root@solaris:~# rm tars/archive_*
    root@solaris:~# 
    
  13. Repita este procedimiento hasta que todos los archivos requeridos se hayan recuperado.

  14. Finalice el procedimiento de recuperación. Consulte Restauración del funcionamiento normal de los sistemas de archivos de almacenamiento.

Recuperación de copias de archivos de almacenamiento dañadas

Una copia de archivo de almacenamiento dañada es una copia de un archivo que no se puede volver a guardar de manera provisional en la caché de disco. A veces, el almacenamiento provisional del archivo falla debido a un problema de E/S intermitente relacionado con hardware que se puede resolver fácilmente. Otras veces, la copia dañada es defectuosa y los datos no se pueden recuperar. La única opción en estos casos es recuperar el archivo desde una copia alternativa.

Para identificar y administrar copias dañadas, realice lo siguiente:

  1. Identifique los archivos con copias de archivo de almacenamiento dañadas. Use el comando sfind mountpoint -any_copy_d, donde mountpoint es el directorio donde se monta el sistema de archivos recuperado.

    En el ejemplo, se inicia la búsqueda en el directorio /hsmfs1 y se encuentran tres archivos con copias dañadas:

    root@solaris:~# sfind /hsmfs1 -any_copy_d
    ./genfiles/ab09
    ./genfiles/ab11
    ./genfiles/ay12
    root@solaris:~# 
    
  2. Para cada archivo que haya identificado, identifique las copias dañadas. Utilice el comando sls -D file, donde file es la ruta y el nombre de archivo que quiere comprobar.

    Las copias dañadas se destacan con una D. En el ejemplo, la copia 2 de /hsmfs1/genfiles/ab09 y la copia 1 de /hsmfs1/genfiles/ab11 están dañadas:

    root@solaris:~# sls -D /hsmfs1/genfiles/ab09
    /hsmfs1/genfiles/ab09:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    306581  admin id: 0  inode:    11748.11
      project: system(0)
      copy 1: ---- Mar 11 13:52       76f.421bc li VOL011
      copy 2: ---D Mar 31 14:02       286.1324f li VOL021
      access:   Mar 11 13:50  modification: Mar 11 13:50
      changed:  Mar 11 13:50  attributes:   Mar 11 13:50
      creation: Mar 11 13:50  residence:    Mar 11 13:50
    root@solaris:~# sls -D /hsmfs1/genfiles/ab11
    /hsmfs1/genfiles/ab11:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    380051  admin id: 0  inode:    1460.1
      project: system(0)
      copy 1: ---D Mar 01 10:21       431.21bc6 li VOL024
      access:   Mar 01 10:21  modification: Mar 01 10:21
      changed:  Mar 01 10:21  attributes:   Mar 01 10:21
      creation: Mar 01 10:21  residence:    Mar 01 10:21
    root@solaris:~# 
    
  3. Si hay una copia alternativa, desarchive la copia dañada. Utilice el comando unarchive -c CopyNumber file, donde CopyNumber es un entero que representa el número de copia y file es la ruta y el nombre del archivo dañado. Deténgase aquí.

    Cuando desarchiva una copia dañada, Oracle HSM realiza una almacenamiento provisional de la copia y crea una copia de archivo de almacenamiento adicional la próxima vez que se ejecuta el proceso del archivador. En el ejemplo, hay otra copia de /hsmfs1/genfiles/ab09 que no está dañada, por lo que se restaura la copia dañada, es decir, la copia 2:

    root@solaris:~# unarchive -c 2 /hsmfs1/genfiles/ab09
    root@solaris:~# 
    
  4. Si no cuenta con otra copia, repare el daño de la copia dañada. Utilice el comando undamage -cCopyNumber file, donde CopyNumber es un entero que representa el número de copia y file es la ruta y el nombre del archivo dañado.

    A veces, un archivo no se almacena de manera provisional debido a un error de E/S intermitente relacionado con hardware. Puede resolver el problema si borra el indicador de daño y vuelve a almacenar de manera provisional. En el ejemplo, hay una sola copia de /hsmfs1/genfiles/ab11:

    root@solaris:~# undamage -c1 /hsmfs1/genfiles/ab11
    
  5. Intente almacenar de manera provisional la copia. Use el comando stage -c CopyNumber -I file, donde CopyNumber es un entero que representa el número de copia y file es la ruta y el nombre del archivo dañado.

    El parámetro opcional -I (inmediato) coloca la operación de almacenamiento provisional al inicio de la cola:

    root@solaris:~# stage -c 1 -I /hsmfs1/genfiles/ab11
    
  6. Si el almacenamiento provisional se produce correctamente, deténgase aquí.

  7. Si volvió a fallar, Oracle HSM nuevamente coloca el indicador de dañado. Anote el número de inode principal en la salida del comando sls -D para la copia dañada.

    En el ejemplo, el número de inode del archivo /hsmfs1/genfiles/ab11 es 1460:

    root@solaris:~# sls -D /hsmfs1/genfiles/ab11
    /hsmfs1/genfiles/ab11:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    380051  admin id: 0  inode:    1460.1
      project: system(0)
      copy 1: ---D Mar 01 10:21       431.21bc6 li VOL024
      ...
    root@solaris:~# 
    
  8. Busque las causas posibles. Primero, examine el archivo Oracle HSM /var/adm/sam-log para buscar mensajes relacionados con el almacenamiento provisional pertinentes al inode del archivo con la copia dañada.

    La búsqueda se puede llevar a cabo de distintas formas. En el ejemplo, se muestran los contenidos del archivo de log usando el comando cat de Solaris y se conduce la salida a grep y una expresión regular que coincide con el número de inode. Se encuentran dos mensajes. Ambos indican un error de E/S y uno explícitamente implica el número ordinal del equipo (eq) 804, una de las unidades de cinta:

    root@solaris:~# cat /var/adm/sam-log | grep "inode 1460"
    Mar 11 15:35:44 server1 genu-20[8899]: Stage request canceled for inode 1460 (eq 804): I/O error.
    Jan 11 15:35:44 server1 samfs[8894]: /sam4 inode 1460.1 - Archive copy 1 marked damaged: I/O error
    
  9. Si el archivo /var/adm/sam-log implica un número ordinal de equipo Oracle HSM, examine el log del dispositivo, /var/opt/SUNWsamfs/devlog/drive-equipment-number, donde drive-equipment-number es el número ordinal que aparece en el archivo /var/adm/sam-log.

  10. Si el problema parece ser específico de una unidad en particular, haga que la unidad implicada no esté disponible para el proceso de almacenamiento provisional usando el comando samcmd unavail drive-equipment-number. A continuación, repare la copia e intente almacenarla de manera provisional.

    root@solaris:~# samcmd unavail 804
    root@solaris:~# stage -c 1 -I /hsmfs1/genfiles/ab11
    root@solaris:~# undamage -c1 /hsmfs1/genfiles/ab11
    root@solaris:~# 
    
  11. Si el almacenamiento provisional vuelve a fallar o no aparece una unidad de disco individual, intente recuperar la copia usando los comandos request y star, como se describe en Recuperación de archivos mediante entradas de log, o utilidades de Solaris como tar y dd.

  12. Si aún no puede recuperar el archivo, y si el valor de los datos lo garantiza, recurra a un servicio de recuperación de datos. Para obtener asistencia con los medios de cinta Oracle StorageTek, recurra a los servicios de recuperación de datos de cinta empresarial de Oracle StorageTek. Inicie sesión en My Oracle Support en support.oracle.com. Abra una solicitud de servicio, seleccione el modelo de unidad de cinta de la lista, dentro de la categoría de solicitud, y seleccione problemas de medios en la lista, dentro de la subcategoría.

  13. Si el archivo no se puede recuperar, quite la copia dañada del almacenamiento. Utilice el comando unarchive -c CopyNumber file, donde CopyNumber es un entero que representa el número de copia y file es la ruta y el nombre del archivo dañado.

    root@solaris:~# unarchive -c 1 /hsmfs1/genfiles/ab11
    root@solaris:~# 
    
  14. Resuelva los problemas de unidades o medios que mostraron los archivos de log.

  15. Si desactivó los procesos de almacenamiento, almacenamiento provisional y reciclaje en un paso anterior, reactívelos ahora. Consulte Restauración del funcionamiento normal de los sistemas de archivos de almacenamiento.

  16. De lo contrario, deténgase aquí.