Las siguientes secciones describen cómo realizar las siguientes tareas:
Cómo volver a crear una agrupación raíz ZFS y restaurar instantáneas de agrupaciones raíz
Cómo deshacer instantáneas de agrupaciones raíz a partir de un inicio a prueba de fallos
Es posible que necesite sustituir un disco en la agrupación raíz, por los siguientes motivos:
La agrupación raíz es demasiado pequeña y desea sustituir un disco pequeño por uno mayor.
Un disco de la agrupación raíz no funciona correctamente. En una agrupación no redundante, si el disco falla y el sistema no se inicia, deberá iniciar desde un medio alternativo, como un CD o la red, antes de sustituir el disco de la agrupación raíz.
En una configuración de agrupación raíz reflejada, puede intentar una sustitución de discos sin iniciar desde un soporte alternativo. Puede sustituir un disco averiado mediante el comando zpool replace. O, si tiene un disco adicional, puede utilizar el comando zpool attach. Consulte el procedimiento de esta sección para ver un ejemplo de cómo conectar un disco adicional y la desconexión de un disco de agrupación raíz.
Algunos dispositivos de hardware requieren que se desconecte un disco y se desconfigure antes de intentar la operación zpool replace para sustituir un disco averiado. Por ejemplo:
# zpool offline rpool c1t0d0s0 # cfgadm -c unconfigure c1::dsk/c1t0d0 <Physically remove failed disk c1t0d0> <Physically insert replacement disk c1t0d0> # cfgadm -c configure c1::dsk/c1t0d0 # zpool replace rpool c1t0d0s0 # zpool online rpool c1t0d0s0 # zpool status rpool <Let disk resilver before installing the boot blocks> SPARC# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t0d0s0 x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0 |
En algunos dispositivos de hardware, no es necesario que el disco de sustitución esté conectado ni reconfigurarlo después de insertarlo.
Debe identificar los nombres de ruta del dispositivo de inicio de los discos nuevo y actual para poder probar el inicio desde el disco de sustitución y también iniciar manualmente desde el disco existente, si el disco de sustitución falla. En el ejemplo que aparece en el siguiente procedimiento, el nombre de la ruta del disco de agrupación raíz actual es (c1t10d0s0):
/pci@8,700000/pci@3/scsi@5/sd@a,0 |
El nombre de ruta del disco de inicio de sustitución es (c1t9d0s0):
/pci@8,700000/pci@3/scsi@5/sd@9,0 |
Conecte físicamente el disco de sustitución (o nuevo).
Confirme que el disco nuevo tiene una etiqueta SMI y un segmento 0.
Para obtener información sobre el reetiquetado de un disco que está diseñado para la agrupación raíz, consulte el sitio siguiente:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
Conecte el nuevo disco a la agrupación raíz.
Por ejemplo:
# zpool attach rpool c1t10d0s0 c1t9d0s0 |
Confirme el estado de la agrupación raíz.
Por ejemplo:
# zpool status rpool pool: rpool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress, 25.47% done, 0h4m to go config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t10d0s0 ONLINE 0 0 0 c1t9d0s0 ONLINE 0 0 0 errors: No known data errors |
Cuando se haya completado la creación, aplique los bloques de inicio al nuevo disco.
Utilizando una sintaxis similar a la siguiente:
SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t9d0s0 |
x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0 |
Compruebe que puede iniciar desde el nuevo disco.
Por ejemplo, en un sistema basado en SPARC, deberá usar una sintaxis similar a la siguiente:
ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0 |
Si el sistema se inicia desde el nuevo disco, desconecte el disco antiguo.
Por ejemplo:
# zpool detach rpool c1t10d0s0 |
Configure el sistema para que se inicie automáticamente desde el nuevo disco, ya sea mediante el comando eeprom, el comando setenv desde la PROM de inicio de SPARC, o bien vuelva a configurar el BIOS del equipo.
Puede crear instantáneas de la agrupación raíz para las recuperaciones. La forma más recomendable de crear instantáneas de agrupaciones raíz es realizar una instantánea recursiva de la agrupación raíz.
El procedimiento siguiente crea una instantánea de agrupación raíz recursiva y almacena la instantánea como un archivo en una agrupación en un sistema remoto. Si una agrupación raíz falla, el conjunto de datos remoto se puede montar mediante NFS y el archivo de instantánea se puede recibir en la agrupación que se ha vuelto a crear. O bien puede almacenar instantáneas de agrupaciones raíz como las instantáneas reales en una agrupación de un sistema remoto. Enviar y recibir las instantáneas desde un sistema remoto es un poco más complicado porque se debe configurar ssh o utilizar rsh mientras el sistema que hay que reparar se inicia desde la miniraíz del sistema operativo Solaris.
Para obtener información sobre el almacenamiento y la recuperación de forma remota de instantáneas de agrupación raíz, así como la información más actualizada sobre la recuperación de agrupaciones raíz, vaya a este sitio:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
La validación de instantáneas almacenadas remotamente como archivos o instantáneas es un paso importante en la recuperación de una agrupación raíz. Con cualquiera de estos métodos, las instantáneas se deben volver a crear de forma rutinaria, como, por ejemplo, cuando la configuración de la agrupación cambia o cuando se actualiza el sistema operativo Solaris.
En el procedimiento siguiente, el sistema se inicia desde el entorno de inicio zfsBE.
Cree una agrupación y un sistema de archivos en un sistema remoto para almacenar las instantáneas.
Por ejemplo:
remote# zfs create rpool/snaps |
Comparta el sistema de archivos con el sistema local.
Por ejemplo:
remote# zfs set sharenfs='rw=local-system,root=local-system' rpool/snaps # share -@rpool/snaps /rpool/snaps sec=sys,rw=local-system,root=local-system "" |
Cree una instantánea recursiva de la agrupación raíz.
local# zfs snapshot -r rpool@0804 local# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G / rpool/ROOT/zfsBE@0804 386K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Envíe las instantáneas de la agrupación raíz al sistema remoto.
Por ejemplo:
local# zfs send -Rv rpool@0804 > /net/remote-system/rpool/snaps/rpool.0804 sending from @ to rpool@0804 sending from @ to rpool/swap@0804 sending from @ to rpool/ROOT@0804 sending from @ to rpool/ROOT/zfsBE@0804 sending from @ to rpool/dump@0804 |
En este procedimiento, suponga las siguientes condiciones:
La agrupación raíz ZFS no se puede recuperar.
Las instantáneas de las agrupaciones raíz ZFS se almacenan en un sistema remoto y se comparten a través de NFS.
Todos los pasos se llevan a cabo en el sistema local.
Efectúe el inicio desde el CD/DVD o desde la red.
SPARC: seleccione uno de los siguientes métodos de inicio:
ok boot net -s ok boot cdrom -s |
Si no utiliza la opción -s, deberá salir del programa de instalación.
x86: seleccione la opción para iniciar desde el DVD o desde la red. A continuación, salga del programa de instalación.
Monte el conjunto de datos remoto de instantáneas.
Por ejemplo:
# mount -F nfs remote-system:/rpool/snaps /mnt |
Si los servicios de red no están configurados, es posible que deba especificar la dirección IP del sistema remoto.
Si se reemplaza el disco de la agrupación raíz y no contiene una etiqueta de disco que sea utilizable por ZFS, deberá etiquetar de nuevo el disco.
Para obtener más información sobre cómo volver a etiquetar el disco, consulte el sitio siguiente:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
Vuelva a crear la agrupación raíz.
Por ejemplo:
# zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /etc/zfs/zpool.cache rpool c1t1d0s0 |
Restaure las instantáneas de agrupaciones raíz.
Este paso puede tardar algo. Por ejemplo:
# cat /mnt/rpool.0804 | zfs receive -Fdu rpool |
El uso de la opción -u significa que el archivo de almacenamiento restaurado no está montado cuando se completa la operación zfs receive.
Compruebe que los conjuntos de datos de agrupaciones raíz se hayan restaurado.
Por ejemplo:
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /a/rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /legacy rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G /a rpool/ROOT/zfsBE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Defina la propiedad bootfs en el entorno de inicio de la agrupación raíz.
Por ejemplo:
# zpool set bootfs=rpool/ROOT/zfsBE rpool |
Instale los bloques de inicio en el nuevo disco.
SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t1d0s0 |
x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0 |
Reinicie el sistema.
# init 6 |
Este procedimiento da por hecho que las instantáneas de agrupaciones raíz existentes están disponibles. En el ejemplo, están disponibles en el sistema local.
# zfs snapshot -r rpool@0804 # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G / rpool/ROOT/zfsBE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Apague el sistema e inicie en modo de inicio a prueba de fallos.
ok boot -F failsafe ROOT/zfsBE was found on rpool. Do you wish to have it mounted read-write on /a? [y,n,?] y mounting rpool on /a Starting shell. |
Deshaga cada instantánea de agrupación raíz.
# zfs rollback rpool@0804 # zfs rollback rpool/ROOT@0804 # zfs rollback rpool/ROOT/zfsBE@0804 |
Vuelva a iniciar en modo multiusuario.
# init 6 |