Después de mucho retoques y experimentación, he encontrado una solución, aunque con una compensación bastante grande.
En primer lugar, las opciones que tuve que descartar:
Tener un segundo servidor ZFS externo con un grupo reflejado no era una opción debido al costo. Si hubiera sido una opción, este hubiera sido el mejor enfoque, utilizando ZFS enviar / recibir para enviar instantáneas al grupo remoto.
Tener un segundo grupo reflejado de ZFS en el sitio, del cual podría eliminar discos para llevar a casa. Esto es más factible que la primera opción, pero necesitaría que el segundo grupo siempre tenga dos discos en el sitio (o usar dos copias de datos en un solo disco en el sitio). Actualmente tengo cuatro discos y no hay más espacio para un quinto en el servidor. Este sería un enfoque justo pero aún no ideal.
Usando ZFS adjuntar y desconectar para girar el disco de copia de seguridad dentro y fuera del grupo reflejado. Esto funciona bien, pero tiene que realizar una recuperación completa cada vez que se agrega el disco. Esto lleva inaceptablemente largo, por lo que no podía confiar en esto.
Mi solución es similar a usar attach
y detach
, sin embargo, usa online
y offline
. Esto tiene la ventaja de realizar una recuperación delta frente a una recuperación completa, pero el inconveniente de que la agrupación siempre informa un DEGRADED
estado (la agrupación siempre tiene dos discos; los discos rotativos externos se marcan offline
cuando están en almacenamiento remoto y recuperación y luego se conectan cuando están en el sitio).
Entonces, un resumen rápido y una descripción general de mi configuración:
Tengo un servidor ZFS y cuatro discos idénticos. ZFS está configurado para usar un grupo reflejado. Dos de los cuatro discos son miembros permanentes de este grupo. Los otros dos discos giran; uno está siempre en almacenamiento externo, el otro es parte del grupo para actuar como una copia de seguridad lista para usar.
Cuando llegue el momento de rotar las copias de seguridad:
Espero zfs scrub
a que se complete para asegurar razonablemente que el disco de copia de seguridad esté libre de errores
Yo zfs offline
el disco que se llevará a distancia. Después de que está fuera de línea, lo hice hdparm -Y /dev/id
girar. Después de un minuto, remuevo parcialmente el trineo del disco (lo suficiente como para asegurar que pierda energía) y luego le doy otro minuto antes de tirar completamente de la unidad para garantizar que ha dejado de girar. El disco va en una bolsa estática y luego en un estuche protector y sale del sitio.
Traigo el otro disco externo. Se instala en la bandeja de hotswap y gira. Utilizo zfs online
para restaurar el disco en el grupo y poner en marcha una recuperación parcial para que sea concurrente.
Este sistema garantiza que en cualquier momento tenga dos ONLINE
discos espejo y un OFFLINE
disco remoto (que ha sido borrado). El cuarto disco se está recuperando o está en línea, lo que tiene la ventaja de que, en caso de que falle una unidad en funcionamiento, es probable que el grupo siga siendo consistente con dos discos en línea.
Ha funcionado bien durante las últimas dos semanas, pero todavía lo consideraría un enfoque hack. Haré un seguimiento si me encuentro con algún problema importante.
Actualización: después de ejecutar esto durante un par de meses, descubrí que en mi uso en el mundo real, la recuperación está tomando el mismo tiempo para desconectar / adjuntar y desconectar / en línea. En mis pruebas, no creo que estuviese ejecutando un exfoliante; mi presentimiento es que si una unidad está fuera de línea para un exfoliante, entonces requiere un resiliente completo.