Документация по ОС FreeBSD Четверг, 09.05.2024, 03:14
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Перенос FreeBSD с большего диска на меньший [2011]
0. Предисловия

В очередной раз отказал "сервер" на удаленном объекте(вечная проблема с питанием), удаленно ни чего сделать не получилось. Пришлось запирать его себе на стол.

На сервере установлен GMIRROR на два диска, но почему то при выходе из строя одно диска вся битая информация перенеслась на рабочий. После запуска fsck и неких манипуляций на рабочем диске удалось запустить систему на одном.
Отправил экспедитора за покупкой винта того же объема. Получив диск попытался вернуть в строй gmirror, но не удалось так как диски оказались физически разного размера (см. ниже). В общем с этого момента встала задача перенести систему на новый (меньший) и поднять зеркало.

1. Данные

  /dev/ad2: диск источник Maxtron 160Gb (реальных ~157Gb);
  /dev/ad3: диск приемник Segate 160Gb (реальных ~152Gb).

Разбивка диска:
/dev/ad2s1a 4,8Gb /
/dev/ad2s1g 29Gb /usr
/dev/ad2s1d 19Gb /var/db
/dev/ad2s1h 85Gb /var/ftp
/dev/ad2s1f 4,8Gb /var
/dev/ad2s1e 4,8Gb /var/spool/mail

bsdlabel /dev/ad2s1

#/dev/ad2s1
size offset
a: 10485760 54525952
b: 2097152 41943040
c: 32169432 0
d: 41943040 0
e: 10485760 44040192
f: 10485760 65011712
g: 62914560 75497472
h: 183257400 13841232

           
2. Решение

Подключаем диск приемник, загружаемся с диска источника. 

Сохраним таблицу разделов диска источника
#bsdlabel /dev/ad2 > /usr/label.save

Так как диск приемник имеет меньший объем необходимо уменьшить объем диска источника. Самый простой способ размер последнего раздела, предварительно сохранив данные с него (если нужны скопируйте данные в другой раздел на котором достаточно метса). 

В нашем случае последний раздел пустой, поэтому смело меньшаем его размер в файле label.save.
#ee label.save

Комментируем строку начинающеюся с «c : », поставив #, это системный раздел не предназначенный для переразбиения. 
Уменьшаем последний раздел на 10 Gb.          (h:    183257400    13841232)

!!!!!!  ВАЖНО !!!!!
Так как в файле /usr/label.save размер указан из расчета сектор = 512Kb необходимо желаемый размер умножить на 2 и перевести в Кбайты


10Gb (1024Kb)= 20Gb (512Kb) = 24080 Mb = 24657920Kb

Для простоты на вторую цифру слева уменьшил на 2 (что примерно составит  - 10Gb):
h: 163257400 13841232

сохраняем.
Теперь перенесем посекторно данные с диска источника на диск приемник.
#dd if=/dev/ad2 of=/dev/ad3 bs=2M

Время для переноса данных объемом 160Gb примерно 2 часа.
Так как диск источник больше диска приемника в конце переноса выдаст предупреждение что диск приемник закончился. 
На данный момент получили полную копию диска источника, но с битым последним разделом.
Восстановим разметку на диски приемнике согласно поправленного файла label.save 
# bsdlabel –R /dev/ad3s1 /usr/label.save

Отформатируем последний раздел для ввода его в эксплуатацию
# newfs /dev/ad3s1h 

(Если необходимо примонтируйте раздел в нужную папку и верните сохраненную ранее информацию)
Проверим диск на ошибки
# fsck –y /dev/ad3s1

Выключаем сервер, отключаем диск источник. Загружаемся с диска приемника.

Система загрузиться до стоки «mountroot>»
Необходимо вручную примонтировать корневой раздел:
# ufs:/dev/ad3s1a

Система подгрузит режим «singlemod»
Перемонтируем корневой раздел с правом записи
# mount –u /

Подмонитруем раздел /usr для доступа к редакторам (можно посмотреть в fstab):
# mount /dev/ad3s1g /usr

Далее редактируем fstab (меняем диск ad2 на ad3):
# ee /etc/fstab
 
/dev/ad3s1a 4,8Gb /
/dev/ad3s1g 29Gb /usr
/dev/ad3s1d 19Gb /var/db
/dev/ad3s1h 85Gb /var/ftp
/dev/ad3s1f 4,8Gb /var
/dev/ad3s1e 4,8Gb /var/spool/mail

Сохраняем.
Запустим fsck еще раз чтобы убедиться что все в порядке и подправить ошибки, если есть.
#fsck –y /dev/ad3s1

Перегружаем  систему. И пользуемся системой на новом диске ;)

По поводу gmirror есть хорошая статья gmirror
так что описывать здесь не стоит.

За помощь спасибо статьям:
1.утилита dd 
2.HDD->HDD (решение похоже на эту статью, но все же немного разное :) )



Источник: http://www.lissyara.su/articles/freebsd/trivia/move_sys_big_on_small_hdd/
Категория: Установка и настройка | Добавил: oleg (19.09.2011) | Автор: LLIypuk
Просмотров: 1090 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024