FreeBSD - Феникс, возрожденный из DUMP-a

Блог им. dreamhunter
… Сколько времени я уговаривал админа, чтобы выделил мне виртуалку. И главное не забавы для, а дела ради. И с какой радостью/скоростью мне ее грохнули. Молодцы ребятки. Все правильно сделали. Одно только неправильно сделали — предупредили меня о том, что все грохнут за пару часов до времени «Ч».

Задача: эвакуировать сервер с VMWare куда угодно. Например на VirtualBox.

Имеем: виртуальную машину FreeBSD на VMWare кластере и очень мало времени.

Dump


У нас очень мало времени, потому первым делом нужно сделать dump. Под рукой только наш laptop с проклятой вендой.
открываем доступ к папке c:\backup  (не важно где на самом деле, главное делаем это очень быстро)
# mkdir /mnt/smb
# mount_smbfs -E koi8-r:cp866 -W <domainname> -I 10.xxx.xxx.9 //<username>@<computername>/backup /mnt/smb
# df -h
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/da0s1a     44G     17G     23G    42%    /
devfs           1.0k    1.0k      0B   100%    /dev
# dump -af /mnt/smb/da0s1a.dump /dev/da0s1a

… пошло качаться. Немного волнуемся конечно, потому что времени в обрез. Мне лично второго шанса сделать дамп уже не дали.
В итоге мы имеем дамп нашей виртуалки. Насколько я читал, утилита dump настолько хороша, что ее можно применять для резервного копирования на постоянно работающих серверах. Далее идем крыть матом всех, кто участвовал в уничтожении сервера и пить кофе.

Restore

… Поостыв начинаем думать, как воскресить сервер, имея только его душу.

Естественно начинаем с того, что подготавливаем для него среду. Я воспользовался VirtualBox. Об этой программе в будущем будут сложенны баллады и множество легенд в виду ее простоты, надежности и бесплатности. Олдфаги будут вспоминать о ней с улыбкой на лице, устремляя свой взор ненадолго куда-то вверх.
Создаем новую виртуальную машину. Указываем размеры HDD и все остальное. Советую убедиться, что сетевая работает в режиме моста, а не NAT (хотя тут зависит от потребностей).

Итак, виртуальную среду мы подготовили (хотя могли и аппаратную). Теперь займемся ее начальной подготовкой. Лично мне ничего умнее в голову не пришло, чем скачать boot-only ISO образ freebsd c официального сайта. После девятой версии в эти образы включен «liveCD». Его и запускаем на свежей виртуалке. Теперь нам нужно нарезать слайсы и свопы. Для этого я воспользовался утилитой sysinstall:
# sysinstall

 ┌────────── FreeBSD/amd64 9.1-RELEASE - sysinstall Main Menu ───────────┐
 │ Welcome to the FreeBSD installation and configuration tool.  Please   │
 │ select one of the options below by using the arrow keys or typing the │
 │ first character of the option name you're interested in.  Invoke an   │
 │ option with [SPACE] or [ENTER].  To exit, use [TAB] to move to Exit.  │
 │ ┌───────────────────────────────────────────────────────────────────┐ │
 │ │   Usage         Quick start - How to use this menu system         │ │
 │ │  Standard       Begin a standard installation (recommended)       │ │
 │ │  Express        Begin a quick installation (for experts)          │ │
 │ │   Custom        Begin a custom installation (for experts)         │ │
 │ │  Configure      Do post-install configuration of FreeBSD          │ │
 │ │  Doc            Installation instructions, README, etc.           │ │
 │ │  Keymap         Select keyboard type                              │ │
 │ │  Options        View/Set various installation options             │ │
 │ │  Fixit          Repair mode with CDROM/DVD/floppy or start shell  │ │
 │ │  Upgrade        Upgrade an existing system                        │ │
 │ │  Load Config..  Load default install configuration                │ │
 │ │  Index          Glossary of functions                             │ │
 │ └───────────────────────────────────────────────────────────────────┘ │
 ├───────────────────────────────────────────────────────────────────────┤
 │                        [ Select ]    X Exit Install                   │
 └───────────────────────────────────────────────────────────────────────┘

В этой утилите я вошел в раздел Configure:
┌─────────────────────────── FreeBSD Configuration Menu ────────────────────────────┐
│ If you've already installed FreeBSD, you may use this menu to customize           │
│ it somewhat to suit your particular configuration.  Most importantly,             │
│ you can use the Packages utility to load extra "3rd party"                        │
│ software not provided in the base distributions.                                  │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │ X Exit                       Exit this menu (returning to previous)           │ │
│ │  Distributions               Install additional distribution sets             │ │
│ │  Documentation installation  Install FreeBSD Documentation set                │ │
│ │  Packages                    Install pre-packaged software for FreeBSD        │ │
│ │  Root Password               Set the system manager's password                │ │
│ │  Fdisk                       The disk slice (PC-style partition) editor       │ │
│ │  Label                       The disk label editor                            │ │
│ │  User Management             Add user and group information                   │ │
│ │  Console                     Customize system console behavior                │ │
│ │  Time Zone                   Set which time zone you're in                    │ │
│ │  Media                       Change the installation media type               │ │
│ │  Mouse                       Configure your mouse                             │ │
│ │  Networking                  Configure additional network services            │ │
│ │  Security                    Configure system security options                │ │
│ │  Startup                     Configure system startup options                 │ │
│ │  TTYs                        Configure system ttys.                           │ │
│ │  Options                     View/Set various installation options            │ │
│ │  HTML Docs                   Go to the HTML documentation menu (post-install) │ │
│ │  Load KLD                    Load a KLD from a floppy                         │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────────────────────────┤
│                              [  OK  ]       Cancel                                │
└────────────────[ Press F1 for more information on these options ]─────────────────┘

Сперва запускаем Fdisk:
┌─────────────────── User Confirmation Requested ────────────────────┐
│ WARNING:  It is safe to use a geometry of 104025/16/63 for ada0 on │
│ computers with modern BIOS versions.  If this disk is to be used   │
│ on an old machine it is recommended that it does not have more     │
│ than 65535 cylinders, more than 255 heads, or more than            │
│ 63 sectors per track.                                              │
│                                                                    │
│ Would you like to keep using the current geometry?                 │
│                                                                    │
├────────────────────────────────────────────────────────────────────┤
│                        [ Yes ]         No                          │
└────────────────────────────────────────────────────────────────────┘

Конечно же выбираем Yes. В появившемся окне жмем «A» что бы использовать весь диск и жмем «S» что бы сделать его загрузочным.
Disk name:      ada0                                   FDISK Partition Editor
DISK Geometry:  104025 cyls/16 heads/63 sectors = 104857200 sectors (51199MB)

Offset       Size(ST)        End     Name  PType       Desc  Subtype    Flags

         0         63         62        -     12     unused        0
        63  104857137  104857199   ada0s1      8    freebsd      165    A
 104857200        400  104857599        -     12     unused        0






The following commands are supported (in upper or lower case):

A = Use Entire Disk   G = set Drive Geometry   C = Create Slice
D = Delete Slice      Z = Toggle Size Units    S = Set Bootable   | = Expert m.
T = Change Type       U = Undo All Changes     W = Write Changes  Q = Finish


Use F1 or ? to get more help, arrow keys to select.

Далее жмем «Q» и выбираем «Standard».
┌─────────────────── Install Boot Manager for drive ada0? ───────────────────┐
 │ FreeBSD comes with a boot manager that allows you to easily                │
 │ select between FreeBSD and any other operating systems on your machine     │
 │ at boot time.  If you have more than one drive and want to boot            │
 │ from the second one, the boot manager will also make it possible           │
 │ to do so (limitations in the PC BIOS usually prevent this otherwise).      │
 │ If you have other operating systems installed and would like a choice when │
 │ booting, choose "BootMgr". If you would prefer to keep your existing       │
 │ boot manager, select "None".                                               │
 │                                                                            │
 │                                                                            │
 │ ┌────────────────────────────────────────────────────────────────────────┐ │
 │ │    Standard  Install a standard MBR (non-interactive boot manager)     │ │
 │ │    BootMgr   Install the FreeBSD Boot Manager                          │ │
 │ │    None      Do not install a boot manager                             │ │
 │ └────────────────────────────────────────────────────────────────────────┘ │
 ├────────────────────────────────────────────────────────────────────────────┤
 │                           [  OK  ]       Cancel                            │
 └────────────────────────────────────[  ]────────────────────────────────────┘

Естественно нас предупредят, что все будет удалено с раздела — подтверждаем.
Теперь нам надо «напилить» слайсы. В том же разделе Configure видим пункт Label. У меня была FreeBSD9.1. Именно с 9 версии FreeBSD стала проповедовать идеологию винчестер — 1 слайс. Я если честно за такую систему. Это раньше было необходимо распределять слайсы по геометрии HDD в виду их низкой производительности. На современных хранилищах давно все работает иначе (особо в SAN/NAS системах) потому я выбираю путь комфорта.
… так о чем это я? Ах да. У нас всего один слайс. Потому на диске я создаю такую же структуру:
Объем HDD — 50G. Раздел "/" — 45G, Swap — 5G.
FreeBSD Disklabel Editor

Disk: ada0      Partition name: ada0s1  Free: 0 blocks (0MB)

Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ada0s1a   /           46080MB UFS2   Y               <------------ Запишите на бумажке как
ada0s1b   swap         5119MB SWAP                                 называется ваш диск!!!









The following commands are valid here (upper or lower case):
C = Create        D = Delete   M = Mount pt.            W = Write
N = Newfs Opts    Q = Finish   S = Toggle SoftUpdates   Z = Custom Newfs
T = Toggle Newfs  U = Undo     A = Auto Defaults        R = Delete+Merge

Use F1 or ? to get more help, arrow keys to select.

Ну вот кажется можно попытаться начинать восстанавливать систему. В том же разделе Configure входим в раздел Networking->Interfaces. Вводим сетевые настройки и наконец то выходим из Sysinstall

Монтирование разделов

Нам необходимо подключить shared папку, на которой находятся данные:
# mount_smbfs -E koi8-r:cp866 -W <domainname> -I 10.xxx.xxx.9 //<username>@<computername>/backup /tmp

Теперь подключим размеченный нами диск:
# mount /dev/ada0s1a /mnt


И наконец приступим к процедуре восстановления:

cd /mnt | restore -rf /tmp/da0s1a.dump

… процесс пошел. Длиться он будет довольно долго. Потому идем снова пить кофе, во время этого поносим админов, которые снесли старую виртуалку. Может быть пишем докладные на них. Тут опять же зависит от вашего случая. К слову сказать что то мне подсказывает, что можно было не монтировать диск, а воспользоваться вариантом:
restore -rf /tmp/da0s1a.dump /dev/ada0s1a

Но тут есть загвоздка: Имена дисков различаются, потому нам все равно понадобится подключить раздел что бы отредактировать /etc/fstab. Собственно после окончания восстановления редактируем этот файл:
# ee /mnt/etc/fstab

… у меня da0s1a изменилось на ada0s1a.
Теперь кажется все. Хочу предупредить, что вероятно у вас имеется в загрузке перекомпелированное ядро, заточенное под VMWare или сервер, на котором она находилась. Если так — идем вот по этой ссылке и восстанавливаем первоначальное.
На этом кажется все. Можно попытаться загрузиться с HDD.

Удачи вам!

5 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.