Poprosiłem podobne pytanie 2 lata temu.
Jednak w moim przypadku planowałem skopiować tylko jedno urządzenie na raid0.
W końcu znalazłem rozwiązanie . W tym czasie nie można było przekonwertować z raid0 na raid10, ale tak to wygląda od jądra 3.3, teraz możesz. To rozwiązanie może Ci w końcu zadziałać.
Problem z tym podejściem polega na tym, że kopiuje fsuid. Co oznacza, że nie możesz zamontować zarówno FS, jak i jego kopii na tym samym komputerze. W tym czasie nie było narzędzia do zmiany fsuid
FS, ale mogło się to teraz zmienić.
Chodzi o to, aby dodać warstwę kopiowania przy zapisie na oryginalnym urządzeniu, aby można ją było zapisać, ale każda modyfikacja jest wykonywana w innym miejscu, które można później odrzucić. Oznacza to, że potrzebujesz dodatkowej przestrzeni dyskowej (na przykład na dysku zewnętrznym).
Następnie zamontuj ten COW'd FS zamiast oryginału, dodaj urządzenia do kopii FS i usuń urządzenie COW.
Do kopiowania przy zapisie możesz użyć mapera urządzeń.
Do jednorazowego kopiowania w obszarze zapisu używam tutaj urządzenia pętlowego.
Powiedzmy, że chcesz sklonować /dev/sda
na /dev/sd[bcde]
:
Utwórz sklep COW back:
truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store
Teraz odmontuj FS źródłowy, jeśli jest zainstalowany, i modprobe -r btrfs
upewnij się, że nie będzie przeszkadzał i sprawi, że zapomni o skanowaniu urządzenia.
Następnie wykonaj urządzenie COW'd:
echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed
Teraz /dev/mapper/cowed
jest tak, /dev/sda
że wszystko, co do niej napisane, skończy się /dev/loop0
i /dev/sda
pozostanie nietknięte.
Teraz możesz go zamontować:
mount /dev/mapper/cowed /mnt
Dodaj inne urządzenia:
btrfs dev add /dev/sd[bcde] /mnt
I usuń stary:
btrfs dev del /dev/mapper/cowed /mnt
Kiedy to się skończy, możesz chcieć zamknąć i odłączyć wtyczkę lub zrobić /dev/sda
tylko do odczytu, ponieważ ponieważ ma ten sam fsuid jak inne, btrfs
nadal może z tym popsuć.
Teraz, jeśli dobrze rozumiem, zakładając, że masz najnowszą wersję btrfs-prog, powinieneś być w stanie wykonać:
btrfs balance start -d convert=raid10 /mnt
Aby przekonwertować na raid10. Teoretycznie powinno to zapewnić, że każdy fragment danych zostanie skopiowany na co najmniej 2 dyskach.
Zdecydowanie zaleciłbym, aby najpierw wykonać testy na atrapie btrfs na urządzeniach pętlowych, ponieważ wszystko pochodzi z pamięci i mogłem się pomylić (patrz na przykład moja pierwsza odpowiedź przed edycją).
Zauważ, że ponieważ jądro 3.6, btrfs implementuje wysyłanie / odbieranie trochę jak w ZFS. To może być dla ciebie opcja.