Mover un sistema de archivos ZFS de un grupo a otro

18

Estoy extendiendo un servidor Solaris 10 U8 con una agrupación de almacenamiento adicional además de la agrupación raíz.

¿Cuál es la forma más efectiva / simple / confiable de mover sistemas de archivos ZFS particulares de rpool a este nuevo grupo de almacenamiento?

¿Se puede hacer en línea o debo cerrar los servicios usando estos grupos primero?

Asgeir S. Nilsen
fuente

Respuestas:

15

La pregunta sobre la desactivación de servicios depende esencialmente de los servicios mismos:

  • ¿Están escribiendo activamente en el sistema de archivos que planea mover?
  • ¿Están almacenando datos persistentes que desea conservar?

En cualquier caso, enviar un sistema de archivos ZFS puede llevar mucho tiempo. Es posible minimizar la falta de disponibilidad del servicio manteniéndolos en línea la mayor parte del tiempo de esa manera:

  • crear una instantánea
  • envíe esa instantánea de la manera sugerida anteriormente pero manteniendo activos todos los servicios
  • cuando el fs se recibe en el otro grupo, deshabilite los límites de servicios críticos para ese sistema de archivos. Asegúrese de que el nuevo sistema de archivos en el grupo de destino no esté modificado, ya que los cambios se descartarán más adelante de todos modos.
  • crear una segunda instantánea (por ejemplo, instantánea2)
  • envíe esa segunda instantánea de forma incremental, eso será mucho más rápido que la transferencia anterior. p.ej:

    zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs recibir -F destinopool / sistema de archivos

  • cuando termine, mueva el punto de montaje del sistema de archivos del conjunto de datos antiguo al nuevo. p.ej:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / application / directorio de destino / sistema de archivos

Debe asegurarse de que ningún proceso esté vinculado /application/filesystem(por ejemplo, acceder a los archivos o tenerlo como su directorio actual) para lograrlo.

  • Vuelva a habilitar los servicios y ya está.
jlliagre
fuente
10

No creo que esto se pueda realizar en línea, pero mi proceso sería cerrar los servicios necesarios, tomar una instantánea y usar zfs enviar / recibir para realizar la migración. Algo como:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Editar:

Si instala el comando "pipe view" (pv), puede monitorear el estado de la transferencia con:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem
ewwhite
fuente
10

Repito mucho de lo que dijo jlliagre, pero con adiciones para sistemas de archivos descendientes. (Principalmente, así que tengo una referencia cuando me olvido).

Si tiene sistemas de archivos secundarios, querrá usar el -rindicador en el comando de instantánea zfs y el indicador -ro -Ren el zfs sendcomando. La mayúscula -Rmueve todas las propiedades , instantáneas y clones.

Para mover un grupo completo:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

luego, para sincronizar los cambios durante un período de migración más corto, cierre las aplicaciones, apague samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Si está creando múltiples instantáneas intermedias para la migración, lea la página del manual sobre el zfs send -Iconmutador.

Dan Buhler
fuente
3
En mis experimentos, el comando exacto parecía ser: zfs send -R Pool0 @ moving | zfs recibir -dF Pool1
TinkerTank
4

También encontrará algún beneficio al usar una herramienta como "mbuffer" en la tubería; aparentemente, el rendimiento de envío / recepción de ZFS mejora drásticamente si ambos extremos pueden transmitir datos de manera continua, y sin mbuffer (o algo similar) se obtiene un efecto ping-pong donde uno bloquea continuamente en el otro.

Adam Thompson
fuente
Tenga en cuenta que esta es una pregunta muy antigua (más de 5 años) y es poco probable que su respuesta agregue algo a una pregunta tan antigua.
Catherine MacInnes
1
Este es un gran consejo y también lo uso para movimientos de grupo.
Dan Buhler