Я обновляю программный массив 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ТБ заняла всего пару минут.