Я хотел бы получить совет от любого, кто, возможно, уже обладает опытом, который я собираюсь получить.
Мы собираемся обновить массив RAID-1 на нашем POP-сервере с помощью дисков большего размера. Самой системе около 6 лет (я ее изначально построил), работает под управлением FreeBSD 4.9 и RAID-контроллером Adaptec 2400A. Операционная система находится на отдельном диске. Мы уже рассмотрели и отвергли идею полной замены контроллера и дисков из-за стоимости, неопределенности нового оборудования и недоступности старых контроллеров PCI.
Я искал документацию по этому процессу, но не нашел. Формат мертвого дерева также не упоминает об этом.
Мой план, так сказать, таков:
Мне не нравятся планы, которые заканчиваются «Надеждой». Вот почему я спрашиваю Serverfault. «Тестирование на стенде» тоже не вариант (именно поэтому исходный вариант «заменить контроллер» умер).
Последний возможный вариант, конечно, - это «ядерная бомба и создание нового, а затем восстановление резервной копии», но есть явная возможность потерять почту, пока это происходит, плюс дополнительное время простоя. Я бы предпочел, чтобы мой план сработал именно так, как я должен.
ПРИМЕЧАНИЕ: следующее возможно только в том случае, если вы можете физически установить в систему дополнительные диски, не удаляя сначала старые диски.
Один из методов, который я успешно использовал для подобных задач, - это использовать rsync для создания и заполнения новой файловой системы, пока существующая файловая система все еще используется, а затем запланировать переключение на новую файловую систему в удобное время. это сводит к минимуму время простоя и минимизирует работу в нерабочее время, поскольку большая часть копирования может быть сделана, пока система все еще работает нормально.
общее время простоя - это время, необходимое для выполнения окончательной rsync и реконфигурации (шаги 8–12 ниже).
в linux вы даже можете использовать ionice, чтобы назначить заданию rsync низкий приоритет ввода-вывода, чтобы минимизировать влияние на производительность, потому что на самом деле не имеет значения, сколько времени занимает rsync. Я ожидаю, что у freebsd будут аналогичные возможности.
общая процедура выглядит примерно так:
предупредите пользователей, что произойдет кратковременный сбой (на время, достаточное для выключения машины и установки новых дисков). в этом шаге нет необходимости, если на вашем сервере есть отсеки для горячей замены.
в назначенное время установите новые диски и создайте новый массив рейдов и файловую систему, используя их.
смонтируйте его, скажем, / mnt
rsync свою старую файловую систему с ней
повторяйте шаг 4 так часто, как хотите. вы можете отложить следующие шаги на неопределенное время, пока у вас не будет подходящего временного окна для завершения работы.
запланируйте время простоя и предупредите пользователей.
НЕМЕДЛЕННО ПЕРЕД отключением снова запустите rsync.
выключить ВСЕ процессы (например, демоны MTA и pop / imap и т. д.), которые производят запись в соответствующую файловую систему. если это корневая файловая система или если существует множество демонов, использующих эту файловую систему, это означает перезагрузку в однопользовательском режиме.
теперь, когда старый fs статичен (не обновляется), выполните последний rsync. это не займет много времени, потому что новая fs уже будет почти актуальной. после этого новая файловая система будет представлять собой полный актуальный снимок старой файловой системы.
переконфигурируйте все, что необходимо, так, чтобы новая fs использовалась вместо старой fs. если это корневая fs, это означает запись MBR на новый диск, редактирование fstab и т. д. если это просто раздел данных, то размонтируйте новую файловую систему, затем размонтируйте старую файловую систему и смонтируйте на ней новую файловую систему. отредактируйте fstab, чтобы отразить новую настройку.
осторожно проверьте, ничего не забыли :). исправить и повторять, пока не будет готово.
теперь перезапустите процессы, которые вы завершили (или просто перезагрузите).
вы можете уйти в отставку и удалить старые диски на досуге.
Я использовал варианты этого метода для переноса сервисов с одной машины на другую, например при замене устаревшего файлового сервера на новый. основная идея состоит в том, чтобы минимизировать время простоя, видимое пользователем, насколько это возможно, выполняя большую часть копирования в фоновом режиме.
RAID не должен волшебным образом расширять раздел жесткого диска, как вы думаете (из моего понимания RAID). Поскольку вы сначала зеркалируете диск 1 для диска 2 (новый диск), он будет отражать старый, который будет меньше. Вам придется изменить его размер, используя gparted или что-то.
Для обновления таких заданий HDD я использую DriveImageXML на UBCD4Win диск.
У меня есть подробный процесс обновления в моей Admin Wiki:
Примечание. Его также можно использовать вместе с подключенными сетевыми дисками.
Шаги из моей вики:
Примечание. Перед восстановлением рекомендуется воссоздать зеркало как 0-байтовое пустое зеркало (при необходимости), поскольку это сэкономит ваше время.
Этот метод подходит только для обновления жесткого диска с меньшего на более крупный. DriveImageXML не выполняет восстановление на диск, который не идентичен или меньше по размеру. Настоятельно рекомендуется, чтобы новый диск был больше во всех случаях.
В вашем случае это будет:
Может показаться, что выполнение этого с помощью DriveImageXML требует дополнительных действий, но этот процесс позволяет получить надежную резервную копию, во время которой это важно.
И последнее: DriveImageXML не может создавать резервные копии скрытых разделов.
У меня есть несколько 2400A, и хорошая новость в том, что вам повезло!
2400A был первым устройством ATA от Adaptec, поддерживающим функцию под названием «Online Expansion». Я так понимаю, вы используете массив из трех дисков, оставляя свободный канал?
Мне кажется, то, что вы предлагаете, может сработать. Честно говоря, я никогда не пробовал делать это таким образом (я когда-либо добавлял только новые диски той же емкости), но «автоматическое» изменение размера массива, вероятно, не произойдет. Но вы сможете запустить программное обеспечение для управления Adaptec и изменить его размер, чтобы использовать все свободное пространство.
Одно примечание - пожалуйста, убедитесь, что у вас есть 100% полная резервная копия, прежде чем что-либо делать. RAID не заменяет резервное копирование, поэтому, если что-то пойдет не так, вы получите root-доступ.
Фактически, если вы возьмете эту 100% резервную копию, то есть вероятность, что вы можете просто уничтожить массив, чтобы оно пришло, заменить все три диска, создать новый массив и восстановить резервную копию (как вы упомянули). Вероятно, в целом будет быстрее (но да, конечно, с большим временем простоя).
Можете ли вы добавить к контроллеру 2 новых диска? Если да, добавьте их как новый массив, запустите их вместе с текущим массивом RAID1, а затем перенесите все данные в новый массив. Затем вы можете удалить текущий RAID1, как только данные будут на новом RAID1, поскольку вы сказали, что ваша ОС находится на другом диске.
Другой способ больше в разрезе. Установите любое служебное программное обеспечение (почта и т. Д.), Которое обращается к RAID 1, так, чтобы оно не запускалось при загрузке первым.
Полностью выключите сервер
Отобразите текущий RAID 1 на другой сервер
Для этого требуется программное обеспечение изображения, которое может правильно видеть RAID.
И еще один сервер, на котором достаточно места. Хотя для этого можно использовать USB-накопитель.
Удалить текущие диски RAID 1
Установите новые диски RAID и настройте RAID в BIOS
Создайте образ диска обратно на новый RAID и расширьте его одновременно или после восстановления образа с помощью другой утилиты.
Загрузите ОС и посмотрите, правильно ли она отображается.
Если да, запустите программу снова.
Если он не работает, не работает и т. Д., Вы сможете вернуть старые диски RAID 1 и снова начать работу довольно быстро.
Я бы не стал рисковать производственной машиной такими действиями. Контроллер не будет автоматически расширять логический диск, но после перестройки вы можете создать второй raid1 на вновь добавленном свободном пространстве.
Голосую за резервное копирование-> тест-> новый массив-> восстановление