Saya mengajukan pertanyaan serupa 2 tahun yang lalu.
Namun dalam kasus saya, saya hanya berencana untuk menyalin satu perangkat ke raid0.
Saya akhirnya menemukan solusi . Pada saat itu Anda tidak dapat mengkonversi dari raid0 ke raid10, tetapi sepertinya itu sejak kernel 3.3, Anda sekarang bisa. Sehingga solusi itu mungkin bekerja untuk Anda pada akhirnya.
Masalah dengan pendekatan itu adalah bahwa ia menyalin fsuid. Yang berarti Anda tidak dapat memasang FS dan salinannya pada mesin yang sama. Pada saat itu, tidak ada alat untuk mengubah fsuid
FS, tetapi mungkin sudah berubah sekarang.
Idenya adalah untuk menambahkan lapisan copy-on-write di atas perangkat asli sehingga dapat ditulis, tetapi modifikasi dilakukan di tempat lain yang dapat Anda buang nanti. Itu berarti Anda memerlukan ruang penyimpanan tambahan (misalnya pada drive eksternal).
Kemudian pasang COW'd FS bukan yang asli, tambahkan perangkat untuk salinan FS dan hapus perangkat COW.
Untuk copy-on-write, Anda dapat menggunakan mapper perangkat.
Untuk salinan sekali pakai pada area tulis, di sini saya menggunakan perangkat loop.
Katakanlah Anda ingin dikloning /dev/sda
ke /dev/sd[bcde]
:
Buat toko belakang SAP:
truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store
Sekarang unmount FS asal jika di-mount dan modprobe -r btrfs
pastikan tidak akan mengganggu dan lupakan pemindaian perangkatnya.
Kemudian buat perangkat COW'd:
echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed
Sekarang /dev/mapper/cowed
seperti /dev/sda
kecuali bahwa segala sesuatu yang tertulis padanya akan berakhir /dev/loop0
dan tidak /dev/sda
akan disentuh.
Sekarang, Anda bisa memasangnya:
mount /dev/mapper/cowed /mnt
Tambahkan perangkat lain:
btrfs dev add /dev/sd[bcde] /mnt
Dan hapus yang lama:
btrfs dev del /dev/mapper/cowed /mnt
Ketika itu selesai, Anda mungkin ingin mematikan dan mencabut atau membuat hanya /dev/sda
baca karena punya fsuid yang sama seperti yang lain, btrfs
mungkin masih mengacaukannya.
Sekarang, jika saya mengerti dengan benar, dengan anggapan Anda memiliki btrfs-prog baru-baru ini, Anda harus dapat melakukan:
btrfs balance start -d convert=raid10 /mnt
Untuk mengkonversi ke raid10. Secara teori, itu harus memastikan bahwa setiap potongan data disalin pada setidaknya 2 disk.
Saya akan sangat menyarankan agar Anda melakukan tes pada dummy btrfs pada perangkat loop pertama karena semua yang dari memori dan saya mungkin salah (lihat misalnya jawaban awal saya sebelum edit saya).
Perhatikan bahwa sejak kernel 3.6, btrf mengimplementasikan mengirim / menerima sedikit seperti di zfs. Itu mungkin menjadi pilihan bagi Anda.