Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> HDD->HDD

Перенос FreeBSD с одного жёсткого диска на другой

Автор: lissyara.


    Появилась необходимость перенести работающую систему - почтовый сервер (FreeBSD4.11) с одного диска на другой. На старом был массив, софтверный RAID организованный при помощи atacontrol, и в нём отдуплился один диск. Такого же не было, купили два новых, большего размеру, посему на тестовой машине поставил эксперимент по переносу  меньшего диска на больший. Его листинг и выкладываю, с комментариями.
   Имеем один диск в системе:
/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G    14K   1.8G     0%    /tmp
/dev/ad0s1f    20G   3.7G    14G    21%    /usr
/dev/ad0s1g   5.1G   6.1M   4.6G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc

/usr/home/lissyara/>dmesg | grep "^[a][t|d][a|0-9]"
atapci0: <VIA 8235 ATA133 controller> port 0xfc00-0xfc0f at device 17.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
ad0: 29325MB <Maxtor 6E030L0> [59582/16/63] at ata0-master UDMA133
/usr/home/lissyara/>

После установки второго на второй канал ATA получаем:
/usr/home/lissyara/>dmesg | grep "^[a][t|d][a|0-9]"
atapci0: <VIA 8235 ATA133 controller> port 0xfc00-0xfc0f at device 17.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
ad0: 29325MB <Maxtor 6E030L0> [59582/16/63] at ata0-master UDMA133
ad2: 190782MB <ST3200822A> [387621/16/63] at ata1-master UDMA100
/usr/home/lissyara/>

Диск разбиваем при помощи /stand/sysinstall, можно руками - но это не для слабонервных, я делал один раз в жизни, но впечатлений хватило надолго. Не забываем сделать раздел активным (загрузочным)! Прикол в следующем, если для будущего корневого раздела, поставить точку монтирования отличную от "/" то он не присваивает разделу букву "a". Нужно проделать такие комбинации - установить при создании раздела точку монтирования "/", затем поменять её клавишей "M".
Disk: ad2       Partition name: ad2s1   Free: 389668226 blocks (190267MB)

Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    /             512MB UFS   Y

Получится так:
Disk: ad2       Partition name: ad2s1   Free: 389668226 blocks (190267MB)

Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    /mnt/root     512MB UFS   Y

Потом второй прикол, то, что если сразу все разделы настругать, то он не разобьёт диск, ругнётся на какую-то ошибку. Посему, записываем изменения буковкой "W", выходим, заходим снова в /stand/sysinstall и делаем остальные разделы. Получается примерно так (корневой раздел не надо по второму разу монтировать, он уже разбит и смонтирован)
Disk: ad2       Partition name: ad2s1   Free: 0 blocks (0MB)

Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    <none>       512MB  UFS   Y
ad2s1b    swap         2048MB SWAP
ad2s1e    /mnt/tmp     2048MB UFS+S Y
ad2s1f    /mnt/usr   153600MB UFS+S Y
ad2s1g    /mnt/var    32571MB UFS+S Y

Снова сохраняем изменения нажатием "W", выходим, и имеем такой расклад:
/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G    18K   1.8G     0%    /tmp
/dev/ad0s1f    20G   3.7G    14G    21%    /usr
/dev/ad0s1g   5.1G   6.2M   4.6G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc
/dev/ad2s1a   504M   2.0K   464M     0%    /mnt/root
/dev/ad2s1e   2.0G   2.0K   1.8G     0%    /mnt/tmp
/dev/ad2s1f   148G   2.0K   136G     0%    /mnt/usr
/dev/ad2s1g    31G   2.0K    29G     0%    /mnt/var

Все названия записываем, или копируем экран. Перезагружаемся в однопользовательский режим, для чего надо жмякнуть `ESC` на отсчёте 10 секунд, и ввести:
boot -s

После загрузки монтируем разделы, описанные в /etc/fstab, такой командой:
# mount -a

Затем монтируем разделы, на которые будем копировать инфу (например /tmp монтировать не обязательно, обычно там ничё нету, и вообще он при перезагрузках у меня очищается.)
# mount /dev/ad0s1a /mnt/root
# mount /dev/ad2s1f /mnt/usr
# mount /dev/ad2s1g /mnt/var

После чего дампим инфу и переносим (каюсь, я это делал не в однопользовательском режиме, - лень было переписывать все команды руками, да и система не боевая, на рабочем серваке тоже буду делать в однопользовательском)

# ( dump -0f - / ) | ( cd /mnt/root ; restore -rf - )
  DUMP: Date of this level 0 dump: Thu Aug 10 17:59:02 2006
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/ad0s1a (/) to standard output
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 74881 tape blocks.
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
expected next file 21899, got 21898
  DUMP: DUMP: 75574 tape blocks
  DUMP: finished in 11 seconds, throughput 6870 KBytes/sec
  DUMP: DUMP IS DONE
#
#
#
# ( dump -0f - /var ) | ( cd /mnt/var ; restore -rf - )
  DUMP: Date of this level 0 dump: Thu Aug 10 17:59:25 2006
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/ad0s1g (/var) to standard output
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 6638 tape blocks.
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: DUMP: 7512 tape blocks
  DUMP: finished in 5 seconds, throughput 1502 KBytes/sec
  DUMP: DUMP IS DONE
#
#
#
# ( dump -0f - /usr ) | ( cd /mnt/usr ; restore -rf - )
  DUMP: Date of this level 0 dump: Thu Aug 10 17:59:55 2006
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/ad0s1f (/usr) to standard output
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 3957963 tape blocks.
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 61.22% done, finished in 0:03
  DUMP: 99.59% done, finished in 0:00
  DUMP: DUMP: 4080794 tape blocks
  DUMP: finished in 636 seconds, throughput 6416 KBytes/sec
  DUMP: DUMP IS DONE
#

Если разделы совпадают, по названиям, то ничё не делаем, если же не совпадают то вначале правим файл /etc/fstab. После чего даём такие команды:
# sync
# umount /mnt/root/
# umount /mnt/usr/
# umount /mnt/var/
# shutdown -h now

Выключаем питание, убираем старый хард, на его место подрубаем новый. Загружаемся.
Смотрим, чё получилось:
/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G  10.0K   1.8G     0%    /tmp
/dev/ad0s1f   148G   3.8G   132G     3%    /usr
/dev/ad0s1g    31G   6.8M    29G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc
/usr/home/lissyara/>

Всё нормально. У меня корректно перенеслось всё даже в многопользовательском режиме, но это тестовая машина, и хотя на ней стит куча ПО, с ней кроме меня никто не работает. Посему не надо на рабочих серваках так делать. Надо в однопользовательском!



размещено: 2006-08-11,
последнее обновление: 2006-08-11,
автор: lissyara


Andrey, 2006-08-23 в 4:10:29

Лет десять назад на линухе это делалось простой но до ужаса удобной утилиткой cpio...

GeT, 2006-08-23 в 10:14:12

Делал аналогично, только использовал не DUMP, а просто копировал все командой PAX.

playnet, 2006-11-14 в 22:21:30

Зачем вообще дампом копировать.. Достаточно поставить новый диск, загрузиться с СД, диск разметить, поставить базовую часть системы, а затем просто поверх все скопировать и обновить при необходимости загрузчик. Все.

npanop, 2006-11-15 в 8:43:01

cd /
find -mount -print | cpio -pmvdu <mount point>

Dimast, 2006-11-16 в 1:56:01

На мой взгляд лучше этой статьи еще не придумали.

http://www.opennet.ru/base/sys/dup_freebsd.txt.html

Snatch, 2006-11-16 в 10:55:38

есть такая программа COPYR.DMA http://copyr.tetroniks.ru/download/copyrR13.zip , она под DOS (извините). так вот ей совершенно пофигу, что с чего копировать, лишь бы харды рабочие были, она посекторно копирует, поэтому выходит чудный клон

PREVED, 2007-01-13 в 23:21:52

Неоригинально. И заколебали уже :)

ans, 2007-06-07 в 7:50:28

Спасибо помогло :)

silentshade, 2007-09-07 в 0:53:28

автору спасибо, весь процесс занимает 10 минут (не считая времени копирования)

WarWar, 2007-11-07 в 14:05:46

оЧипятка вышла...
# mount /dev/ad0s1a /mnt/root
# mount /dev/ad2s1f /mnt/usr
# mount /dev/ad2s1g /mnt/var

OLD, 2007-11-13 в 13:36:14

В портах есть прога clonehdd. :)

gruz0, 2008-02-16 в 12:31:38

Клонировал через pax :-)

nero777, 2008-02-17 в 13:15:32

молодец! как я раньше не знал
о твоём сайте. всё с толком и разумно.
только надо включать foot shooting!
спасибо из Киева.

nero777, 2008-02-17 в 13:22:50

кстати,для клонирования постоянно
пользуюсь Acronis Boot TIS 9.1.3677
с сетевой поддержкой.Только немного
подправить кое-что.Лучшего не встречал.

dserga, 2008-05-26 в 21:42:33

Маленькое замечание, если хотите перелить копию с работающей системы и не получить залоченных файлов, которые не сдампились (скажем работающая база mysql), то надо так:
dump -0Lf, и далее по тексту все тоже самое. Тогда вы будете уверены, что все сдампилось путем.

ln, 2008-11-06 в 12:43:24

dump -a0Lf - юзать лучше.

COPYR.DMA, делает тоже что и dd? - для конкретной задачи не подходит.

я sysinstall-ом только нарезаю диски на слайсы, так как считать сектора в fdisk долго и лениво, для всего остального sysinstall хреново приспособлен, ИМХО
после нарезания слайсов:
bsdlabel -w /dev/ad2s1
bsdlabel -e /dev/ad2s1
newfs -O2 -U /dev/ad2s1a
mount /dev/раздел /куданадо
cd /куданадо && dump -a0Lf- /чтонадо|restoty -rf-
vim /куданадо/etc/fstab
boot0cfg -Bs1 /dev/ad2
bsdlabel -B /dev/ad2s1

кстати юзайте -L в newfs, glabel избавляет от головных болей перетыкания винта в другую дырку контроллера.

Sweeper_jr, 2008-11-20 в 13:04:00

Спасибо Лис!
Получилось почти с первого раза - не забывайте про правку fstab на новом винте, буквы слайсов обычно не совпадают !

Algor, 2009-03-14 в 22:55:32

К сожалению сейчас проверить не могу, но насколько я помню диск можно разбивать так:

fdisk -BI /dev/ad0
cat << EOF > labels
a: 500M 0 4.2BSD
b: 1G * swap
e: 2G *
g: 5G *
f: * *
EOF
bsdlabel -RB ad0s1 labels
newfs ad0s1a
newfs ad0s1e
newfs ad0s1f
newfs ad0s1g

Algor, 2009-03-14 в 23:06:00

К сожалению сейчас проверить не могу, но насколько я помню диск можно разбивать и не считая сектора:
fdisk -BI /dev/ad0
cat << EOF > labels
a: 500M 0 4.2BSD
b: 1G   * swap
c: *    * unused
e: 2G   * 4.2BSD
f: *    * 4.2BSD
g: 5G   * 4.2BSD
EOF
bsdlabel -RB ad0s1 labels
newfs ad0s1a
newfs ad0s1e
newfs ad0s1f
newfs ad0s1g

MIR, 2009-03-31 в 23:30:21

В статье не написано, но! После создания ad2s1a (до второго запуска sysinstall) нужно отмонтировать его из /mnt/root, иначе ничего не получится )))

MIR, 2009-03-31 в 23:34:29

Уточнение. Если не отмонтируете, вы не сможете "нарезать" остальные партиции.

Превед, 2009-05-08 в 1:18:11

Акронис, два клика мышки и всё.

lissyara, 2009-05-11 в 0:55:18

A давно оно научилось UFS понимать?

MobileSfinks, 2009-09-03 в 11:21:03

Лис пасиб за статью. Единственное тут человек правильно написал я на это напоролся - было бы неплохо поправить:

MIR, 2009-03-31 в 23:30:21
В статье не написано, но! После создания ad2s1a (до второго запуска sysinstall) нужно отмонтировать его из /mnt/root, иначе ничего не получится )))
MIR, 2009-03-31 в 23:34:29
Уточнение. Если не отмонтируете, вы не сможете "нарезать" остальные партиции.

MobileSfinks, 2009-09-03 в 12:08:27

Ещё момент:
Диск взял не новый, и до этого он был размечен под NTFS.
В итоге sysinstall некорректно добавлял слайс и партишены. После первого перезапуска у меня выдавало тип файловой системы ntfs/"чёто-там".

Накопал такую вещь:
dd if=/dev/zero of=/dev/ad1 bs=512 count=32
fdisk -BI ad1

ставим BSDметку на слайс:
dd if=/dev/zero of=/dev/ad1s1 bs=512 count=32
bsdlabel -w -B ad1s1

После этого всё сразу нормально разбилось и разметилось в sysinstall

(оригинал статьи из которой взято:

Тут

DemonSKED, 2009-11-15 в 13:33:08

Мда, если не в сингл моде то мускул не может создать сокет, нгинкс не пашет, так можно долго продолжать.

lissyara, 2009-11-15 в 13:46:30

kldload hand.ko
kldunload ass.ko

DemonSKED, 2009-11-17 в 13:47:10

Ну лис, это не смешно. На 7.2 в многопользовательском не получилось нормально перенести. В однопользовательском все перенеслось и работает.

hREX, 2010-07-04 в 18:41:38

Не понимаю, почему не смонтировать например так:
# mount /dev/ad2s1a /mnt
# mount /dev/ad2s1f /mnt/usr
# mount /dev/ad2s1g /mnt/var

yurkinson, 2010-07-12 в 17:40:44

Если делать клона, то делаю этим:
/usr/ports/sysutils/clonehdd

vlad_ber, 2010-08-19 в 12:32:18

clonehdd не корректно скопировало разделы.
У меня было два bsd раздела, первый с системой, второй для данных. Программа на новом диске создала ОДИН bsd раздел и второй раздел исходного диска сделала в виде слайса.
В конечном итоге получилась рабочая система, но все же полностью доверять утилите clonehdd я бы не стал.

108380810, 2011-04-11 в 15:43:57

Спасибо за статью, только что проделал на своем сервере операцию по переносу FreeBSD 6.2 со старого и маленького винта на новый большой! Все завелось без проблем!

RAGNAR, 2012-06-12 в 17:37:18

этот способ подходит для переноса RAID 1 с меньшего на больший винт, преде этим нужно либо убить raid либо потом потом вручную грузиться и заного его создоваь



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0571 секунд
Из них PHP: 32%; SQL: 68%; Число SQL-запросов: 86 шт.
Исходный размер: 50761; Сжатая: 10811