La mayor parte de la información básica relacionada con los dispositivos se puede consultar en Componentes de una agrupación de almacenamiento de ZFS. Después de crear una agrupación, puede efectuar diversas tareas para administrar los dispositivos físicos en ella.
Conexión y desconexión de dispositivos en una agrupación de almacenamiento
Dispositivos con conexión y sin conexión en una agrupación de almacenamiento
Borrado de errores de dispositivo de agrupación de almacenamiento
Sustitución de dispositivos en una agrupación de almacenamiento
Designación de repuestos en marcha en la agrupación de almacenamiento
Puede agregar espacio en el disco a una agrupación de forma dinámica, incorporando un nuevo dispositivo virtual de nivel superior. Este espacio está inmediatamente disponible para todos los conjuntos de datos de la agrupación. Para agregar un dispositivo virtual a una agrupación, utilice el comando zpool add. Por ejemplo:
# zpool add zeepool mirror c2t1d0 c2t2d0 |
El formato para especificar dispositivos virtuales es el mismo que para el comando zpool create. Los dispositivos se comprueban para determinar si se utilizan y el comando no puede cambiar el nivel de redundancia sin la opción -f. El comando también es compatible con la opción -n de manera que puede ejecutar un ensayo. Por ejemplo:
# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update 'zeepool' to the following configuration: zeepool mirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0 |
La sintaxis de este comando agregaría dispositivos reflejados c3t1d0 y c3t2d0 a la configuración existente de la agrupación zeepool.
Para obtener más información sobre cómo validar dispositivos virtuales, consulte Detección de dispositivos en uso.
En el ejemplo siguiente se agrega un reflejo a otro reflejo de ZFS ya existente en un sistema Sun Fire x4500 de Oracle.
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool add tank mirror c0t3d0 c1t3d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors |
Se pueden agregar discos adicionales de modo similar a una configuración de RAID-Z. El ejemplo siguiente muestra cómo convertir una agrupación de almacenamiento con un dispositivo RAID–Z que contiene tres discos en una agrupación de almacenamiento con dos dispositivos RAID-Z con tres discos cada uno.
# zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 errors: No known data errors # zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0 # zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t4d0 ONLINE 0 0 0 errors: No known data errors |
En el ejemplo siguiente se muestra cómo agregar un dispositivo de registro reflejado a una agrupación de almacenamiento reflejada.Para obtener más información sobre cómo utilizar dispositivos de registro en la agrupación de almacenamiento, consulte Configuración de dispositivos de registro de ZFS independientes.
# zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors # zpool add newpool log mirror c0t6d0 c0t7d0 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 logs mirror-1 ONLINE 0 0 0 c0t6d0 ONLINE 0 0 0 c0t7d0 ONLINE 0 0 0 errors: No known data errors |
Puede vincular un dispositivo de registro a uno ya creado para crear un dispositivo de registro reflejado. Esta operación es idéntica a la de vincular un dispositivo en una agrupación de almacenamiento sin reflejar.
Los dispositivos de registro se pueden eliminar utilizando el comando zpool remove. El dispositivo de registro reflejado en el ejemplo anterior se puede eliminar mediante la especificación del argumento mirror-1. Por ejemplo:
# zpool remove newpool mirror-1 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors |
Si su configuración de agrupación sólo contiene un dispositivo de registro, para eliminar éste tendrá que especificar el nombre del dispositivo. Por ejemplo:
# zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c0t8d0 ONLINE 0 0 0 c0t9d0 ONLINE 0 0 0 logs c0t10d0 ONLINE 0 0 0 errors: No known data errors # zpool remove pool c0t10d0 |
Se pueden agregar a la agrupación de almacenamiento de ZFS y quitarlos si dejan de ser necesarios.
Utilice el comando zpool add para agregar dispositivos caché. Por ejemplo:
# zpool add tank cache c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors |
Los dispositivos caché no se pueden reflejar ni pueden formar parte de una configuración de RAID-Z.
Utilice el comando zpool remove para eliminar dispositivos caché. Por ejemplo:
# zpool remove tank c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 errors: No known data errors |
Actualmente, el comando zpool remove sólo admite la eliminación de dispositivos caché, dispositivos de registro y repuestos en marcha. Los dispositivos que forman parte de la configuración de la agrupación reflejada principal se pueden eliminar mediante el comando zpool detach. Los dispositivos no redundantes y de RAID-Z no se pueden eliminar de una agrupación.
Para obtener más información sobre cómo utilizar dispositivos caché en una agrupación de almacenamiento de ZFS, consulte Creación de una agrupación de almacenamiento de ZFS con dispositivos caché.
Además del comando zpool add, puede utilizar el comando zpool attach para agregar un nuevo dispositivo a un dispositivo reflejado o no reflejado existente.
Si va a vincular un disco para crear una agrupación raíz reflejada, consulte Cómo crear una agrupación raíz reflejada (posterior a la instalación).
Si va a reemplazar un disco en la agrupación de almacenamiento de ZFS, consulte Cómo sustituir un disco en la agrupación raíz ZFS.
En este ejemplo, zeepool es un reflejo de dos vías que se transforma en uno de tres vías mediante la conexión del nuevo dispositivo c2t1d0 a c1t1d0, el que ya existía.
# zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach zeepool c1t1d0 c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 592K resilvered errors: No known data errors |
Si el dispositivo existente forma parte de un reflejo de tres vías, al conectar el nuevo dispositivo se crea un reflejo de cuatro vías, y así sucesivamente. En cualquier caso, el nuevo dispositivo comienza inmediatamente la actualización de la duplicación.
También se puede convertir una agrupación de almacenamiento no redundante en una redundante mediante el comando zpool attach. Por ejemplo:
# zpool create tank c0t1d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach tank c0t1d0 c1t1d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 73.5K resilvered errors: No known data errors |
Puede utilizar el comando zpool detach para desconectar un dispositivo de una agrupación de almacenamiento reflejada. Por ejemplo:
# zpool detach zeepool c2t1d0 |
Pero esta operación fallará si no hay ninguna otra réplica válida de los datos. Por ejemplo:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: only applicable to mirror and replacing vdevs |
Una agrupación de almacenamiento de ZFS reflejada se puede clonar fácilmente como copia de seguridad de agrupación mediante el comando zpool split.
Actualmente, esta función no puede utilizarse para dividir una agrupación raíz reflejada.
Puede utilizar el comando zpool dividir para separar discos desde una agrupación de almacenamiento de ZFS reflejada para crear un nuevo conjunto de conexiones con uno de los discos separado. La nueva agrupación tendrá el mismo contenido que la agrupación original de almacenamiento de ZFS reflejada.
De manera predeterminada, una operación zpool split en una agrupación reflejada desvincula el último disco de la agrupación recién creada. Después de la operación de división, importe la nueva agrupación. Por ejemplo:
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool split tank tank2 # zpool import tank2 # zpool status tank tank2 pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 errors: No known data errors pool: tank2 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank2 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors |
Puede identificar qué disco utilizar para la nueva agrupación especificando ésta con el comando zpool split. Por ejemplo:
# zpool split tank tank2 c1t0d0 |
Antes de que se produzca la división, los datos en memoria se vaciarán en los discos reflejados. Después de vaciarse los datos, el disco se desconecta de la agrupación y se le asigna un nuevo GUID de agrupación. Se genera un nuevo GUID para permitir la importación de la agrupación en el mismo sistema en que se ha dividido.
Si la agrupación que se va a dividir tiene puntos de montaje de conjunto de datos no predeterminados y la nueva agrupación se crea en el mismo sistema, tendrá que usar la opción de zpool split -R para identificar un directorio raíz alternativo para la nueva, a fin de evitar conflictos entre puntos de montaje. Por ejemplo:
# zpool split -R /tank2 tank tank2 |
Si no utiliza la opción de zpool split -R y observa que hay conflictos entre puntos de montaje al intentar importar la nueva agrupación, impórtela utilizando la opción -R. Si la nueva agrupación se crea en un sistema distinto, no debería ser preciso especificar un directorio raíz alternativo a menos que haya conflictos de puntos de montaje.
Tenga en cuenta lo siguiente antes de utilizar la función zpool split:
Esta función no está disponible para una configuración RAIDZ o una agrupación no redundante de varios discos.
Antes de intentar una operación zpool split, no debería haber activas operaciones de aplicación ni datos.
Es importante tener discos que respondan al comando de vaciado de caché de escritura del disco, en lugar de pasarlo por alto.
Una agrupación no se puede dividir si la actualización de duplicación está en curso.
La división de una agrupación reflejada es óptima cuando se compone de dos o tres discos y el último es la agrupación original utilizada para crear la nueva. Luego puede usar el comando zpool attach para volver a crear la agrupación de almacenamiento original reflejada o convertir la agrupación recién creada en agrupación de almacenamiento reflejada. De momento no existe la posibilidad de usar esta función para crear una agrupación reflejada nueva a partir de una agrupación reflejada existente.
Si la agrupación ya existente es un reflejo de tres vías, la nueva agrupación contendrá un disco después de la operación de división. Si la agrupación ya existente es un reflejo de dos vías de dos discos, el resultado son dos agrupaciones no redundantes de dos discos. Tendrá que vincular dos discos adicionales con el fin de convertir las agrupaciones no redundantes en agrupaciones reflejadas.
Una buena forma de mantener los datos redundantes durante una operación de división consiste en dividir una agrupación de almacenamiento reflejada compuesta de tres discos de forma que la agrupación original se componga de dos discos reflejados después de la operación de división.
En el ejemplo siguiente se divide una agrupación de almacenamiento reflejada denominada trinity, con tres discos, c1t0d0, c1t2d0 y c1t3d0. Las dos agrupaciones resultantes son la agrupación reflejada trinity, con los discos c1t0d0 y c1t2d0, y la nueva agrupación denominada neo, con el disco c1t3d0. Cada agrupación tiene el mismo contenido.
# zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors # zpool split trinity neo # zpool import neo # zpool status trinity neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors |
ZFS permite que los dispositivos individuales queden sin conexión o con conexión. Cuando el hardware no es fiable o no funciona adecuadamente, ZFS continúa con la lectura o la escritura de datos en el dispositivo, suponiendo que la condición es sólo temporal. Si no es temporal, es posible indicar a ZFS que termine la conexión del dispositivo para que éste se pase por alto. ZFS no envía solicitudes a un dispositivo sin conexión.
Para sustituir dispositivos no es necesario desconectarlos.
Para desconectar temporalmente el almacenamiento puede utilizar el comando zpool offline. Por ejemplo, si tiene que desconectar físicamente una matriz de un conjunto de conmutadores de canal de fibra y conectar la matriz a otro conjunto, puede terminar la conexión de LUN desde la matriz utilizada en las agrupaciones de almacenamiento de ZFS. Con la matriz conectada de nuevo y en funcionamiento en el nuevo conjunto de conmutadores, puede volver a conectar las mismas LUN. Los datos agregados a las agrupaciones de almacenamiento mientras las LUN estaban sin conexión se actualizarán en las LUN una vez restablecida la conexión.
Esta situación es posible siempre y cuando los sistemas en cuestión detecten el almacenamiento después de conectarlo a los nuevos conmutadores, posiblemente a través de distintos controladores, y las agrupaciones se establecen como configuraciones reflejadas o de RAID-Z.
Puede terminar la conexión de un dispositivo mediante el comando zpool offline. El dispositivo se puede especificar mediante la ruta o un nombre abreviado, si el dispositivo es un disco. Por ejemplo:
# zpool offline tank c1t0d0 bringing device c1t0d0 offline |
Tenga en cuenta los puntos siguientes al desconectar un dispositivo:
Una agrupación no se puede desconectar si genera errores. Por ejemplo, no puede desconectar dos dispositivos de una configuración raidz1, ni tampoco puede desconectar un dispositivo virtual de nivel superior.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas |
De modo predeterminado, el estado OFFLINE es persistente. El dispositivo permanece sin conexión cuando el sistema se reinicia.
Para desconectar temporalmente un dispositivo, utilice la opción zpool offline -t. Por ejemplo:
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline |
Cuando el sistema se reinicia, este dispositivo vuelve automáticamente al estado ONLINE.
Si un dispositivo se queda sin conexión, no se desconecta de la agrupación de almacenamiento. Si intenta utilizar el dispositivo sin conexión en otra agrupación, incluso después de que la agrupación original se haya destruido, aparece en pantalla un mensaje similar al siguiente:
device is part of exported or potentially active ZFS pool. Please see zpool(1M) |
Si desea utilizar el dispositivo sin conexión en otra agrupación de almacenamiento después de destruir la agrupación de almacenamiento original, conecte el dispositivo y destruya la agrupación de almacenamiento original.
Otra forma de utilizar un dispositivo de otra agrupación de almacenamiento a la vez que se mantiene la agrupación de almacenamiento original consiste en sustituir el dispositivo de la agrupación de almacenamiento original por otro equivalente. Para obtener información sobre la sustitución de dispositivos, consulte Sustitución de dispositivos en una agrupación de almacenamiento.
Los dispositivos sin conexión aparecen con el estado OFFLINE al consultar el estado de la agrupación. Para obtener información sobre cómo saber el estado de la agrupación, consulte Consulta del estado de una agrupación de almacenamiento de ZFS.
Para obtener más información sobre la situación del dispositivo, consulte Cómo determinar el estado de las agrupaciones de almacenamiento de ZFS.
Si se anula la conexión de un dispositivo, se puede restablecer mediante el comando zpool online. Por ejemplo:
# zpool online tank c1t0d0 bringing device c1t0d0 online |
Si se conecta un dispositivo, los datos escritos en la agrupación se vuelven a sincronizar con el dispositivo que acaba de quedar disponible. Para sustituir un disco no se puede utilizar un dispositivo con conexión. Si desconecta un dispositivo, reemplaza el dispositivo e intenta conectarlo, queda en estado de error.
Si intenta conectar un dispositivo defectuoso, aparece un mensaje similar al siguiente:
# zpool online tank c1t0d0 warning: device 'c1t0d0' onlined, but remains in faulted state use 'zpool replace' to replace devices that are no longer present |
También puede que vea el mensaje de disco defectuoso en la consola o escrito en el archivo /var/adm/messages. Por ejemplo:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Para obtener más información sobre cómo reemplazar un dispositivo defectuoso, consulte Resolución de un dispositivo que no se encuentra.
Puede utilizar el comando zpool online -e para expandir una LUN. De manera predeterminada, una LUN que se agrega a una agrupación no se expande a su tamaño máximo a menos que esté activada la propiedad de agrupación autoexpand. Puede ampliar la LUN automáticamente por medio del comando zpool online -e con la LUN tanto conectada como sin conexión. Por ejemplo:
# zpool online -e tank c1t13d0 |
Si un dispositivo pierde la conexión por un fallo que hace que los errores aparezcan en la salida de zpool status, los recuentos de errores se pueden borrar con el comando zpool clear.
Si se especifica sin argumentos, este comando borra todos los errores de dispositivo de la agrupación. Por ejemplo:
# zpool clear tank |
Si se especifican uno o más dispositivos, este comando sólo borra errores asociados con los dispositivos especificados. Por ejemplo:
# zpool clear tank c1t0d0 |
Para obtener más información sobre cómo borrar errores de zpool, consulte Supresión de errores transitorios.
Puede reemplazar un dispositivo en una agrupación de almacenamiento mediante el comando zpool replace.
Si se reemplaza físicamente un dispositivo por otro en la misma ubicación de una agrupación redundante, puede que sólo haga falta identificar el dispositivo sustituido. ZFS reconoce que el dispositivo es un disco diferente en la misma ubicación de cierto hardware. Por ejemplo, para reemplazar un disco defectuoso (c1t1d0) quitándolo y colocándolo en la misma ubicación, emplee la siguiente sintaxis:
# zpool replace tank c1t1d0 |
Si va a reemplazar un dispositivo de una agrupación de almacenamiento con un disco en otra ubicación física, tendrá que especificar ambos dispositivos. Por ejemplo:
# zpool replace tank c1t1d0 c1t2d0 |
Si desea reemplazar un disco en la agrupación de almacenamiento de ZFS, consulte Cómo sustituir un disco en la agrupación raíz ZFS.
A continuación se detalla el procedimiento básico para sustituir un disco:
Si es preciso, desconecte el dispositivo con el comando zpool offline.
Retire el disco que se debe reemplazar.
Inserte el disco nuevo.
Ejecute el comando zpool replace. Por ejemplo:
# zpool replace tank c1t1d0 |
Conecte el disco mediante el comando zpool online.
En sistemas como Sun Fire x4500, antes de desconectar un disco se debe desconfigurar. Si va a reemplazar un disco en la misma posición de ranura en este sistema, puede ejecutar el comando zpool replace del modo descrito en el primer ejemplo de esta sección.
Para ver un ejemplo de sustitución de un disco en un sistema Sun Fire X4500, consulte el Ejemplo 11–1.
Tenga en cuenta lo siguiente al sustituir dispositivos en una agrupación de almacenamiento de ZFS:
Si la propiedad de agrupación autoreplace se configura como habilitada (on), se aplicará formato y sustitución a cualquier dispositivo que se encuentre en la misma ubicación física que un dispositivo previamente perteneciente a la ubicación. No es necesario que utilice el comando zpool replace cuando esta propiedad está habilitada. Es posible que no todos los tipos de hardware dispongan de esta función.
El tamaño del dispositivo de sustitución debe ser igual o mayor que el disco más pequeño en una configuración de RAID-Z o reflejada.
Cuando se agrega a una agrupación un dispositivo de sustitución mayor que el dispositivo al que va a sustituir, no se amplía automáticamente a su tamaño máximo. El valor de la propiedad autoexpand determina si una LUN de sustitución se amplía a su tamaño máximo cuando el disco se agrega a la agrupación. De manera predeterminada, la propiedad autoexpand está habilitada. Se puede habilitar esta propiedad para ampliar el tamaño de LUN antes o después de agregar a la agrupación la LUN mayor.
En el ejemplo siguiente, se sustituyen dos discos de 16 GB de una agrupación reflejado por dos discos de 72 GB. La propiedad autoexpand está habilitada tras las sustituciones de disco para ampliar el tamaño de LUN.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE - |
La sustitución de muchos discos en una agrupación de gran tamaño tarda mucho en realizarse debido al proceso de actualizar la duplicación de los datos en los discos nuevos. Además, es recomendable ejecutar el comando zpool scrub entre sustituciones de discos, para asegurarse de que los dispositivos de sustitución estén operativos y que los datos se escriban correctamente.
Si se ha sustituido automáticamente un disco fallido con un repuesto en marcha, es posible que sea necesario desconectar el repuesto después de sustituir el disco fallido. Para obtener información sobre cómo desconectar un repuesto en marcha, consulte Activación y desactivación de repuestos en marcha en la agrupación de almacenamiento.
Para obtener más información sobre cómo reemplazar dispositivos, consulte Resolución de un dispositivo que no se encuentra y Sustitución o reparación de un dispositivo dañado.
La función de repuesto en marcha permite identificar discos que se podrían utilizar para sustituir un dispositivo defectuoso o en estado "faulted" en una o más agrupaciones de almacenamiento. Si un dispositivo se designa como repuesto en marcha, significa que no es un dispositivo activo en una agrupación. Ahora bien, si un dispositivo activo falla, el repuesto en marcha sustituye automáticamente al defectuoso.
Los dispositivos se pueden designar como repuestos en marcha de los modos siguientes:
Cuando se crea la agrupación con el comando zpool create.
Después de crear la agrupación con el comando zpool add.
Los dispositivos de repuestos en marcha se pueden compartir entre varias agrupaciones, pero no si las agrupaciones están en distintos sistemas.
El ejemplo siguiente muestra cómo designar dispositivos como repuestos en marcha cuando se crea la agrupación:
# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0 # zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t2d0 AVAIL c2t2d0 AVAIL errors: No known data errors |
El ejemplo siguiente muestra cómo designar repuestos en marcha agregándolos a una agrupación después de crearla:
# zpool add neo spare c5t3d0 c6t3d0 # zpool status neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0 spares c5t3d0 AVAIL c6t3d0 AVAIL errors: No known data errors |
Los repuestos en marcha se pueden suprimir de una agrupación de almacenamiento mediante el comando zpool remove. Por ejemplo:
# zpool remove zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t3d0 AVAIL errors: No known data errors |
No se puede suprimir un repuesto en marcha si se está utilizando en una agrupación de almacenamiento.
Tenga en cuenta lo siguiente al utilizar repuestos en marcha de ZFS:
Actualmente, el comando zpool remove sólo es apto para eliminar repuestos en marcha, dispositivos caché y dispositivos de registro.
Para agregar un disco como repuesto en marcha, el repuesto en marcha debe ser igual o mayor que el disco más grande de la agrupación. Se puede agregar un disco de repuesto de tamaño inferior. Ahora bien, al activar ese disco de repuesto de tamaño inferior, de forma automática o con el comando zpool replace, la operación falla y genera un mensaje de error parecido al siguiente:
cannot replace disk3 with disk4: device is too small |
Los repuestos en marcha se activan de los modos siguientes:
Sustitución manual: sustituya un dispositivo incorrecto en una agrupación de almacenamiento con un repuesto en marcha mediante el comando zpool replace.
Sustitución automática: cuando se detecta un error, un agente FMA examina la agrupación para ver si dispone de repuestos en marcha. Si es así, sustituye el dispositivo con errores por un repuesto en marcha.
Si falla un repuesto en marcha que está en uso, el agente FMA quita el repuesto y cancela la sustitución. El agente intenta sustituir el dispositivo por otro repuesto en marcha, si lo hay. Esta función está limitada por el hecho de que el motor de diagnóstico ZFS sólo emite errores cuando un dispositivo desaparece del sistema.
Si sustituye físicamente un dispositivo defectuoso con un repuesto activo, puede reactivar el original, pero debe desactivar el dispositivo reemplazado mediante el comando zpool detach para desconectar el repuesto. Si configura la propiedad de agrupación autoreplace como habilitada (on), el repuesto se desconecta automáticamente y vuelve a la agrupación de repuestos cuando se inserta el dispositivo nuevo y se completa la operación de conexión.
Puede sustituir manualmente un dispositivo con un repuesto en marcha mediante el comando zpool replace. Consulte el Ejemplo 4–8.
Un dispositivo con errores se sustituye automáticamente si hay un repuesto en marcha. Por ejemplo:
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 88.5K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors |
Actualmente se puede desactivar un repuesto en marcha de las siguientes maneras:
Eliminando el repuesto de la agrupación de almacenamiento.
Desconectando el repuesto después de la sustitución de un disco fallido. Consulte el Ejemplo 4–9.
Cambiando el repuesto de forma temporal o permanente. Consulte el Ejemplo 4–10.
En este ejemplo, el comando zpool replace se utiliza para sustituir el disco c2t1d0 con el repuesto en marcha c2t3d0.
# zpool replace zeepool c2t1d0 c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors |
A continuación, quite el disco c2t1d0.
# zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered errors: No known data errors |
En este ejemplo, el disco averiado (c2t1d0) se sustituye físicamente y ZFS recibe una notificación mediante el comando zpool replace.
# zpool replace zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered c2t1d0 ONLINE 0 0 0 spares c2t3d0 INUSE currently in use errors: No known data errors |
A continuación se puede utilizar el comando zpool detach para volver a dejar el repuesto en marcha en la agrupación de repuestos. Por ejemplo:
# zpool detach zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c2t3d0 AVAIL errors: No known data errors |
Si desea sustituir un disco fallido mediante un intercambio temporal o permanente del repuesto en marcha que lo está sustituyendo, desconecte el disco original (fallido). Si se sustituye el disco fallido en algún momento, se podrá agregar a la agrupación de almacenamiento como repuesto. Por ejemplo:
# zpool status zeepool pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t3d0 INUSE currently in use errors: No known data errors # zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered errors: No known data errors (Original failed disk c2t1d0 is physically replaced) # zpool add zeepool spare c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t1d0 AVAIL errors: No known data errors |