Предыстория.

Пришла партия машин - около 20 штук, плюс-минус две. В новый офис. Машины одинаковые, предназначены для установки Ubuntu Linux.

Проблема в том, что машины надо подготовить к работе в очень сжатые сроки, потому что вот-вот в офис переедет большая кодла менеждеров, снабженцев, бухгалтеров и проч.
Я сторонник концепции «Лучше день потерять, а потом за пять минут долететь». Поэтому вместо того, чтобы паниковать и лихорадочно и тупо ставить системы на все машины подряд - сели и стали думать.

Конечно, предварительно был поднят локальный репозиторий, поэтому установка убунты со всеми обновлениями не сильно зависела от скорости подключения к интернету и занимала от силы 10-15 минут. Опять же, заранее были подготовлены скрипты для установки необходимого софта, изначально в убунте отсутствующего.

И всё-таки. Полчаса времени на один компьютер - многовато.

Чтобы хоть как-то сэкономить время - надо было идти на клонирование систем. Благо и сама Ubuntu, и её лицензия легко позволяют это сделать.
В процессе раздумий была подготовлена эталонная машина.

Эталонная машина

Разметка диска:

РазделРазмерФайловая системаТочка монтирования
/dev/sda18 GBext3/
/dev/sda22 GBlinux swap-
/dev/sda3Остальное (~70 GB)ext3/home

На эталонную машину установлен весь необходимый софт, машина подключена к домену, настроено подключение к сети по DHCP, пользователь - только админ. Никакой информации о будущем пользователе, никакой персонализации.

Первое, что приходит в голову - записать весь винчестер эталонной машины (с системой и разметкой) в образ и распаковывать этот образ на каждой из 20 машин. С учётом того, что на каждом из компьютеров стояли 80-гиговые харды, распаковка образа занимала минимум 30 минут.
Выигрыша во времени - никакого.

В итоге созрело два решения. Первое - индивидуальное для каждой машины. Его мы оставили на будущее, для грядущих мелких партий компьютеров или вообще для одиночных поступлений. Второе - сетевое, которое успешно и применили.

Решение первое, индивидуальное

Подготавливается переносной USB-винчестер: во-первых, он делается загрузочным, во-вторых, на него заливается установочный образ Ubuntu (то есть создаётся что-то вроде установочной флешки, только в масштабах переносного винта) и, в-третьих, при загрузке с этого винчестера он сам монтируется в /media/usbdrive

На эталонной машине

Грузимся с нашего винта.
Создаём образ с загрузчиком и разметкой всего диска:

dd if=/dev/sda of=/media/usbdrive/sda-512.img bs=512 count=1

Обращаю внимание: здесь и дальше sda - это винчестер рабочих станций!
Создаём образ первого раздела, который с системой. Со сжатием gzip.

dd if=/dev/sda1 | gzip > /media/usbdrive/sda1.img

Операции создания этих образов - однократные. Занимают около 10 минут в сумме.

На пустой машине

Грузимся с нашего винта.
Восстанавливаем разметку на пустом диске с сохранённого образа:

dd if=/media/usbdrive/sda-512.img of=/dev/sda

Теперь sda1, sda2 и sda3 должны существовать.
Восстанавливаем первый раздел диска с сохранённого образа:

gzip -cd /media/usbdrive/sda1.img | dd of=/dev/sda1

Форматируем /dev/sda2 как swap, /dev/sda3 как ext3.
После этого перезагружаемся в свежую систему и монтируем /dev/sda3 в /home по UUID.

На подготовку каждой рабочей станции уходит около 10 минут.

Решение второе, сетевое

Одно слово: UDPcast.

UDPcast - это утилита для передачи файлов, которая может отправлять данные нескольким компьютерам в локальной сети одновременно. Это может использоваться, например, для того, чтобы установить целый ряд компьютерных рабочих мест за один раз. Преимущество UDPcast по сравнению с другими методами (nfs, ftp, неважно) состоит в том, что UDPcast использует возможности Ethernet UDP: установка 15 машин не займёт больше времени, чем установка только двух.

UDPcast может быть запущен с прилагаемого загрузочного образа busybox для установок ОС, или с командной строки - для других целей. Udpcast может быть загружен с компакт-диска, дискеты, или через сеть, используя PXE или Etherboot. Файл конфигурации (udpcfg.txt) может быть включен в эти загрузочные носители, чтобы пропустить меню настроек программы.

Создаётся загрузочный носитель, для определённости пусть это будет флешка.
Подготовить и скачать образ можно по этому адресу: http://udpcast.linux.lu/bootmedia.html

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

С флешки загружается эталонный компьютер. При загрузке настраивается сетевая карта, выбирается рабочее устройство (sda) и машина ставится в режим «передатчика», он же sender. Флешку можно вынимать сразу после загрузки.

С этой же флешки загружаются все пустые компьютеры. С одной разницей: они ставятся в режим «приёмника», он же receiver.
На экране эталонной машины можно видеть, как устанавливается соединение с каждой загруженной рабочей станцией-приёмником.

После того, как эталонная машина и все «пустышки» будут загружены, надо инициировать передачу данных, нажав пробел на эталоне. Эталон, он же передатчик, считывает данные со своего винчестера и отправляет их UDP-пакетом в сеть. Каждый из приёмников получает пакет, записывает его на свой винчестер и рапортует об этом передатчику.

Минусы

Машины-приёмники иногда отваливаются при заливке. Теряется связь, совсем.
В этом случае передатчик пытается связаться с приёмником, тратит на это несколько минут и только потом продолжает рассылку, вычеркнув инвалида из списка.

Плюсы

Простота использования, возможность создания «файла ответов», поддержка сжатия данных и многое-многое другое.

Установка 20 новых компьютеров заняла около 40 минут.


Bannndi
2011.04.03 21:37:02
#cid2002

Ответить

Подскажите, плиз. Я пытаюсь работать с ubuntu server 10.04 (веб сервер на VirtualBox), и мне нужно иметь возможность восстанавливать предыдущее состояние системы, если что-то пойдет не так. На Windows я пользовался акронисом и нортонгостом для создания образа, с которого и восстанавливал упавшую систему. А для убунту- что лучше использовать в таком случае? Гуевые программы я использовать не очень хочу, тем более если ОС более не грузится, то в любом случае нужно сначала загружаться с какого то LiveCD.
Можно конечно и тупо копировать файл VDI от VirtualBox. Но он у меня весит 16Гб, так что нужно более продвинутое негуевое решение для восстановления ОС UbuntuServer. Может быть есть какие мысли?

2011.04.03 23:08:43
#cid2003

Ответить

Я пытаюсь работать с ubuntu server 10.04 (веб сервер на VirtualBox)

Сразу вопросы:
1. Интересует какие системы стоят на хостовой (основной) и гостевой (в виртуалбоксе) системе?
2. Если и там, и там стоит убунта - чем обусловлено использование виртуальной машины?

Можно конечно и тупо копировать файл VDI от VirtualBox.

Для того, чтобы забэкапить состояние системы в виртуальной машине virtualbox - набираем на хосте:

VBoxManage snapshot "name"

"name" - имя или идентификатор виртуальной машины. Посмотреть можно с помощью VBoxManage list vms

Команда создаст снимок текущего состояния системы в виртуалбоксе. Носит инкрементный характер, то есть делается быстро (несколько секунд) и занимает мало места.

А вообще для копирования линуха особых ухищрений никаких не надо - достаточно скопировать корневой раздел с сохранением прав доступа к файлам. За исключением служебных файловых систем, типа /proc или /tmp, естественно.

Но даже это лишнее. Для веб-сервера можно сохранить все конфиги (к примеру апача, пхп и мускула, если используется LAMP), плюс регулярно делать снимки базы данных (mysqldump) и файлов для веба (rsync, /var/www)

Bannndi
2011.04.04 07:01:28
#cid2006

Ответить

1. Хостовая - XP SP3, гостевая - ubuntu server 10.04
2. ))
# VBoxManage snapshot "name"
Про это если можно поподробнее! Я не нашел командной консоли в VirtualBox...
# Команда создаст снимок текущего состояния системы в виртуалбоксе. Носит инкрементный характер, то есть делается быстро (несколько секунд) и занимает мало места.
Я часто вынужден запускать сервер с разных компов, поэтому мне нужно, чтобы возможность сделать восстановление системы была всегда со мной (ношу для этих целей внешний USB драйв на 60Гб). Пока мне не понятно, можно ли этими инкрементами пользоваться при таких обстоятельствах...
# А вообще для копирования линуха особых ухищрений никаких не надо - достаточно скопировать корневой раздел с сохранением прав доступа к файлам. За исключением служебных файловых систем, типа /proc или /tmp, естественно.
Вот, на этом поподробнее, пожалуйсто! Если я это дело скопирую в тарбол, к примеру на один из разделов этой же убунту-сервер, то как я смогу потом восстановить прежнее состояние системы? Grub2 не затронется, понятно. Но, если (допустим), система более не запускается, то понадобится воспользоваться LiveCD. И соответственно, с него получить доступ к резервной копии, и развернуть ее с заменой всех файлов (с сохранением прав). Теория понятна. А на практике- пока слабоваты мои знания, поэтому прошу помощи! Какая команда для создания правильной рез.копии? Как правильно развернуть систему из рез. копии?

2011.04.04 07:58:25
#cid2007

Ответить

Про это если можно поподробнее! Я не нашел командной консоли в VirtualBox...

Если честно - никогда не запускал виртуалбокс из под винды.

В линухах есть набор консольных утилит. Имена начинаются с VBox, --help для просмотра опций.
В виндах, возможно, есть такой же набор утилит для командной строки. Есть смысл поискать в папке с установленной программой.

Снять снимок можно и из графики, там есть закладка в основном окне. В каталоге Snapshots профиля виртуальной машины появляется инкрементная часть диска .vdi.

Я часто вынужден запускать сервер с разных компов, поэтому мне нужно, чтобы возможность сделать восстановление системы была всегда со мной (ношу для этих целей внешний USB драйв на 60Гб). Пока мне не понятно, можно ли этими инкрементами пользоваться при таких обстоятельствах...

Из графики: «Файл» - «Настройки». В разделе «Общие» указать путь к профилю - на внешнем USB.
Или, если виртуальная машина должна работать автономно (без внешнего USB) - каждый раз копировать нужные файлы.

Или развернуть настроенную систему не в виртуальной машине, а непосредственно на внешнем USB и запускаться с него.

Вот, на этом поподробнее, пожалуйсто! Если я это дело скопирую в тарбол, к примеру на один из разделов этой же убунту-сервер, то как я смогу потом восстановить прежнее состояние системы? Grub2 не затронется, понятно. Но, если (допустим), система более не запускается, то понадобится воспользоваться LiveCD. И соответственно, с него получить доступ к резервной копии, и развернуть ее с заменой всех файлов (с сохранением прав). Теория понятна. А на практике- пока слабоваты мои знания, поэтому прошу помощи! Какая команда для создания правильной рез.копии? Как правильно развернуть систему из рез. копии?

1. Загрузиться с LiveCD
2. Очистить системный раздел командой rm
3. Восстановить на системный раздел предварительно созданную копию командой cp
)))

Для правильного понимания теории - практика нужна обязательно.

Bannndi
2011.04.07 11:10:48
#cid2043

Ответить

Спасибо за помощь!

Bannndi
2011.04.07 11:18:34
#cid2044

Ответить

Единственную проблему, которую не решил - это не смог заставить работаь интернет и локалку для виртуалки. А так- ОС UbuntuServer запускается с разных компов, настроики сохранил на внешнем hdd. Перепробовал миллион вариантов, перегуглил весь гугл, и плюнул. Проще, с такими проблемами VB, сделать себе нормальный сервер на обычном железе.. То работает, то не работает, перезагрузка, смена настроек, перекинуть файлы, переустановить.... Пока не появится нормальная поддерживаемая сообществом Portable VirtualBox, я более ее касаться не хочу, наигрался)) Но спасибо!

2011.04.07 17:05:34
#cid2046

Ответить

Спасибо за помощь!

Всегда пожалуйста.

Единственную проблему, которую не решил - это не смог заставить работаь интернет и локалку для виртуалки.

Не знаю как в виндах, а в линухах проще всего сделать из графики - в свойствах сети виртуальной машины выставляем сетевой мост.
При этом гостевая система присутствует в той же подсети что и хостовая. Соответственно, надо после этого настроить сеть гостя.

Проще, с такими проблемами VB, сделать себе нормальный сервер на обычном железе.

Служба, которая используется регулярно, должна стоять на своём сервере, обязательно.
А проблемы VB немного преувеличены )

Portable VirtualBox

Это как? И, главное, - зачем?
(крепко задумался)

Bannndi
2011.04.08 00:50:08
#cid2049

Ответить

Объясню: сетевой мост, NAT , Host-only, - все эти способы по многу раз перепробовал. Сетевой мост работает отлично, но только на одном компе. Если настроил работу виртуалки на другом компе, то сеть то работает, то не работает. Потом, в итоге оказывается, что ни там ни там не работает. А ответственность я возлагаю на работоспособность виртуалки на разных компах - высокую. А у меня этих физ. компов , минимум 3, где мне нужно запускать ее, и сети там локальные другие. Хотя используется одинаковая зона, 10.2.1.Х Поэтому, я решил не использовать эту прогу. Но если юзать ее только на одном компе, то я ее бы выбрал.. Видно мне так не повезло, не хочет настраиваться)))