Hice una pregunta similar hace 2 años.
Sin embargo, en mi caso, solo estaba planeando copiar un solo dispositivo en raid0.
Finalmente encontré una solución . En el momento no podía convertir de raid0 a raid10, pero parece que desde el kernel 3.3, ahora puede hacerlo. Entonces, esa solución puede funcionar para usted al final.
Un problema con ese enfoque es que copia el fsuid. Lo que significa que no puede montar tanto el FS como su copia en la misma máquina. En ese momento, no había ninguna herramienta para cambiar el fsuidFS, pero podría haber cambiado ahora.
La idea es agregar una capa de copia en escritura en la parte superior del dispositivo original para que se pueda escribir, pero cualquier modificación se realiza en otro lugar que puede descartar más adelante. Eso significa que necesita espacio de almacenamiento adicional (por ejemplo, en una unidad externa).
Luego monte ese COW'd FS en lugar del original, agregue los dispositivos para la copia FS y retire el dispositivo del COW.
Para copiar en escritura, puede usar el mapeador de dispositivos.
Para la copia desechable en el área de escritura, aquí uso un dispositivo de bucle.
Digamos que quieres clonar /dev/sdaen /dev/sd[bcde]:
Crea la tienda de vuelta COW:
truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store
Ahora desmonte el FS de origen si está montado y modprobe -r btrfspara asegurarse de que no va a interferir y hacer que olvide el escaneo de su dispositivo.
Luego haga el dispositivo COW'd:
echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed
Ahora /dev/mapper/cowedes como, /dev/sdaexcepto que cualquier cosa escrita en él terminará /dev/loop0y /dev/sdaquedará intacta.
Ahora puedes montarlo:
mount /dev/mapper/cowed /mnt
Agregue los otros dispositivos:
btrfs dev add /dev/sd[bcde] /mnt
Y quite el viejo:
btrfs dev del /dev/mapper/cowed /mnt
Cuando termine, es posible que desee apagar y desconectar o hacer /dev/sdasolo lectura porque, dado que tiene el mismo líquido que los otros, btrfsaún podría estropearlo.
Ahora, si entiendo correctamente, suponiendo que tenga un btrfs-prog reciente, debería poder hacer:
btrfs balance start -d convert=raid10 /mnt
Para convertir a raid10. En teoría, eso debería garantizar que cada fragmento de datos se copie en al menos 2 discos.
Recomiendo encarecidamente que primero realice pruebas en un btrfs ficticio en dispositivos de bucle, ya que todo eso proviene de la memoria y podría haberme equivocado (consulte, por ejemplo, mi respuesta inicial antes de mi edición).
Tenga en cuenta que desde el kernel 3.6, btrfs implementa enviar / recibir un poco como en zfs. Esa podría ser una opción para ti.
La idea de Stephane se puede hacer a través de las herramientas incorporadas de btrfs (por eso es genial): haga que el viejo btrfs sea un dispositivo semilla a través de
btrfstune -S 1 /dev/device, agregue dispositivos, elimine el dispositivo semilla, hagabtrfs balance start. Un dispositivo semilla es un dispositivo de solo lectura que puede ser parte de un sistema de archivos de lectura y escritura.fuente
Intenté seguir la sugerencia de @ ignis de usar la siembra pero tuve problemas con ella; el sistema arrojó un error al intentar eliminar el dispositivo semilla y no pude superarlo. Luego descubrí que existe (ahora - btrfs-progs v3.19-64-g19a806f, tal vez no antes) el comando:
lo que hizo que clonar mi sistema de archivos btrfs existente (que estaba en un volumen lógico LVM) en una nueva partición fuera de lugar. Tenga en cuenta que a mayo de 2015 no funciona para los perfiles RAID5 / 6; consulte la página de manual para obtener información completa.
fuente
btrfs replace startfines de copia de seguridad! ¡Daña el árbol de su dispositivo y hace que la unidad no se pueda montar! Me fue imposible recuperarme de los errores, así que restauré una copia de imagen de otro dispositivo de bloque con dd -tool. Solo se usabtrfs replacepara la migración de la unidad final.Opción 1: copia de datos y luego cambiar UUID
Asegúrese de que la partición de origen esté desmontada y no se monte automáticamente.
Usar ya sea
dd(lento, tonto) opartclone.btrfs -b -s /dev/src -o /dev/targetSe usa
btrfstune -upara cambiar el UUID después de la copia y antes del montaje.Avisador de pérdida de datos : Do NO trate de (auto) montar ya sea original o la copia hasta que el UUID ha cambiado
Opcion 2 -
btrfs-cloneNo lo he intentado personalmente
btrfs-clone, pero pretende clonar un sistema de archivos BTRFS existente en uno nuevo, clonando cada subvolumen en orden.fuente