Давно не писал ничего околотехнического. Хватает писанины по работе. Поэтому больше как-то получается обзоров о прочитанном/просмотренном в виде развлечения.
Но сегодня публикация по довольно интересной теме.
Дано: сервер под управлением FreeBSD 9 с двумя террабайтными дисками, собранными в зеркальный рейд-массив.
Требуется: заменить оба диска 1ТБ на 2ТБ с целью увеличения дискового пространства.
Для проведения всех операций потребуется только возможность загрузки в режим восстановления.
1. Разбираем зеркальный рейд-массив и загружаемся с одного из дисков
В файле /boot/loader.conf комментируем строку:
geom_mirror_load=”YES”
В файле /etc/fstab меняем что-то типа такого:
/dev/mirror/root / ufs rw 1 1
/dev/mirror/swap none swap sw 0 0
на
/dev/ada0p3 / ufs rw 1 1
/dev/ada0p1 none swap sw 0 0
Тем самым указывая работу системы не с зеркала, а конкретного диска: ada0
Таким образом, второй диск можно вынуть и заменить на диск бОльшего объема.
2. Просле замены диска загружаемся в режим восстановления (либо с любого live-cd)
3. Делаем копию разметки с рабочего диска на новый
gpart show ada0 | gpart restore -F ada1
4. После чего увеличиваем размер основного раздела до максимально возможного
gpart resize -s 1816M -i 3 ada1
5. Форматируем раздел
newfs /dev/ada1p3
6. Монтируем рабочий раздел и пустой раздел с общего диска.
mkdir /mnt/ada0
mount /dev/ada0p3 /mnt/ada0
mkdir /mnt/ada1
mount /dev/ada1p3 /mnt/ada1
7. Переносим всю информацию с помощью rsync
rsync /mnt/ada0 /mnt/ada1
8. После окончания процедуры переноса файлов, прописываем загрузчик на новый диск
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
9. На диске ada1 (который уже 2ТБ) производим корректировку конфигурационных файлов
/etc/fstab и /boot/loader.conf (возвращаем параметры работы с зеркальным массивом.
и создаем устройства на диске ada1
gmirror label -vb round-robin boot /dev/ada1p1
gmirror label -vb round-robin swap /dev/ada1p2
gmirror label -vb round-robin root /dev/ada1p3
Теперь на сервере оба диска по 2ТБ, но еще нет полноценного зеркала. Для этого производим процедуру сборки зеркального рейд-массива путем добавления второго диска
gmirror insert boot /dev/ada0p1
gmirror insert swap /dev/ada0p2
gmirror insert root /dev/ada0p3
После всех выполненных действий, начнется синхронизация дисков, состояние можно увидеть командой gmirror status.
Самое интересное, что совсем скоро, судя по блогу русскоязычного разработчика gpart и gmirror Андрея Елсюкова http://bu7cher.blogspot.ru/2013/11/geommirror.html в FreeBSD 11 для gmirror будет добавлен параметр resize который позволит без множества действий по сборке/разборке массива произвести замену дисков на бОльшие размеры.
Да, если окажется, что я выполнил кучу лишних действий, и все можно сделать куда более лаконичней и изящней, я бы хотел на это посмотреть у себя в комментариях 😉
Добрый день.
Я совсем новичек во Free, прошу помогите пожалуйста разобраться как правильно сделать чтобы не убить рабочий сервер.
Стоит Фри 7.1, на ней файловый сервер. Запущен софтовый Реид 1 gmirror. Команды resize нет еще в этой версии. Диски в рейде по 2Тб заполнены. Купил 2 по 4Тб, заменил физически по очереди, стали перезаписались но размер зеркала остался тот же 1,8 ТБ.
если можно опишите детально по командно как сделать чтобы расширить зеркало до физических дисков в 4 ТБ?
Как правильно разрушить/остановить реид и заново его создать чтобы не потерять информацию?