< HomePage | Снимки
<- Понеделник, 21 Март 2005 | Начална страница | Сряда, 23 Март 2005 ->
Вторник, 22 Март 2005
18:00

Колкото пъти да казвам че Юникса е благина, все няма да е достатъчно. Задачка-закачка, имате нова машина и искате да прехвърлите от вече работеща в новата всичките функционалности на работещата. Тоест искате, новата да стане 1:1, като старата след което да ги смените и да ползвате новата. Целта е това да стане с минимален downtime при превключването и никакво бъзикане (малка скобка това дето го показвам по-долу под уиндолс е НЕВЪЗМОЖНО, защото не може да подменяте библиотеки и работещи програми on-the-fly).

И така, стъпките са следните:

1. Инсталирате на новата машина съвсем основна дистрибуция, без значение каква, само трябва да може да вдигне мрежовият интерфейс и да има ssh и rsync.

2. Боотвате новата машина и се логвате в старата на която избивате всички услуги без ssh.

3. Изпълнявате следната команда (OLD е името на старата машина):

rsync -e ssh -av --delete --exclude proc --exclude sys OLD:/ /

5. Ако дисковете или партишъните са различни ще се наложи да пипнете в /etc/fstab и /etc/lilo.conf

4. На старата машина променяте при стартиране да ползва не нейният IP адрес.

6. На новата стартирате lilo за да оправи boot loader-а.

7. Рестартирате двете машини (първо старата, малко след нея и новата).

Voila. Ако всичко е наред, новата машина е 100% копие на старата и след рестартирането изпълнява нейната дейност, а старата си стои на друг IP адрес.

[ Коментари: 15 ]
Коментари

Много удобно, наистина. Но няма ли да има малко проблеми ако ядрото на ОЛД не потдържа хардуера на новата машина? И няма ли да е проблем ако има някакви работещи услуги на новата машина докато се копира информация от старата?

Жоро, направо ти се възхищавам как хвалиш Юникс. Само ме е яд, че ти знам блог-а от скоро. Сигурно щях да знам много повече трикове за Юникс, отколкото знам сега.

Поздрави

Написа Георги (www) на 22-Mar-2005 17:04


Естествено че трябва да се съобразиш с разликите в хардуера и дали ти трябва ново ядро, но това е никакъв проблем ако позлваш да речем стандартно ядро със всичко на модули и поддръжка на scsi и ide едновременно.

Написа Георги Чорбаджийски (www) на 22-Mar-2005 17:14


за кернела е така, затова --exclude boot )))
едно е да прекомпилираш само кернел друго е сички услуги да оправяш, еле и ако си ги customize нал малко......
така че *niz rulz foreva kopele ::)))

Написа тодор на 22-Mar-2005 17:20


foo> ssh -R 3200:localhost:22 xxx.xxx.xxx.xxx -l user
...
xxx.xxx.xxx.xxx> ssh localhost -p 3200
...

красота.

Написа Марин Великов на 22-Mar-2005 21:14


Мда Remote port forward :) още по темата: http://georgi.unixsol.org/texts/presentations/ssh.pdf

Написа Георги Чорбаджийски (www) на 22-Mar-2005 21:21


хех, всичко има някъде, само човек да може да го намери...

bTW сега съм на тема:
ssh -o ProxyCommand='/root/bin/proxytunnel -g xxx.xxx.xxx.xxx -G 80 -u user -s pass -d yyy.yyy.yyy.yyy -D 443' gate

ама нещо с keepalive не мога да го докарам... :)

Написа Марин Великов на 22-Mar-2005 21:54


Пускай "top", когато не работиш на конзолата, или виж ProxyKeepAlive. Тия неща си ги пише на сайта. :-)

Написа Мариан Г на 22-Mar-2005 23:16


I would better do:
boot from knoppix (you really don't need /proc & /sysfs if any ...) on both machines. Start sshd and:

cd /
tar -cvjfp - * | scp root@new_machine:/tmp/backup.tar.bz
...
tar -xvjf backup.tar.bz
chroot . and so on...

-or-

tar cfp - * | ssh root@new_machine cat/>bachup.tar

damn :
scp -a * root@new_machine:/ (?) gota try it :)

Написа xeno (www) на 24-Mar-2005 03:27


Целта беше минимален downtime и на двете машини. Май забравих да спомена и че и до двете нямам физически достъп, така че boot-ване от knoppix и игри с tar са невъзможни.

Написа Георги Чорбаджийски (www) на 24-Mar-2005 10:48


yep, that changes a lot of things but you I think you can still use scp.
Out of toppic:
Look what I found: linas.org - just for *smart* bulgarians (humans?) sorry only in English ...

Написа xeno (www) на 24-Mar-2005 13:41


Пича Linas е много светнат. Едно време работех във фирма, която доразвиваше кода на система за резервации която основно той беше писал. Много чист, свестен и разбираем C++. В момента бачка за IBM и се занимава с Linux ядрото за PPC64, следя го в lkml :)
Иначе английският го чета и пиша и говоря ама ме мързи.

Написа Георги Чорбаджийски (www) на 24-Mar-2005 13:43


кефя се когато си реша някой проблем нещо като оргазъм е... :)

та се оказа че трябва да добавя в ssh сървър конфигурацията :
ClientAliveInterval 100

така сървъра да изпраща keep alive към клиента, щото явно firewall-a блокира клиентските....

Написа Марин Великов на 24-Mar-2005 14:32


Много благи неща сте изписали.
Аз мога да добавя едно друго мое любимо, а именно.

cat /dev/hda1 >> /dev/hdb1

Примерно или нещо от сорта
където hda1 e starata a hdb1 новата машина.
Разбирасе няма как да няма downtime но става по бързо особенно с бързи дискове.
На тва му викам exact mirror поради простата причина че копира даже размера на партишъна едно кум едно на новия диск.

Написа mhz (www) на 27-Mar-2005 22:09


Е, това да - макар че сигурно имаш предвид '>', а не '>>' :) Другото силно би ме изненадало - да успееш да добавиш съдържанието на един диск към друг :)

А и все пак това ще стане само ако наистина двата дяла са с един и същи размер, което не винаги може да се получи, ако самите физически дискове са различни...

Написа Петър Пенчев (www) на 28-Mar-2005 08:24


prepare the client to accept the image and write it directly to the disk:
netcat-v -w 120 -p PORT -l < /dev/null | gzip -dc | dd of=/dev/hda bs=512
Send the image from the master:
dd if=/dev/hda bs=512 | gzip -c | netcat-v -w 60 SERVERIP PORT
after that just reboot,easy and simple.!

Написа Георги на 07-Apr-2005 06:38