Я обновляю программный массив RAID 1 (/dev/md0) с дисков емкостью 2 ТБ (sda и sdb) до 4 ТБ (sdc и sdd). Прямо вперед; ext3 , один раздел, без MBR, без LVM. В конце я хотел бы иметь два устройства /dev/mdX , одно с исходным массивом, другое с новым массивом, оба с одинаковыми данными. Из того, что я собрал, есть два варианта:
ОПЦИЯ 1:
- сделать резервную копию существующего массива
- размонтировать существующий массив
- вставьте диск объемом 4 ТБ и добавьте его в массив
mdadm --manage /dev/md0 --add /dev/sdc1
- выйдите из строя один из дисков объемом 2 ТБ и дождитесь восстановления массива
mdadm --manage /dev/md0 --fail /dev/sda1 mdadm --manage /dev/md0 --remove /dev/sda1
- вставьте оставшийся диск 4ТБ и добавьте его в массив
mdadm --manage /dev/md0 --add /dev/sdd1
- сбой на оставшемся диске объемом 2 ТБ, дождитесь восстановления массива
mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm --manage /dev/md0 --remove /dev/sdb1
- Что мне делать здесь, чтобы повторно активировать массив 2 ТБ под новым номером /dev/mdX? Могу ли я просто набрать:mdadm create /dev/md1 --assume-clean /dev/sda1 /dev/sdb1
ПРОФИ: гарантированное зеркалирование данных, устройство mdX можно отключить, чтобы избежать несоответствий
Минусы: нужно синхронизировать дважды (медленно)
ВАРИАНТ 2:
- Создайте новый массив с дисками 4 ТБ:
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
- Создайте файловую систему в /dev/md1(так же, как в/dev/md0)
- Mount /dev/md1
- Скопируйте файлы, используя один из:
tar -C /mnt/md0 --atime-preserve -clSf - . | tar -C /mnt/md1 -xvf - --or-- rsync -avHhx --progress /mnt/md0 /mnt/md1
ПРОФИ: синхронизировать нужно только один раз
Минусы: нет гарантии, что резервная копия является точной (за пределами флагов, используемых для tar или rsync)
Какой метод предпочтительнее и почему? Есть ли лучший способ [1]?
[1] Я читал об использовании dd , но изменение размера mdX после копирования кажется проблемой, и мне все равно нужно создать новый /dev/mdX для одного из массивов.
ОБНОВЛЕНИЕ В итоге я выбрал вариант 2, так как он, безусловно, самый безопасный и "самый чистый". Я также включил комментарии / предложения ниже, с некоторыми важными оговорками:
- fdisk(в настоящее время) не работает надежно для разделов размером более 2 ТБ , рекомендуется использовать- partedс использованием таблицы разделов- gpt
- хэширование для проверки передач rsync - отличная идея. К сожалению, ddне подходит, так как читает весь том, включая нули. Таким образом, по определению хэши накопителей емкостью 2 и 4 ТБ будут разными. Кроме того,ddдолжен прочитать все 2 ТБ данных, чтобы получить хэш, и не может обрабатывать каталоги, что исключает проверку отдельных критических папок. Существуют программы (md5sumdилиmd5deep), которые рекурсивно хешируют каталоги, но такая тщательность не требует времени, необходимого для чтения и хеширования 2 ТБ данных. Вместо этого, я взбитый сырой сценарий дляdiffвыводаls -lARдля обоего томов (к счастью , размеры блока были одинаковыми между ними), и просто хэшируются любые файлы с различным сообщенным размером. В итоге проверка 2ТБ заняла всего пару минут.
