GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo 'reequilibrar' los datos en zfs? (Asegúrese de que los datos se distribuyen entre todos los espejos rayados)

Solo los datos recién escritos (adjuntos) se dividen entre todos los vdevs actualmente activos, no hay una operación de reequilibrio explícita en ZFS.

Dos posibles soluciones:

  1. Espere hasta que todos los datos antiguos se vuelvan a escribir (debido a CoW, esto puede llevar mucho tiempo, en el peor de los casos, el doble del tiempo que llevaría escribir el disco por completo).
  2. Elimine todos los datos y escríbalos de nuevo (zfs send/recv es útil para sacar todos los datos del grupo y recuperarlos sin perder nada). Esto no tiene que hacerse todo de una vez, y se puede hacer en el mismo grupo.

Para ser más precisos, elegiría la segunda solución y transferiría cada sistema de archivos por separado en los momentos en que la carga del sistema sea baja (por ejemplo, por la noche):

  • Tomar una instantánea (zfs snapshot -r ) de un sistema de archivos de tamaño decente (y sistemas de archivos descendientes, recursivamente)
  • Usar zfs send | zfs recv con las opciones adecuadas para enviar la instantánea a un sistema de archivos temporal recién creado (puede estar en el mismo grupo si el espacio lo permite); este sistema de archivos debe estar en la misma ubicación en la jerarquía que el anterior
  • Después de realizar la copia (puede llevar algo de tiempo, porque los discos tienen que leer y escribir), zfs destroy la instantánea anterior y el sistema de archivos anterior
  • zfs rename el sistema temporal al nombre antiguo
  • Verifique y cambie los puntos de montaje con zfs mount , reorganizando la situación anterior para su sistema de archivos reemplazado
  • Repita hasta que se muevan todos los sistemas de archivos

posible tercera solución (como lo menciona SirMaster en esta publicación del foro de FreeNAS):

  • agregar disco(s) nuevo(s) a zpool
  • copie muchos archivos a otro nuevo directorio /mnt/pool/temp/
  • eliminar archivos originales:rm -rf original/
  • renombrar directorio atrás:mv temp/ original/

Esto funciona porque ZFS colocará escrituras proporcionalmente en cualquier vdev que tenga más espacio libre, en este caso, las unidades nuevas que estaban vacías. (a partir de la versión 0.7, zfs favorecerá las unidades más rápidas para las escrituras, pero supongamos que sus 2 unidades nuevas tienen el mismo o mayor rendimiento que las unidades originales)

Probablemente sea más lento que zfs send | zfs recv , pero más simple porque no tiene que crear/destruir instantáneas.

Puedes ejecutar zpool list -v antes y después para ver la utilización de cada vdev.

Además, encontré un script php que realiza el procedimiento de copiar/eliminar/renombrar archivo por archivo. Esto se vinculó en una respuesta de una pregunta similar (pero zvol) unos años antes. (no probé este script personalmente)


Linux
  1. Cómo encontrar el sistema de archivos de CD/DVD para que se monte automáticamente:[Linux]

  2. ¿Cómo agregar una nueva línea al final de un archivo?

  3. Linux:¿con qué frecuencia se actualiza el sistema de archivos Proc en Linux?

  4. ¿Cómo hacer que el archivo sea disperso?

  5. ¿Cómo redirigir la salida de system() a un archivo?

Cómo hacer un archivo ejecutable en Linux

¿Cómo hacer que la barra de actividades de Gnome Shell sea pequeña todo el tiempo?

¿Cómo puedo encontrar todas las extensiones de archivo distintas en una jerarquía de carpetas?

¿Cómo agregar la salida a un archivo?

¿Cómo puedo hacer que tcpdump escriba en el archivo y genere de forma estándar los datos apropiados?

¿Cómo puedo asegurarme de que mi sistema use el archivo ~/.screenrc?