Я задав подібне запитання 2 роки тому.
Однак у моєму випадку я лише планував скопіювати один пристрій на рейд0.
Зрештою я знайшов рішення . На той момент ви не могли перетворити з raid0 в raid10, але це виглядає так з ядра 3.3, ви можете зараз. Тож врешті-решт це рішення може працювати для вас.
Проблема такого підходу полягає в тому, що він копіює фусуїд. Це означає, що ви не можете монтувати і FS, і його копію на одній машині. У той час не було інструменту для зміни fsuid
FS, але це могло змінитися і зараз.
Ідея полягає в тому, щоб додати оригінал пристрою шар копіювання на запис, щоб він міг бути записаний, але будь-які зміни виконуються десь в іншому місці, які ви зможете відкинути згодом. Це означає, що вам потрібно додаткове місце для зберігання (наприклад, на зовнішньому диску).
Потім встановіть COW'd FS замість оригіналу, додайте пристрої для копіювання FS та вийміть пристрій COW.
Для копіювання під час запису можна використовувати картограф пристрою.
Для одноразової копії в області запису тут я використовую циклічний пристрій.
Припустимо, ви хочете клонувати /dev/sda
на /dev/sd[bcde]
:
Створіть запасний магазин COW:
truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store
Тепер відключіть початковий FS, якщо він встановлений, і modprobe -r btrfs
переконайтеся, що він не буде перешкоджати, і забудьте його забути сканування пристрою.
Потім зробіть пристрій COW:
echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed
Зараз /dev/mapper/cowed
начебто, /dev/sda
за винятком того, що все, що написано до нього, закінчиться /dev/loop0
і /dev/sda
буде недоторканим.
Тепер ви можете встановити його:
mount /dev/mapper/cowed /mnt
Додайте інші пристрої:
btrfs dev add /dev/sd[bcde] /mnt
І видаліть старий:
btrfs dev del /dev/mapper/cowed /mnt
Коли це закінчиться, ви, можливо, захочете вимкнути та вимкнути вилку з мережі або зробити /dev/sda
повторне повторне читання, тому що він має таку саму фузиду, як і інші, btrfs
і все ще може зіпсуватись із цим.
Тепер, якщо я правильно розумію, якщо припустити, що у вас недавній btrfs-prog, ви повинні зробити:
btrfs balance start -d convert=raid10 /mnt
Щоб перейти на рейд10. Теоретично це повинно переконатися, що кожен фрагмент даних копіюється на щонайменше 2 дисках.
Я настійно рекомендую зробити тести на фіктивний btrfs спочатку на петльових пристроях, як все, що є з пам'яті, і я, можливо, помилився (див., Наприклад, мою початкову відповідь перед моєю редагуванням).
Зауважте, що оскільки ядро 3.6, btrfs-реалізатори надсилають / отримують трохи, як у zfs. Це може бути для вас варіантом.