Tengo un grupo reflejado ZFS con cuatro unidades totales. Dos de las unidades están destinadas a ser utilizadas para realizar copias de seguridad fuera del sitio. Mi expectativa era que después de la recuperación inicial podría detachy luego attachun disco y hacer que solo haga una recuperación incremental; sin embargo, en las pruebas parece realizar una recuperación completa independientemente de si el disco que se está conectando ya contiene casi todo el grupo contenido.
¿Usar un enfoque offline/ onlineme daría el resultado deseado de solo actualizar el disco, en lugar de reconstruirlo por completo? ¿O para que este trabajo funcione como se espera, tendré que hacer algo completamente diferente, como usar cada disco de respaldo como un grupo de 1 disco e sendincorporarle las instantáneas más nuevas cada vez que sea necesario actualizarlo?

zfs sendcomando para tomar secuencias de copia de seguridad completas o incrementales guardadas en los discos de copia de seguridad, o usezfs recvpara crear un disco duplicado. Recomiendo encarecidamente utilizar algún tipo de software para administrar este proceso.Respuestas:
No siga el camino de romper la matriz ZFS para "rotar" los discos fuera del sitio. Como ha visto, el tiempo de reconstrucción es alto y el proceso de recuperación leerá / verificará el tamaño utilizado del conjunto de datos.
Si tiene la capacidad, las instantáneas y el envío de datos a un sistema remoto es un enfoque limpio y no intrusivo. Supongo que podría pasar por el proceso de tener un grupo de un solo disco dedicado, copiarlo y exportar / importar zpool ... pero no es muy elegante.
fuente
Después de más experimentación, he encontrado una solución justa, sin embargo, viene con una importante compensación. Los discos que se han
offlinedesconectado pero no se pueden desconectar más tarde se pueden volver a poner en línea con solo una operación de recuperación incremental (" Cuando un dispositivo se pone en línea, los datos que se han escrito en el grupo se vuelven a sincronizar con el nuevo dispositivo disponible "). En mis pruebas, esto reduce el tiempo de recuperación para un espejo de 3 discos de 28 horas a poco más de 30 minutos, con aproximadamente 40 GB de datos delta.La compensación es que cualquier grupo con un disco fuera de línea se marcará como degradado. Siempre que haya al menos dos discos en línea (en un grupo reflejado), esto es efectivamente una advertencia: la integridad y la redundancia permanecen intactas.
Como otros mencionaron, este enfoque general dista mucho de ser ideal: enviar instantáneas a un grupo remoto sería mucho más adecuado, pero en mi caso no es factible.
Para resumir, si necesita eliminar un disco de un grupo y luego agregarlo nuevamente sin requerir una recuperación completa, entonces el enfoque que recomendaría es:
zpool offline pool diskhdparm -Y /dev/thediskzpool online pool diskY, dado que esto aún no se ha probado, existe el riesgo de que la operación de recuperación delta no sea precisa. El grupo "en vivo" y / o los discos sin conexión pueden experimentar problemas. Actualizaré si eso me sucede, pero por ahora experimentaré con este enfoque.
fuente
Actualización el 15 de octubre de 2015: hoy descubrí el
zpool splitcomando, que divide un nuevo grupo (con un nuevo nombre) fuera de un grupo existente.splites mucho más limpio queofflineydetach, ya que ambos grupos pueden existir (y eliminarse por separado) en el mismo sistema. El nuevo grupo también se puede limpiar (y correctamente)export[ed]antes de desconectarse del sistema.(Mi publicación original sigue a continuación).
¡Advertencia! Varios comentarios en esta página implican que es (o podría ser) posible a
zpool detachuna unidad, y luego de alguna manera vuelva a conectar la unidad y acceder a los datos que contiene.Sin embargo, de acuerdo con este hilo (y mi propia experimentación)
zpool detachelimina la "información del grupo" de la unidad separada. En otras palabras, adetaches como un reformateo rápido de la unidad . Despuésdetachde que aún haya muchos datos en la unidad, será prácticamente imposible volver a montar la unidad y ver los datos como un sistema de archivos utilizable.En consecuencia, me parece que
detaches más destructivo quedestroy, ya que creo quezpool importpuede recuperar las piscinas destruidas.A no
detaches a , ni a , ni a .umountzpool exportzpool offlineEn mi experimentación, si primero tengo
zpool offlineun dispositivo y luegozpool detachel mismo dispositivo, el resto del grupo olvida que el dispositivo existió alguna vez. Sin embargo, debido a que el dispositivo en sí estabaoffline[d]antes de lo que estabadetach[ed], nunca se notifica al dispositivodetach. Por lo tanto, el dispositivo en sí todavía tiene la información de su grupo y se puede mover a otro sistema y luegoimport[ed](en un estado degradado).Para mayor protección contra
detachusted, incluso puede desconectar físicamente el dispositivo después delofflinecomando, pero antes de emitir eldetachcomando.Espero usar esto
offline, luegodetach, luegoimportprocesar para hacer una copia de seguridad de mi grupo. Al igual que el póster original, planeo usar cuatro unidades, dos en un espejo constante y dos para copias de seguridad mensuales, rotativas, fuera del sitio (y fuera de línea). Verificaré cada copia de seguridad importándola y limpiándola en un sistema separado, antes de transportarla fuera del sitio. A diferencia del póster original, no me importa reescribir la unidad de copia de seguridad completa cada mes. De hecho, prefiero reescrituras completas para tener bits nuevos.fuente
En la misma máquina, ¿ha intentado crear un nuevo grupo con las 2 unidades en un espejo? A continuación, cree una instantánea en su grupo de trabajo y luego envíe esa instantánea al nuevo grupo, repita, luego el siguiente envío de instantánea será incremental. Esto no es lo mismo con "enviar datos a un sistema remoto" ya que se trata de un grupo dentro del mismo sistema / servidor / máquina. Con esta configuración, aún puede aplicar zpool split / offline / detach / attach pero solo lo hace en el segundo grupo (copia) y no en el grupo fuente.
fuente