URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75258
[ Назад ]

Исходное сообщение
"Замена жёсткого диска: invalid partition"

Отправлено alexy , 20-Июл-07 14:36 
На сервере FreeBSD использовалось два диска: рабочий и резервный (полная копия). После того, как один из дисков "приказал долго жить" было принято решение о смене на два аналогичных. Сейчас подключены старый диск и два новых. Пытаюсь сделать полную копию как учат ЧАВО и форумы:
На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю первый раздел для будущей корневой / и записываю. Монтирую в /mnt/. Выхожу, размонтирую. Затем через disklabel меняю обозначение нового раздела с ad2s1e на ad2s1a. Затем снова в sysinstall создаю остальные разделы. Записываю, выхожу. Копирую содержимое старого диска на новый при помощи
# tar cplf - / /usr/ /var/ /var/ftp/ | (cd /mnt; tar xvpf -)
(у меня ftp на отдельном разделе)
Далее копирую загрузочную запись
# dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
Выключаю машину. Перекидываю шлейф так, чтобы новый диск был первичным на первом канале IDE. Включаю и получаю
invalid partition
Гружусь со старого диска и в sysinstall вижу что слайсы имеют совершенно другой размер, чем я определял ранее.
В чём я ошибаюсь?
Может проблема в переносе загрузочной записи? Или проблема в некорректном определении геометрии (при начале разбивки диска sysinstall ругнулась на геометрию)?

Содержание

Сообщения в этом обсуждении
"Замена жёсткого диска: invalid partition"
Отправлено DN , 20-Июл-07 16:11 
>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.

Вы определили слайсы на /dev/ad2 .

>Далее копирую загрузочную запись
># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1

После этой операции Вы снова переопределили слайсы на /dev/ad2 .

Воспользуйтесь boot0cfg .

Копировать тома /dev/ad0s1[ade] на  /dev/ad2s1[ade]
лучше через утилиты dump/restore, как написано в
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...


"Замена жёсткого диска: invalid partition"
Отправлено alexy , 20-Июл-07 23:57 
>>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.
>
>Вы определили слайсы на /dev/ad2 .

Вначале я определил лишь первый раздел. Остальные ad2s1/befg/ определял на следующем шаге.

>
>>Далее копирую загрузочную запись
>># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
>
>После этой операции Вы снова переопределили слайсы на /dev/ad2 .
>
>Воспользуйтесь boot0cfg .

А sysinstall не определяет загрузчик. Она ведь спрашивает об этом после определения partitions? (для общего развития)

>
>Копировать тома /dev/ad0s1[ade] на  /dev/ad2s1[ade]
>лучше через утилиты dump/restore, как написано в
>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...

Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?


"Замена жёсткого диска: invalid partition"
Отправлено DN , 22-Июл-07 23:52 
>>>На новом диске создаю через /stand/sysinstall слайсы, далее не покидая оболочки создаю
>>>первый раздел для будущей корневой / и записываю. Монтирую в /mnt/.
>>
>>Вы определили слайсы на /dev/ad2 .
>
>Вначале я определил лишь первый раздел. Остальные ad2s1/befg/ определял на следующем шаге.

Это не важно.

>>>Далее копирую загрузочную запись
>>># dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1
>>
>>После этой операции Вы снова переопределили слайсы на /dev/ad2 .
>>
>>Воспользуйтесь boot0cfg .
>
>А sysinstall не определяет загрузчик. Она ведь спрашивает об этом после определения
>partitions? (для общего развития)

В sysinstall есть такая операция , но речь не об этом.
Вот этой командой dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1  Вы
переписали снова загрузчик и слайсы на ad2, которые определяли ранее через sysinstall.

>>Копировать тома /dev/ad0s1[ade] на  /dev/ad2s1[ade]
>>лучше через утилиты dump/restore, как написано в
>>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...
>
>Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?

Только pipe и /tmp для чтения/записи.

# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore xf -

И т.д.


"Замена жёсткого диска: invalid partition"
Отправлено alexy , 23-Июл-07 15:02 
>[оверквотинг удален]
>>Как я понимаю для dump/restore нужно дополнительное промежуточное место хранения?
>
>Только pipe и /tmp для чтения/записи.
>
># newfs /dev/ad1s1a
># mount /dev/ad1s1a /mnt
># cd /mnt
># dump 0af - / | restore xf -
>
>И т.д.

Резюмируя:
Через sysinstall создаю раздел для /. Через disklabel меняю его с ad2s1e на ad2s1a. Далее опять в sysinstall создаю остальные и задаю точки монтирования в /mnt. Через dump/restore переношу содержимое с ad0 на ad2. Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система одна и думаю в этом случае boot0cfg не нужен).


"Замена жёсткого диска: invalid partition"
Отправлено DN , 23-Июл-07 16:45 
>Резюмируя:
>Через sysinstall создаю раздел для /.
> Через disklabel меняю его с ad2s1e
>на ad2s1a.

А это зачем Вы делаете?

>Далее опять в sysinstall создаю остальные и задаю точки
>монтирования в /mnt.
>Через dump/restore переношу содержимое с ad0 на ad2.

dump/restore работает с отдельным разделом типа /dev/ad0s1a , а не сo всем
диском /dev/ad0 .

>Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система
>одна и думаю в этом случае boot0cfg не нужен).

Систем на одном диске может быть много, а начальный загрузчик на диске один.
Лучше чем здесь, не написано:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...


"Замена жёсткого диска: invalid partition"
Отправлено hvosting , 24-Июл-07 02:04 
если новый диск больше чем старый, и претензий к разбивке винта нет, можно полностью перелить винт в винт dd if=/dev/ad0 of=/dev/ad1 bs=32768

при bs=32768 винт на 200 гиг копируется за пару часов.


"Замена жёсткого диска: invalid partition"
Отправлено alexy , 24-Июл-07 07:30 
>если новый диск больше чем старый, и претензий к разбивке винта нет,
>можно полностью перелить винт в винт dd if=/dev/ad0 of=/dev/ad1 bs=32768
>
>при bs=32768 винт на 200 гиг копируется за пару часов.

Я хотел бы чтобы винты новые были больше, чем старые. Но кто начальник, тот дурак и принял решение о покупке IDE(!) диска такого же объёма(!) (что кроме смеха у меня ничего не вызвало). В итоге формально винты по 80 ГБ, но новые на почти 2 ГБ меньше.


"Замена жёсткого диска: invalid partition"
Отправлено alexy , 24-Июл-07 07:26 
>>Резюмируя:
>>Через sysinstall создаю раздел для /.
>> Через disklabel меняю его с ad2s1e
>>на ad2s1a.
>
>А это зачем Вы делаете?
>

sysinstall первому разделу на последующих дисках всегда присваивает adXs1e

>>Далее опять в sysinstall создаю остальные и задаю точки
>>монтирования в /mnt.
>>Через dump/restore переношу содержимое с ad0 на ad2.
>
>dump/restore работает с отдельным разделом типа /dev/ad0s1a , а не сo всем
>
>диском /dev/ad0 .
>

Это понятно, я не о конкретных командах.

>>Выключаю, перекидываю шлейф и я должен загрузиться? Ничего не упустил. (Система
>>одна и думаю в этом случае boot0cfg не нужен).
>
>Систем на одном диске может быть много, а начальный загрузчик на диске
>один.
>Лучше чем здесь, не написано:
>http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.h...

А почему не?:
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/faq/disks.html...
А там говориться о применении boot0cfg лишь для возможности загрузки с разных дисков.



"Замена жёсткого диска: invalid partition"
Отправлено alexy , 24-Июл-07 10:49 
В итоге:
fdisk -B ad2 - не помог. Результат тот же: invalid partition. boot0cfg не использовал.
Оказалось достаточным всё сделать в sysinstall.
Если восстановить всю последовательность действий:
На новом диске в sysinstall создать слайсы. Выйти в label - создать первый раздел. Выйти из sysinstall. Изменить обозначение раздела, конкретно поменять adXs1e на adXs1a через disklabel:
disklabel -e /dev/ad2s1
например.
Войти снова в sysinstall и создать оставшиеся разделы. Скопировать поочерёдно содержимое существующих разделов при помощи dump/restore как сказано выше. Снова войти в sysinstall и первому сласу присвоить bootable. Записать. Выйти. Выключить. Перекинуть шлейфы или перенастроить BIOS. Вуаля!

Вот сделать бы это по скрипту. Что у нас за нажатие "y" отвечает? man yes? Примерно
yes dump 0af - / | restore xf -
Так?


"Замена жёсткого диска: invalid partition"
Отправлено DN , 24-Июл-07 12:00 
>[оверквотинг удален]
>например.
>Войти снова в sysinstall и создать оставшиеся разделы. Скопировать поочерёдно содержимое существующих
>разделов при помощи dump/restore как сказано выше. Снова войти в sysinstall
>и первому сласу присвоить bootable. Записать. Выйти. Выключить. Перекинуть шлейфы или
>перенастроить BIOS. Вуаля!
>
>Вот сделать бы это по скрипту. Что у нас за нажатие "y"
>отвечает? man yes? Примерно
>yes dump 0af - / | restore xf -
>Так?

Так .

Только dump потребует /tmp для записи, поэтому корневая система должна быть
"живая" ( не readonly).

dump -L0af - / | restore xf -

Для остальных
dump -0af - /usr | restore xf -
...

P.S.
Используете Вы отдельные системные утилиты или sysinstall, который эти
утилиты вызывает, БЕЗ РАЗНИЦЫ.


"Замена жёсткого диска: invalid partition"
Отправлено alexy , 24-Июл-07 13:38 
>P.S.
>Используете Вы отдельные системные утилиты или sysinstall, который эти
>утилиты вызывает, БЕЗ РАЗНИЦЫ.

А как тогда в sysinstall изменить ad2s1e на ad2s1a? И почему fdisk -B ad2 не сработал, а через sysinstall получилось?


"Замена жёсткого диска: invalid partition"
Отправлено DN , 24-Июл-07 15:24 
>>P.S.
>>Используете Вы отдельные системные утилиты или sysinstall, который эти
>>утилиты вызывает, БЕЗ РАЗНИЦЫ.
>
>А как тогда в sysinstall изменить ad2s1e на ad2s1a?

sysinstall вызывает bsdlabel (disklabel) с определенными параметрами.
Через sysinstall Вы не вызовите bsdlabel -e /dev/ad2s1.

>И почему fdisk -B ad2 не сработал, а через sysinstall получилось?

fdisk -B ad2 меняет  boot code , а не таблицу слайсов, и не делает диск
активным для загрузки .
Надо было откорректировать fdisk -u /dev/ad2