FreeBSD - Феникс, возрожденный из DUMP-a 30.03 dreamhunter http://sysadminblog.ru/freebsd/2013/03/30/freebsd-feniks-vozrozhdennyy-iz-dump-a.html … Сколько времени я уговаривал админа, что бы выделил мне виртуалку. И главное не забавы для, а дела ради. И с какой радостью/скоростью мне ее грохнули. Молодцы ребятки. Все правильно сделали. Одно только неправильно сделали — предупредили меня о том, что все грохнут за пару часов. Задача: эвакуировать сервер с VMWare куда угодно. Например на VirtualBox. Имеем: виртуальную машину FreeBSD на VMWare кластере и очень мало времени. Dump У нас очень мало времени, потому первым делом нужно сделать dump. Под рукой только наш laptop с проклятой вендой. открываем доступ к папке c:\backup (не важно где на самом деле, главное делаем это очень быстро) Code: # 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: Code: # 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: Code: ┌─────────────────────────── 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: Code: ┌─────────────────── 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» что бы сделать его загрузочным. Code: 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». Code: ┌─────────────────── 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 системах) потому я выбираю путь комфорта. … так о чем это я? Ах да. У нас всего один слайс. Потому на диске я создаю такую же структуру: Code: Объем 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 папку, на которой находятся данные: Code: # mount_smbfs -E koi8-r:cp866 -W <domainname> -I 10.xxx.xxx.9 //<username>@<computername>/backup /tmp Теперь подключим размеченный нами диск: Code: # mount /dev/ada0s1a /mnt И наконец приступим к процедуре восстановления: Code: cd /mnt | restore -rf /tmp/da0s1a.dump … процесс пошел. Длиться он будет довольно долго. Потому идем снова пить кофе, во время этого поносим админов, которые снесли старую виртуалку. Может быть пишем докладные на них. Тут опять же зависит от вашего случая. К слову сказать что то мне подсказывает, что можно было не монтировать диск, а воспользоваться вариантом: Code: restore -rf /tmp/da0s1a.dump /dev/ada0s1a Но тут есть загвоздка: Имена дисков различаются, потому нам все равно понадобится подключить раздел что бы отредактировать /etc/fstab. Собственно после окончания восстановления редактируем этот файл: Code: # ee /mnt/etc/fstab … у меня da0s1a изменилось на ada0s1a. Теперь кажется все. Хочу предупредить, что вероятно у вас имеется в загрузке перекомпелированное ядро, заточенное под VMWare или сервер, на котором она находилась. Если так — идем вот по этой ссылке и восстанавливаем первоначальное. На этом кажется все. Можно попытаться загрузиться с HDD. Удачи вам!