Как я могу обновить мой программный набор дисков RAID1?
У меня есть два диска по 600 ГБ в программной конфигурации RAID1 на физическом сервере Debian.
Я хочу иметь возможность повысить емкость сервера путем клонирования дисков в соответствующую пару дисков по 2 ТБ. Затем я могу стереть диски емкостью 600 ГБ и использовать их в качестве хранилища или чего-то еще.
Какой лучший способ пойти по этому поводу?
slave:~# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
3 ответа
Вы должны быть в состоянии заменить первый диск, добавить раздел в массив и позволить raid повторно синхронизироваться. Затем замените второй диск, дайте ему возможность выполнить повторную синхронизацию, а затем разверните raid и файловую систему, чтобы занять все пространство. Когда вы разбиваете свои новые диски, сделайте так, чтобы они занимали все пространство, которое вы хотите для нового макета.
удалить устройство из массива
mdadm /dev/md0 --remove /dev/olddevice
добавить устройство в массив
mdadm /dev/md0 --add /dev/newdevice
увеличить массив, чтобы занять все пространство, разрешенное разделами
mdadm /dev/md0 --grow --size=max
Расширьте файловую систему, чтобы занять начальное пространство массива
resize2fs /dev/md0
Вы все равно должны сделать резервную копию. Просто чтобы убедиться. Если вы хотите попрактиковаться и протестировать, вы можете сначала попробовать это на виртуальной машине, чтобы чувствовать себя уверенно.
На всякий случай, если кто-то погуглит, вот мой опыт перехода с дисков 2x150 ГБ на 2x1 ТБ в mdadm RAID1 + LVM поверх него.
Предположим, у нас есть 2 диска - small1, small2 в зеркале mdadm (md0), а новые - big1 и big2. Поверх них LVM с группой томов VG1 и логическим томом LV1.
убедитесь, что все в порядке с текущим MD:
cat /proc/mdadm
Скажите mdadm об отказе одного диска и об удалении его из массива md:
mdadm /dev/md0 --set-faulty /dev/small1 && mdadm /dev/md0 --remove /dev/small1
Замените диск small1 на большой (горячая замена или выключение системы).
Создайте новый раздел на большом жестком диске типа FD (автоматическое определение Linux RAID). Сделайте размер таким, каким вы хотите, чтобы ваш новый RAID был. Я предпочитаю cfdisk, но это может варьироваться:
cfdisk /dev/big1
Добавьте новый диск (или, если быть точным, только что созданный раздел, например /dev/sda1):
mdadm /dev/md0 --add /dev/big1
Подождите, пока массив синхронизируется:
watch cat /proc/mdstat
Повторите это с другой парой дисков. В конце вы получите два больших диска в массиве.
Увеличьте массив до максимального размера, разрешенного компонентными устройствами, дождитесь синхронизации:
mdadm /dev/md0 --grow --size=max
watch cat /proc/mdstat
Теперь пришло время изменить размер LVM. Обратите внимание на параметр --test, он будет имитировать действие, но не будет изменять метаданные (полезно узнать, есть ли какая-либо неверная конфигурация, прежде чем изменять размер).
Изменение размера физического объема:
pvresize --verbose --test /dev/md0
Изменение размера логического тома:
lvresize --verbose -L <SIZE> --test /dev/VG1/LV1
И, наконец, изменение размера ext3 FS:
resize2fs /dev/VG1/LV1
С двумя жесткими дисками емкостью 1 Тб у меня ушло около 20 часов (я удалил один диск из массива, прежде чем связываться с LVM и FS, поэтому было 3 синхронизации + увеличение массива).
Все было сделано на рабочем сервере, без прерывания работы служб.
Но не забудьте сделать резервную копию ваших данных, прежде чем вносить какие-либо изменения.
Предполагая, что один из заменяемых дисков является загрузочным, вам не нужно беспокоиться о наличии GRUB на обоих дисках, прежде чем начинать извлекать диски? (Я предполагаю, что материал, который GRUB ищет в /boot, отражается на обоих дисках.)
Я почти уверен, что смотрел на не совсем GRUB, когда я не понял это правильно...