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.
Gagasan Stephane dapat dilakukan melalui alat btrfs builtin (itu sebabnya itu keren): membuat btrfs lama menjadi perangkat seed via
btrfstune -S 1 /dev/device
, menambah perangkat, menghapus perangkat seed, lakukanbtrfs balance start
. Perangkat seed adalah perangkat read-only yang mungkin menjadi bagian dari sistem file read-writable.sumber
Saya mencoba mengikuti saran @ ignis untuk menggunakan seeding tetapi memiliki masalah dengannya; sistem melempar kesalahan ketika mencoba untuk menghapus perangkat seed dan saya tidak bisa mengatasinya. Kemudian saya menemukan bahwa ada (sekarang - btrfs-progs v3.19-64-g19a806f, mungkin tidak sebelumnya) perintah:
yang membuat kloning filesystem btrfs saya yang ada (yang ada dalam volume logis LVM) ke partisi baru menjadi doddle. Perhatikan bahwa pada Mei 2015 ini tidak berfungsi untuk profil RAID5 / 6 - periksa halaman manual untuk info lengkap.
sumber
btrfs replace start
untuk keperluan cadangan !! Ini merusak pohon perangkat Anda dan membuat drive tidak dapat dilepas! Tidak mungkin bagi saya untuk pulih dari kesalahan, jadi saya mengembalikan salinan gambar dari perangkat blok lain dengan dd -tool. Hanya digunakanbtrfs replace
untuk migrasi final drive.Opsi 1 - Salinan data kemudian ubah UUID
Pastikan partisi sumber tidak di-mount dan tidak akan di-otomatiskan.
Gunakan salah satu
dd
(lambat, bisu) ataupartclone.btrfs -b -s /dev/src -o /dev/target
Gunakan
btrfstune -u
untuk mengubah UUID setelah menyalin dan sebelum pemasangan.Data kerugian peringatan : Do NOT mencoba untuk (auto) me-mount baik asli atau salinan sampai UUID telah berubah
Pilihan 2 -
btrfs-clone
Saya belum mencoba secara pribadi
btrfs-clone
, tetapi dimaksudkan untuk mengkloning sistem file BTRFS yang ada ke yang baru, mengkloning setiap subvolume secara berurutan.sumber