Показать страницуИстория страницыСсылки сюдаЭкспорт в PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Перенос системного раздела на RAID ====== Ситуация: продакшн-сервер, один диск, что с бэкапами - неизвестно. Задача: добавить в систему два новых диска, объединить их в RAID-1 (зеркало), перенести на них систему со всеми потрохами с минимальным даунтаймом, старый диск использовать под бэкапы. Железного RAID нет, только fake raid, поэтому выкручиваемся при помощи mdadm. Система: Ubuntu Server 12.04 LTS Диски: * Основной, с рабочей системой - sda, один раздел sda1, система ext4 * Новый диск №1 - sdb * Новый диск №2 - sdc ===== До начала операции ===== Обязательно бэкапим все нужное. ===== Обновляем систему и устанавливаем необходимые пакеты ===== <code> $ sudo apt-get update && sudo apt-get upgrade $ sudo apt-get install mdadm rsync </code> ===== Добавляем диски в систему ===== Если сервер поддерживает hot spare - мы на коне. Если нет - можно подключить через USB или иным способом, но в случае большого количества и/или объема данных процесс будет крайне длительным и время простоя будет оочень большим. Не подходит ни один из вариантов? Выключаем сервер и добавляем диски добрым старым способом. Проверяем все ли диски увиделись: <code> $ sudo fdisk -l | grep Disk </code> Убедимся что текущий системный диск это sda: <code> $ df -h | grep -Po "/dev/..." </code> ===== Создаем файловые системы ===== Диск №1: <code> $ sudo fdisk /dev/sdb p (убедимся что диск пуст) n (создаем новый раздел) p (тип: первичный) 1 (номер партиции) [Enter] [Enter] (все пространство под наш новый раздел) t (тип раздела) fd (Linux raid auto) w (записываем изменения и выходим) </code> Повторяем то же самое для диска №2: <code> $ sudo fdisk /dev/sdc p (убедимся что диск пуст) n (создаем новый раздел) p (тип: первичный) 1 (номер партиции) [Enter] [Enter] (все пространство под наш новый раздел) t (тип раздела) fd (Linux raid auto) w (записываем изменения и выходим) </code> ===== Создаем RAID-1 (зеркало) ===== <code> $ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 </code> Какое-то время будет создаваться рейд, в этом можно убедиться глядя на индикаторы обращения к дискам. Посмотреть текущий статус можно так: <code> $ sudo mdadm -D /dev/md0 </code> Добавляем информацию о новом массиве в конфигурационный файл: <code> $ sudo mdadm --examine --scan >> /etc/mdadm/mdadm.conf </code> Проверяем название массива - оно должно быть прописано правильно! В противном случае мы получим так называемую проблему "md127" (массив виден, но его имя /dev/md127). ===== Создаем разделы ===== Смотрим какие разделы были созданы на основном диске: <code> $ sudo fdisk -l /dev/sda </code> и создаем такие же на новом RAID-массиве: <code> $ sudo fdisk /dev/md0 </code> Размер выбираем по желанию. <note important>Не забываем сделать первый раздел загрузочным!</note> ===== Создаем файловые системы ===== У меня один общий раздел / и один раздел swap, так что в этом случае все просто: <code> $ sudo mkfs.ext4 /dev/md0p1 $ sudo mkswap /dev/md0p5 </code> ===== Переносим файловую систему ===== <note important>Примечание: копирование идет пофайлово, поэтому если у вас работают какие-то сервисы и вносятся изменения в данные (СУБД, веб-сервер и т.д.) необходимо в дальнейшем перед перезагрузкой остановить эти сервисы и сделать выборочное копирование информации или решить вопрос при помощи импорта/экспорта. В противном случае есть шансы потерять какие-либо данные.</note> <code> $ sudo mount /dev/md0p1 /mnt $ sudo rsync -axu / /mnt/ </code> Если есть желание следить за происходящим, нужно добавить **--progress** в команду rsync ===== Подключаем системные каталоги, входим в новую систему ===== Теперь необходимо сделать настройки в новой системе, при этом не трогая оригинал. Для этого подключаем системные каталоги и переходим в новую систему. <code> $ sudo mount --bind /proc /mnt/proc $ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /sys /mnt/sys $ sudo mount --bind /run /mnt/run $ sudo chroot /mnt </code> Последняя команда (chroot) переключает нас в новую копию системы, все остальные операции мы будем делать там. Это позволит сохранить рабочий диск нетронутым и при факапе вновь с него загружаться и работать. ===== Вносим изменения в fstab ===== Чтобы система смогла загрузиться из нового места ей необходимо объяснить где у нас будут устройства (диски). <code> /# ls -l /dev/disk/by-uuid | grep md >> /etc/fstab /# nano -w /etc/fstab </code> Теперь правим fstab: закомментариваем старые UUID, добавляем вместо них новые. Крайне желательно не ошибаться, иначе система просто не загрузится. ===== Настраиваем и устанавливаем Grub ===== Чтобы загружаться с нового массива нам нужно а)установить загрузчик и б)правильно его сконфигурировать. Сначала обновляем конфигурацию: <code> /# update-grub /# cat /boot/grub/grub.cfg | grep UUID_нового_системного_раздела </code> <note important>Необходимо убедиться что новый UUID есть в обновленном конфигурационном файле!</note> Теперь пора установить загрузчик на наши новые диски: <code> /# grub-install /dev/sdb </code> ===== Обновляем конфигурацию модулей ядра ===== Это нужно сделать для нормальной работы mdadm, иначе получим вышеописанную проблему "md127" <code> /# update-initramfs -u </code> ===== Выходим в реальную систему ===== <code> /# exit </code> ===== Восстановление рабочих данных ===== Наступило время восстановления рабочих данных - СУБД и прочее. Но тут каждый все делает самостоятельно. ===== Перезагрузка в новую систему ===== <code> $ sudo reboot </code> Перезагружаем систему, выбираем для загрузки новые диски (через BIOS или любым другим способом), загружаемся. По идее все должно быть хорошо. На всякий случай проверяем с какого же устройства мы загрузились <code> $ df -h | grep -Po "/dev/..." /dev/md0 </code> Ага, все хорошо, все заработало. ===== Заключение ===== Осталось протестировать работу системы и придумать что сделать с освободившимся диском: пустить его в hot swap, под хранение данных или просто выкинуть. {{tag>ubuntu server migration production raid mdadm миграция_системы миграция_системного_раздела}} software/mdadm/upgrade-hdd-raid.txt Последнее изменение: 2024/08/04 14:55 — fireball