Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Русификация
  COM-порт
  Монтирование образов
  dd
  burncd
  Консоль
  polling
  redirect_port
  wolf3d
  W.O.L.
  HDD->HDD
  bsdstats
  pdf в html
  monitord
  monit
  dvd в avi
  LAM
  Контроль провайдера
  pppd
  ru man
  geom_uzip
  colorize
  nettop
  немного о ssh
  установка по сети
  ClamAV mirror
  BlueTooth
  WiFi WPA
  iftop
  iPod
  2 CD -> 1 DVD
  ipcalc
  LACP и VLAN
  FFS из-под WinXP
  queues
  NFS & Win2k3
  Dynamic DNS
  ProFTPD+iconv
  deltup, xdelta, bdelta
  Приглашение csh/tcsh
  настрока bash
  Lan over Bluetooth
  pppoe
  метаданные exif
  dd : бэкапируем windows
  mozilla autoconfig
  Proxy Auto Configuration
  NNTP сервер
  Rinetd
  ISO DVD FreeBSD
  my disc1
  sftp+chroot
  SendXMPP
  APCUPSD
  Видеонаблюдение
  Настройка аудиоплеера на ximp3
  HDD(mbr) -> HDD(gpt)
  mc 4.6.2
  Динамический DNS
  axel
  LiveCD
  NAS на MPD
  backup конфигов на почту
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> HDD_big->small

Перенос FreeBSD с большего диска на меньший

Автор: LLIypuk.


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 (решение похоже на эту статью, но все же немного разное :) )



размещено: 2011-09-19,
последнее обновление: 2011-10-24,
автор: LLIypuk

оценить статью:

tynix, 2011-09-23 в 20:19:26

Я бы сделал так:
1. Разбил новый диск, как требуется, но, чтобы разделы были не меньше, чем занимают данные на старом.
2. Подмонтировать и перенести с dump/restore (это получается значительно быстрее, чем dd).
3. Отредактировать fstab, чтобы загрузиться с нового.
4. Проверить работу на новом диске и сделать новое зеркало, размер которого будет размером меньшего диска.
Хотя, почему сделал БЫ? Я так и делал- 160-> 80. Освободил 160, насколько можно и вперёд.

fox, 2011-10-21 в 10:52:44

Плахой вариант для решения данной проблемы, автор легкомысленно относиться к общественной информации! И текст содержит 2 орфографические ошибки…

LLIypuk, 2011-10-21 в 13:50:39

tynix,
В следующий раз воспользуюсь вашим советом.
fox,
С русским у вас тоже не все в порядке.
В чем мое легкомыслие?

fox, 2011-10-21 в 16:44:07

Ну не лучший образец для решения подобной проблемы. Новички прочтут вашу статью и решат что это лучший вариант решения дров наломают, да и тут кто угодно может наломать DD для подобной проблемы не потходит...

LLIypuk, 2011-10-21 в 17:45:28

Я лишь поделился опытом и тем что у меня получилось...

А в начале подпишу что это "не лучший вариант". Сойдет?

fox, 2011-10-22 в 21:59:08

Дело хозяйское. Но всё же согласитесь если бы всё было более эстетичней Вам бы самим понравелось! Делайте работу так (имееься ввиду статьи, документацию), что бы это самому понравелось то есть найлучшим образом! А так как то не радует глаз...


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 9 чел.
За последние 30 мин было: 50 человек
За сегодня было
3666 показов,
312 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.038 секунд
Из них PHP: 22%; SQL: 78%; Число SQL-запросов: 77 шт.
Исходный размер: 120706; Сжатая: 20413