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 fsuid
FS, 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/sda
en /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 btrfs
para 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/cowed
es como, /dev/sda
excepto que cualquier cosa escrita en él terminará /dev/loop0
y /dev/sda
quedará 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/sda
solo lectura porque, dado que tiene el mismo líquido que los otros, btrfs
aú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.