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.
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 start
fines 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 replace
para 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/target
Se usa
btrfstune -u
para 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-clone
No lo he intentado personalmente
btrfs-clone
, pero pretende clonar un sistema de archivos BTRFS existente en uno nuevo, clonando cada subvolumen en orden.fuente