Si un archivo o directorio resultasen dañados, según el tipo de corrupción, el sistema podría seguir funcionando. Si en el sistema no hay copias de los datos de buena calidad, cualquier daño que tenga lugar será irreparable. Si los datos son importantes, la única alternativa es recuperarlos a partir de una copia de seguridad. Aun así, esta situación quizá se pueda solventar sin tener que restaurar todo el grupo.
Si se ha dañado un bloque de datos de archivo, el archivo se puede eliminar sin problemas; de este modo, el error desaparece del sistema. Utilice el comando zpool status –v para ver en pantalla una lista con nombres de archivos que tienen errores constantes. Por ejemplo:
# zpool status tank -v pool: tank state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: http://support.oracle.com/msg/ZFS-8000-8A config: NAME STATE READ WRITE CKSUM tank ONLINE 4 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 c0t5000C500335FC3E7d0 ONLINE 4 0 0 errors: Permanent errors have been detected in the following files: /tank/file.1 /tank/file.2
La lista de nombres de archivos con errores constantes se puede describir del modo siguiente:
Si se busca la ruta de acceso del archivo y se monta el conjunto de datos, se muestra en pantalla toda la ruta del archivo. Por ejemplo:
/monkey/a.txt
Si se busca la ruta de acceso del archivo pero el conjunto de datos no se monta, en pantalla se muestra el nombre del conjunto de datos sin una barra inclinada (/), seguido de la ruta de acceso del conjunto de datos al archivo. Por ejemplo:
monkey/ghost/e.txt
Si no se puede trasladar correctamente el número de objeto a una ruta de archivo, ya sea por un error o porque el objeto no tiene asociada ninguna ruta de archivo auténtica, como en el caso de dnode_t, en pantalla se muestra nombre del conjunto de datos seguido del número de objeto. Por ejemplo:
monkey/dnode:<0x0>
Si se daña un objeto del conjunto de metaobjetos, en pantalla se muestra un etiqueta especial de <metadata>, seguida del número de objeto.
Puede intentar resolver más los errores menores de datos mediante la limpieza de la agrupación y de los errores de la agrupación en varias iteraciones. Si la primera limpieza e iteración no resuelvan los archivos dañados, ejecútelos nuevamente. Por ejemplo:
# zpool scrub tank # zpool clear tank
Si los daños se dan en un directorio o en los metadatos de un archivo, la única alternativa es colocar el archivo en otra ubicación. Puede colocar cualquier archivo o directorio en una ubicación menos apropiada para poder restaurar el objeto original.
Si un sistema de archivos dañado tiene datos dañados con referencias de varios bloques (por ejemplo, instantáneas), el comando zpool status –v no puede mostrar todas las rutas de datos dañadas. El informe actual de zpool status sobre datos dañados está limitado por la cantidad de daños de metadatos y si algún bloque se ha vuelto a utilizar después de que el comando zpool status se ejecuta. Los bloques desduplicados hacen que el informe de todos los datos dañados sea incluso más complicado.
Si tiene datos dañados y el comando zpool status –v identifica que los datos de instantáneas están afectados, considere la posibilidad de ejecutar el siguiente comando para identificar otras rutas dañadas.