Omitir Vínculos de navegación | |
Salir de la Vista de impresión | |
![]() |
Guía de administración de Oracle Solaris ZFS Oracle Solaris 10 1/13 Information Library (Español) |
1. Sistema de archivos ZFS de Oracle Solaris (introducción)
2. Procedimientos iniciales con Oracle Solaris ZFS
3. Administración de agrupaciones de almacenamiento de Oracle Solaris ZFS
4. Instalación e inicio de un sistema de archivos raíz ZFS Oracle Solaris
5. Administración de sistemas de archivos ZFS de Oracle Solaris
6. Uso de clones e instantáneas de Oracle Solaris ZFS
7. Uso de listas de control de acceso y atributos para proteger archivos Oracle Solaris ZFS
8. Administración delegada de ZFS Oracle Solaris
9. Temas avanzados de Oracle Solaris ZFS
10. Recuperación de agrupaciones y solución de problemas de Oracle Solaris ZFS
Identificación de problemas de ZFS
Resolución de problemas de hardware generales
Identificación de fallos de hardware y dispositivos
Creación de informes del sistema sobre mensajes de error de ZFS
Identificación de problemas con agrupaciones de almacenamiento ZFS
Cómo establecer si una agrupación de almacenamiento de ZFS tiene problemas
Revisión de la salida de zpool status
Información sobre el estado general de la agrupación
Información de configuración de agrupación de almacenamiento ZFS
Estado de limpieza de agrupación de almacenamiento ZFS
Resolución de problemas de dispositivos de almacenamiento ZFS
Resolución de problemas de dispositivo extraído o faltante
Resolución de problemas de un dispositivo extraído
Cómo volver a conectar físicamente un dispositivo
Notificación de ZFS sobre disponibilidad de dispositivos
Sustitución o reparación de un dispositivo dañado
Cómo determinar el tipo de error en dispositivos
Eliminación de errores transitorios de dispositivos
Sustitución de un dispositivo de un grupo de almacenamiento de ZFS
Cómo determinar si un dispositivo se puede reemplazar o no
Dispositivos que no se pueden reemplazar
Sustitución de un dispositivo de un grupo de almacenamiento de ZFS
Visualización de estado de reconstrucción
Resolución de problemas del sistema de archivos ZFS
Resolución de problemas de datos en una agrupación de almacenamiento ZFS
Comprobación de integridad de sistema de archivos ZFS
Reparación de sistema de archivos
Validación de sistema de archivos
Control de la limpieza de datos de ZFS
Limpieza explícita de datos de ZFS
Limpieza y actualización de la duplicación de datos de ZFS
Resolución de problemas de espacio ZFS
Informes de espacio del sistema de archivos
Informes de espacio de la agrupación de almacenamiento ZFS
Identificación del tipo de corrupción de datos
Reparación de un archivo o directorio dañado
Reparación de datos dañados con referencias de varios bloques
Reparación de daños en las agrupaciones de almacenamiento de ZFS
Reparación de una configuración de ZFS dañada
Reparación de un sistema que no se puede iniciar
11. Prácticas de ZFS recomendadas por Oracle Solaris
Ejemplos de problemas de datos:
Errores transitorios de E/S debido a discos o controladores incorrectos
Datos en disco dañados por rayos cósmicos
Errores de controladores debidos a datos que se transfieren o reciben de ubicaciones incorrectas
Anulación involuntaria de partes del dispositivo físico por parte de un usuario
En determinados casos, estos errores son transitorios, por ejemplo errores aleatorios de E/S mientras el controlador tiene problemas. En otros, las consecuencias son permanentes, por ejemplo la corrupción del disco. Aun así, el hecho de que los daños sean permanentes no implica necesariamente que el error se repita más adelante. Por ejemplo, si sobrescribe involuntariamente parte de un disco, no se ha producido ningún error de hardware y no hace falta reemplazar el dispositivo. No resulta nada fácil identificar con exactitud lo que ha sucedido en un dispositivo. Ello se aborda en mayor profundidad más adelante en otra sección.
En ZFS no hay una utilidad fsck equivalente. Esta utilidad se ha venido utilizando con dos fines: para reparaciones de sistema de archivos y para validaciones de dichos sistemas.
En los sistemas de archivos tradicionales, el método de escritura de datos es intrínsecamente vulnerable a errores imprevistos que generan incoherencias en el sistema. Debido a que un sistema de archivos tradicional no es transaccional, puede haber bloques sin referenciar, recuentos de vínculos erróneos u otras estructuras de sistema de archivos no coherentes. La agregación de diarios soluciona algunos de estos problemas, pero puede presentar otros problemas si el registro no se puede invertir. La existencia de datos incoherentes en el disco de una configuración ZFS sólo puede ser debida a un error de hardware (en cuyo caso, la agrupación debería haber sido redundante) o porque hay un error en el software de ZFS.
La utilidad fsck soluciona problemas conocidos específicos de sistemas de archivos UFS. Casi todos los problemas de agrupación de almacenamiento ZFS suelen estar relacionados con errores de hardware o fallos de alimentación. Muchos se pueden evitar utilizando agrupaciones redundantes. Si una agrupación se ha dañado por un error de hardware o un fallo de alimentación, consulte Reparación de daños en las agrupaciones de almacenamiento de ZFS.
Si la agrupación no es redundante, siempre existe el riesgo de que los daños en el sistema de archivos lleguen a hacer que parte o todos los datos queden inaccesibles.
Aparte de reparar sistemas de archivos, la utilidad fsck comprueba que los datos en disco no tengan problemas. El procedimiento habitual para esta tarea consiste en desmontar el sistema de archivos y ejecutar la utilidad fsck, seguramente con el sistema en modo monousuario durante el proceso. Esta situación da como resultado un tiempo de inactividad proporcional al tamaño del sistema de archivos que se comprueba. En lugar de hacer que una determinada utilidad realice la comprobación pertinente, ZFS brinda un mecanismo para ejecutar una comprobación rutinaria de todas las incoherencias. Esta función, denominada limpieza, se suele utilizar en la memoria y en otros sistemas como método para detectar y evitar errores antes de que deriven en errores de hardware o software.
Cuando ZFS detecta un error, ya sea mediante el proceso de limpieza o al acceder a un archivo por algún motivo, el error se registra internamente para poder disponer de una visión general inmediata de todos los errores conocidos de la agrupación.
La forma más sencilla de comprobar la integridad de los datos es ejecutar una limpieza explícita de todos los datos de la agrupación. Este proceso afecta a todos los datos del grupo y verifica que se puedan leer todos los bloques. El proceso de limpieza transcurre todo lo deprisa que permiten los dispositivos, aunque la prioridad de cualquier E/S quede por debajo de las operaciones normales. Esta operación puede incidir negativamente en el rendimiento, aunque los datos de la agrupación deberían seguir siendo utilizables casi del modo habitual. Para iniciar una limpieza explícita, utilice el comando zpool scrub. Por ejemplo:
# zpool scrub tank
El estado de la limpieza actual puede verse mediante el comando zpool status. Por ejemplo:
# zpool status -v tank pool: tank state: ONLINE scrub: scrub completed after 0h7m with 0 errors on Tue Tue Feb 2 12:54:00 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors
Sólo puede haber una operación de limpieza activa por agrupación.
Con la opción -s se puede detener una operación de limpieza en curso. Por ejemplo:
# zpool scrub -s tank
En la mayoría de los casos, una operación de limpieza para asegurar la integridad de los datos debe continuar hasta finalizar. Si cree que la limpieza afecta negativamente al rendimiento del sistema, puede detenerla.
La ejecución rutinaria de limpiezas garantiza la E/S continua en todos los discos del sistema. La ejecución rutinaria de limpiezas tiene el inconveniente de impedir que los discos inactivos pasen a la modalidad de bajo consumo. Si en general el sistema efectúa E/S permanentemente, o si el consumo de energía no es ningún problema, se puede prescindir de este tema.
Para obtener más información sobre la interpretación de la salida de zpool status, consulte Consulta del estado de una agrupación de almacenamiento de ZFS.
Al reemplazar un dispositivo, se inicia una operación de actualización de duplicación de datos para transferir datos de las copias correctas al nuevo dispositivo. Este proceso es una forma de limpieza de disco. Por lo tanto, una acción de este tipo sólo puede darse en la agrupación en un momento determinado. Si hay una operación de limpieza en curso, una operación de creación de reflejo suspende la limpieza en curso y la reinicia una vez concluida la creación de reflejo.
Para obtener más información sobre la actualización de duplicación de datos, consulte Visualización de estado de reconstrucción.
El deterioro de datos tiene lugar cuando uno o varios errores de dispositivos (dañados o que faltan) afectan a un dispositivo virtual de nivel superior. Por ejemplo, la mitad de un reflejo puede sufrir innumerables errores sin causar la más mínima corrupción de datos. Si se detecta un error en la otra parte del reflejo, en la misma ubicación exacta, se producirán datos dañados como resultado.
Los datos quedan permanentemente dañados y deben tratarse de forma especial durante la reparación. Aunque se reparen o reemplacen los dispositivos subyacentes, los datos originales se pierden irremisiblemente. En estas circunstancias, casi siempre se requiere la restauración de datos a partir de copias de seguridad. Los errores de datos se registran conforme se detectan. Como se explica en la sección siguiente, pueden controlarse mediante limpiezas de agrupación rutinarias. Si se quita un bloque dañado, el siguiente pase de limpieza reconoce que el deterioro ya no está presente y suprime del sistema cualquier indicio de error.
Revise las siguientes secciones si no está seguro de cómo ZFS informa la contabilización del sistema de archivos y el espacio de agrupación. También revise Cálculo del espacio de ZFS.
Los comandos zpool list y zfs list son mejores que los comandos df y du anteriores para determinar el espacio disponible de la agrupación y el sistema de archivos. Con los comandos heredados, no se puede distinguir fácilmente entre el espacio disponible de la agrupación y el del sistema de archivos. Además, los comandos heredados no contabilizan el espacio que consumen los sistemas de archivos descendientes o las instantáneas.
Por ejemplo, la siguiente agrupación raíz (rpool) tiene 5,46 GB asignados y 68,5 GB libres.
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 74G 5.46G 68.5G 7% 1.00x ONLINE -
Si compara la contabilización del espacio de la agrupación con la contabilización del espacio del sistema de archivos revisando la columna USED de los sistemas de archivos individuales, puede ver que el espacio de la agrupación informado en ALLOC está contabilizado en el total de USED de los sistemas de archivos. Por ejemplo:
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 5.41G 67.4G 74.5K /rpool rpool/ROOT 3.37G 67.4G 31K legacy rpool/ROOT/solaris 3.37G 67.4G 3.07G / rpool/ROOT/solaris/var 302M 67.4G 214M /var rpool/dump 1.01G 67.5G 1000M - rpool/export 97.5K 67.4G 32K /rpool/export rpool/export/home 65.5K 67.4G 32K /rpool/export/home rpool/export/home/admin 33.5K 67.4G 33.5K /rpool/export/home/admin rpool/swap 1.03G 67.5G 1.00G -
El valor de tamaño (SIZE) que informa el comando zpool list en general es la cantidad de espacio físico en disco de la agrupación, pero esto varía según el nivel de redundancia de la agrupación. Consulte los ejemplos que se proporcionan a continuación. El comando zfs list muestra el espacio utilizable que está disponible para sistemas de archivos, que se calcula con el espacio en disco menos la carga de metadatos de redundancia de la agrupación ZFS, si es que hay.
Agrupación de almacenamiento no redundante: cuando una agrupación se crea con un disco de 136 GB, el comando zpool list informa SIZE y los valores iniciales de FREE como 136 GB. El espacio inicial de AVAIL informado por el comando zfs list es de 134 GB, debido a una pequeña cantidad de carga de metadatos de la agrupación. Por ejemplo:
# zpool create tank c0t6d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
Agrupación de almacenamiento reflejada: cuando una agrupación se crea con dos discos de 136 GB, el comando zpool list informa SIZE como 136 GB y el valor inicial FREE como 136 GB. Este informe se denomina valor de espacio desinflado. El espacio inicial de AVAIL informado por el comando zfs list es de 134 GB, debido a una pequeña cantidad de carga de metadatos de la agrupación. Por ejemplo:
# zpool create tank mirror c0t6d0 c0t7d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
Agrupación de almacenamiento RAID-Z: cuando una agrupación raidz2 se crea con tres discos de 136 GB, el comando zpool list informa SIZE como 408 GB y el valor inicial de FREE como 408 GB. Este informe se conoce como valor de espacio en disco inflado, que incluye carga de redundancia, como la información de paridad. El espacio inicial de AVAIL informado por el comando zfs list es de 133 GB, debido a la carga de redundancia de la agrupación. La diferencia de espacio entre la salida de zpool list y zfs list para una agrupación RAID-Z se debe a que zpool list informa el espacio de agrupación aumentado.
# zpool create tank raidz2 c0t6d0 c0t7d0 c0t8d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 408G 286K 408G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 73.2K 133G 20.9K /tank
En las secciones siguientes se explica el procedimiento para identificar el tipo de corrupción de datos y, si es factible, cómo reparar los datos.
Para reducir al mínimo las posibilidades de que los datos sufran daños, ZFS utiliza sumas de comprobación, redundancia y datos que se reparan a sí mismos. Ahora bien, los datos se pueden dañar si una agrupación no es redundante, cuando una agrupación está en estado "degraded" o si se combina una improbable serie de eventos para dañar varias copias de determinados datos. Sea cual sea el origen, el resultado es el mismo: los datos quedan dañados y no se puede acceder a ellos. Las medidas requeridas dependen del tipo de datos dañados y su valor relativo. Se pueden dañar dos tipos básicos de datos:
Metadatos de grupo: para abrir un grupo y acceder a conjuntos de datos, ZFS debe analizar cierta cantidad de datos. Si se dañan estos datos, quedará inaccesible toda la agrupación o partes de la jerarquía del conjuntos de datos.
Datos de objeto: en este caso, se daña un determinado archivo o directorio. Ello puede hacer que no se pueda acceder a una parte del archivo o directorio, o causar la interrupción del objeto.
Los datos se verifican durante el funcionamiento normal y durante el proceso de limpieza. Para obtener más información sobre cómo verificar la integridad de datos de agrupaciones, consulte Comprobación de integridad de sistema de archivos ZFS.
De forma predeterminada, el comando zpool status avisa únicamente de la presencia de daños, pero no indica su ubicación. Por ejemplo:
# zpool status monkey pool: monkey 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://www.sun.com/msg/ZFS-8000-8A scrub: scrub completed after 0h0m with 8 errors on Tue Jul 13 13:17:32 2010 config: NAME STATE READ WRITE CKSUM monkey ONLINE 8 0 0 c1t1d0 ONLINE 2 0 0 c2t5d0 ONLINE 6 0 0 errors: 8 data errors, use '-v' for a list
Cada error indica solamente que ha habido un error en un determinado momento. Eso no significa que cada error siga estando en el sistema. Éste es el caso en circunstancias normales. Determinadas interrupciones temporales del suministro pueden provocar daños en los datos que se reparan automáticamente cuando finaliza dicha interrupción. Se garantiza la ejecución completa de un proceso de limpieza del grupo para examinar cada bloque activo del grupo, con lo cual el registro de errores se reinicia cuando concluye la limpieza. Si considera que ya no hay errores y no quiere esperar a que finalice la limpieza, reinicie todos los errores de la agrupación mediante el comando zpool online.
Si los dañados afectan a metadatos de toda la agrupación, la salida difiere ligeramente. Por ejemplo:
# zpool status -v morpheus pool: morpheus id: 1422736890544688191 state: FAULTED status: The pool metadata is corrupted. action: The pool cannot be imported due to damaged devices or data. see: http://www.sun.com/msg/ZFS-8000-72 config: morpheus FAULTED corrupted data c1t10d0 ONLINE
Si los daños afectan a toda la agrupación, ésta pasa al estado FAULTED , ya que posiblemente no podrá proporcionar el nivel de redundancia requerido.
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 -v pool: monkey 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://www.sun.com/msg/ZFS-8000-8A scrub: scrub completed after 0h0m with 8 errors on Tue Jul 13 13:17:32 2010 config: NAME STATE READ WRITE CKSUM monkey ONLINE 8 0 0 c1t1d0 ONLINE 2 0 0 c2t5d0 ONLINE 6 0 0 errors: Permanent errors have been detected in the following files: /monkey/a.txt /monkey/bananas/b.txt /monkey/sub/dir/d.txt monkey/ghost/e.txt /monkey/ghost/boo/f.txt
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.
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.
Si los metadatos de una agrupación resultan dañados de tal manera que es imposible abrir la agrupación o importarla, puede realizar alguna de las siguientes acciones:
Intentar recuperar la agrupación mediante el comando zpool clear -F o el comando zpool import -F. Estos comandos intentan restaurar un estado operativo de las transacciones de agrupación más recientes. Puede utilizar el comando zpool status para revisar una agrupación dañada y el procedimiento de recuperación recomendado. Por ejemplo:
# zpool status pool: tpool state: FAULTED status: The pool metadata is corrupted and the pool cannot be opened. action: Recovery is possible, but will result in some data loss. Returning the pool to its state as of Wed Jul 14 11:44:10 2010 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool clear -F tpool'. A scrub of the pool is strongly recommended after recovery. see: http://www.sun.com/msg/ZFS-8000-72 scrub: none requested config: NAME STATE READ WRITE CKSUM tpool FAULTED 0 0 1 corrupted data c1t1d0 ONLINE 0 0 2 c1t3d0 ONLINE 0 0 4
El proceso de recuperación como se describe en la salida anterior consiste en utilizar el siguiente comando:
# zpool clear -F tpool
Si intenta importar una agrupación de almacenamiento dañada, se muestran mensajes parecidos al siguiente:
# zpool import tpool cannot import 'tpool': I/O error Recovery is possible, but will result in some data loss. Returning the pool to its state as of Wed Jul 14 11:44:10 2010 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool import -F tpool'. A scrub of the pool is strongly recommended after recovery.
El proceso de recuperación como se describe en la salida anterior consiste en utilizar el siguiente comando:
# zpool import -F tpool Pool tpool returned to its state as of Wed Jul 14 11:44:10 2010. Discarded approximately 5 seconds of transactions
Si la agrupación dañada está en el archivo zpool.cache, el problema se descubre al iniciar el sistema, y dicha agrupación se notifica en el comando zpool status. Si la agrupación no está en el archivo zpool.cache, no se importará ni se abrirá correctamente, y cuando intente importarla aparecerán mensajes que indicarán que está dañada.
Puede importar una agrupación dañada en el modo de sólo lectura. Este método le permite importar la agrupación para que pueda acceder a los datos. Por ejemplo:
# zpool import -o readonly=on tpool
Para obtener más información sobre la importación de una agrupación con permiso de sólo lectura, consulte Importación de una agrupación en modo de sólo lectura.
Puede importar una agrupación a la que le falta un dispositivo de registro mediante el comando zpool import -m. Para obtener más información, consulte Importación de una agrupación a la que le falta un dispositivo de registro.
Si la agrupación no se puede recuperar con el método de recuperación de agrupación descrito anteriormente, deberá restaurar la agrupación y todos sus datos desde una copia de seguridad. Los procedimientos para ello son muy variados: dependen de la configuración de las agrupaciones y de la estrategia de las copias de seguridad. En primer lugar, guarde la configuración tal como se muestra en el comando zpool status para poder volver a crearla después de la destrucción de la agrupación. A continuación, utilice el comando zpool destroy -f para destruir la agrupación.
Asimismo, conserve un archivo que contenga la disposición de los conjuntos de datos y guarde en lugar seguro las distintas propiedades que se han definido, ya que si en algún momento no se puede acceder al grupo, tampoco se podrá acceder a esta información. A partir de la configuración del grupo y la disposición del conjunto de datos, es posible reconstruir toda la configuración tras la destrucción del grupo. Los datos se pueden rellenar utilizando cualquier método de restauración o copia de seguridad.