Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

00-tech-book

.pdf
Скачиваний:
42
Добавлен:
10.02.2016
Размер:
7.86 Mб
Скачать

После того как мы зададим все эти опции начнется стандартный процесс

инсталляции. Чтобы выйти из интерфейса виртуальной машины нажмите Ctrl+] (наберите “xm console linuxbox4” чтобы вернуться).

Работа с виртуальными машинами

Конфигурационный файл нашей виртуальной машины находится в /etc/xen/ linuxbox4

Другие конфигурационные файлы

#/etc/sysconfig/xend*

#/etc/xen*

Чтобы ВМ автоматически загружалась при перезагрузке сервера делаем так:

# ln -s /etc/xen/linuxbox4 /etc/xen/auto/

Для обслуживания виртуальных машин есть целый список подкоманд в программе xm. В свою очередь команда работает с сервисом xend, который все время должен быть запушен.

xm list – вывести список виртуальных машин

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# xm list

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Name

ID Mem(MiB) VCPUs State

Time(s)

 

 

 

 

 

 

 

 

 

Domain-0

0

493

1 r-----

254.2

 

 

 

 

 

 

 

 

linuxbox4

3

255

1 -b----

95.0

 

Name – это административный домен, сама хост-система. Остальные домены – это гостевые системы;

ID – ID домена в котором находится ВМ;

Mem(MiB) – объем памяти этой ВМ;

VCPUs – сколько процессоров используется;

State – статус ВМ, ниже перечислены возможные статусы; r – running, ВМ запущена;

b – blocked, обычное состояние когда ВМ ожидает ввода/вывода, это нормальное состояние ВМ;

p – paused, режим паузы, режим наступает при команде xm pause; s – shutdown, в процессе выключения или перезагрузки;

c – crashed, произошла какая-то серьезная ошибка;

d – dying, в процессе завершения своей работы, но пока не достигший состояния shutdown или crashed;

Time(s) – как долго запущена ВМ.

Модуль 6. Виртуализация. Xen.

 

61

 

 

 

 

 

#xm console linuxbox4 - подключиться к linuxbox4 (выйти можно с помощью Ctrl+])

#xm create linuxbox4 – включить linuxbox4

# xm shutdown <имя ВМ> - выключить виртуальную машину

#xm destroy <имя ВМ> - немедленно выключить ВМ, как будто отключили питание

#xm uptime – выводит uptime

#xm help - подсказка

Производительность виртуальных машин

Посмотреть производительность можно командой ниже

# xentop

Резюме

Мы разобрали работу Xen и научились создавать и запускать виртуальные машины.

Домашнее задание

Разверните несколько виртуальных машин и поработайте с ними, воспользуйтесь средствами администрирования xen.

62

 

Модуль 6. Виртуализация. Xen.

 

 

 

Subversion

Subversion — это бесплатная система управления версиями с открытым исходнымкодом.Subversionпозволяетуправлятьфайламиикаталогами,атак же сделанными в них изменениями во времени. Это позволяет восстановить более ранние версии данных, даёт возможность изучить историю всех изменений. Благодаря этому многие считают систему управления версиями своего рода «машиной времени».

-Управление версиями в Subversion, Бен Коллинз-Сассман, Брайан У. Фитцпатрик, К. Майкл Пилато, Copyright © 2002, 2003, 2004, 2005, 2006, 2007

Архитектура Subversion

Модуль 7. Subversion.

 

63

 

 

 

Протоколы работы с SVN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

file:///

 

 

 

 

 

 

прямой доступ к хранилищу (на локальном диске);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://

доступ через протокол WebDAV (если Subversion-сервер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

работает через Apache);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://

 

 

https://то же, что и http://, но с SSL-шифрованием;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

svn://

 

 

доступ через собственный протокол к серверу svnserve;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

svn+ssh://

 

 

 

 

 

то же, что и svn://, но через SSH-соединение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Способы хранения данных

Berkley DB – старый способ хранения данных репозитория, сейчас уже не используется

FSFS – хранение данных в специальных файлах, сейчас активно

используется

Компоненты Subversion

svn – Клиент с интерфейсом командной строки

svnversion – Программа, показывающая состояние (в пределах ревизий существующих элементов) рабочей копии

svnlook – Инструмент прямого управления хранилищем Subversion.

svnadmin – Инструмент для создания, настройки или восстановления хранилища Subversion.

svndumpfilter – Программа для фильтрации дамповых потоков хранилища Subversion.

mod_dav_svn – Подключаемый модуль для HTTP-сервера Apache, использующийся для предоставления сетевого доступа к вашему хранилищу.

svnserve – Собственный отдельный сервер, запускаемый как процессдемон и доступный посредством SSH; еще один способ для предоставления сетевого доступа к хранилищу

svnsync – Программа для последовательного зеркалирования одного хранилища в другое через сеть

Все программы расположены в /usr/bin/ кроме mod_dav_svn который поставляется с Apache.

Проблема одновременной работы с файлами

Всем системам контроля версий приходится ее решать. Как обеспечить

64

 

Модуль 7. Subversion.

 

 

 

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

Для решения этой проблемы есть две рабочих схемы.

Блокирование -> Изменение -> Разблокирование

Пользовательберетнужныйфайлизрепозиторияиставитнанегоблокировку пока с ним работает. Никто не сможет внести в него изменения пока тот, кто его заблокировал не заблокирует. Пока файл заблокирован у остальных будет только доступ только на чтение. Этот способ может применяться при работе с графическим контентом или звуковыми файлами, ведь они являются бинарными. А в свою очередь Subversion может анализировать только текстовые файлы.

У этого способа есть свои минусы. Пользователь может просто забыть разблокировать файл или может возникнуть неоправданная пошаговость, ведь не всегда вносимые изменения могут пересекаться между собой.

Копирование -> Изменение -> Слияние

Пользователь извлекает нужные ему данные из репозитория, тем самым создавая рабочую копию. Рабочая копия – это локальное отражение данных из репозитория. Далее он вносит необходимые изменения в файлы и закачивает их обратно в репозиторий (операция commit). В случае если с момента создания его рабочей копий кто-то еще внес изменения

врепозиторий ему будет предложено обновить рабочую копию, внести в нее поправки учтя работу других пользователей и только потом положить

врепозиторий. Ответственность за успешное разрешение конфликтов в файлах лежит на пользователе.

Модуль 7. Subversion.

 

65

 

 

 

Рабочий цикл

Обновление рабочей копии svn update

Внесение изменений svn add

svn delete svn copy svn move

Анализ изменений svn status

svn diff svn revert

Слияние изменений, выполненных другими, с вашей рабочей копией svn update

svn resolved

Фиксация изменений svn commit

Установка

# yum -y install subversion

Все, мы получили инструмент для создания репозиториев и работы с ними.

Работаем с репозиторием

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

#ssh-keygen -t rsa

#ssh-copy-id -i ~/.ssh/id_rsa.pub root@localhost Создаем каталог где будут хранится репозитории

#mkdir /svn

Создаем репозиторий

#svnadmin create /svn/myrepo Информация по репозиторию

#svn info file:///svn/myrepo/

66

 

Модуль 7. Subversion.

 

 

 

Path: myrepo

URL: file:///svn/myrepo

Repository Root: file:///svn/myrepo

Repository UUID: 0328446d-48a7-4758-9808-7aeb55de1aea

Revision: 0

Node Kind: directory

Last Changed Rev: 0

Last Changed Date: 2009-03-07 22:52:55 +0300 (Sat, 07 Mar 2009)

Репозиторий пустой о чем говорит“Revision: 0”. С каждым новым измением в репозитории номер ревизии будет увеличиваться на единицу.

В каталоге docs я подготовил несколько файлов которые положат начало новому репозиторию

# svn import docs file:///svn/myrepo/ -m «start the dance» Adding docs/file1

Adding docs/file2

Adding docs/file3

Committed revision 1.

Посмотрим изменилась ли ревизия.

#svn info file:///svn/myrepo Path: myrepo

URL: file:///svn/myrepo

Repository Root: file:///svn/myrepo

Repository UUID: 0328446d-48a7-4758-9808-7aeb55de1aea Revision: 1

Node Kind: directory

Last Changed Author: root Last Changed Rev: 1

Last Changed Date: 2009-03-08 16:20:00 +0300 (Sun, 08 Mar 2009) Посмотрим содержимое репозитория

#svn list file:///svn/myrepo/

file1

file2

file3

Модуль 7. Subversion.

 

67

 

 

 

У нас получился репозиторий с тремя файлами. Теперь мы создадим рабочую копию этого репозитория и поработаем с ней.

#svn co file:///svn/myrepo/ A myrepo/file1

A myrepo/file2 A myrepo/file3

Checked out revision 1.

#cd myrepo

#echo «new line» >> file1

#svn commit -m «file1 has been modified» Sending file1

Transmitting file data .

Committed revision 2.

Примерно так проходят будни SVN-пользователя.

Пока мы работали с репозиторием локально, нам было достаточно использовать способ доступа как file:///

При удаленной работе рекомендуется использовать протоколы https если доступ к репозиторию осуществляется через Apache, или через svn+ssh, когда достаточно shell-пользователя в удаленной системе. Оба способа осуществляют шифрование передаваемых данных. Доступ через Apache применяетсякогданеобходимообеспечитьдоступкрепозиториюудаленных разработчиков. Они не будут иметь доступ ко всей системе а только к SVNрепозиторию. В этом варианте используется механизм аутентификации пользователей Apache и файл паролей создаваемый с помощью htpasswd. Использование системных пользователей оправданно когда на сервере нужно получать доступ не только к SVN-репозиторию.

Получение копии репозитория с удаленного сервера где у вас есть аккаунт

Убедитесь, что пользователь включен в нужную группу для доступа к репозиториям.

$ svn co svn+ssh://mybestuser@linuxbox/svn/myrepo

The authenticity of host 'linuxbox (192.168.146.132)' can't be established. RSA key fingerprint is 18:db:9d:74:3e:f3:7a:f2:1f:e7:e5:36:33:c8:6d:2e.

Are you sure you want to continue connecting (yes/no)? yes

68

 

Модуль 7. Subversion.

 

 

 

Warning: Permanently added 'linuxbox,192.168.146.132' (RSA) to the list of known hosts.

mybestuser@linuxbox's password:

mybestuser@linuxbox's password:

Amyrepo/file1

Amyrepo/file2

Amyrepo/file3 Checked out revision 2.

Ограничение доступа

Subversion обладает возможностью регулировать доступ в репозиторий.

У нас уже есть репозиторий /svn/myrepo и сейчас мы разберемся с правами доступа к нему.

Вся настройка производится в /svn/myrepo/conf/svnserve.conf, То есть <путь к репозитарию>/conf/svnserve.conf

[general]

anon-access = none

#auth-access = write

#password-db = passwd

authz-db = authz

realm = Bunch_Of_My_Repos

anon-access = none – запрещаем анонимный доступ в репозиторий

auth-access = write – аутентифицированные пользователи могут читать и редактировать данные в репозитории, я закомментировал это условие так как планирую указать КАКИЕ аутентифицированные пользователи чего получат.

#password-db = passwd – файл аккаунтов для репозитория. Файл содержащий строки вида “пользователь = пароль” открытым текстом и используемый в работе службы svnserve. Передаваемая информация не шифруется. Этот способ устарел и я не рекомендую его использовать. Чтобы вы примерно понимали что это за файл я вам приведу пример:

# cat /svn/myrepo/conf/passwd

[users]

harry = harryssecret

sally = sallyssecret

Модуль 7. Subversion.

 

69

 

 

 

В файле svnserve.conf раскоментируем строку password-db = passwd, в файл authz добавим запись для пользователя harry если общая политика ему не подходит.

Запустим службу svnserve

#svnserve -d

#svn list svn://harry@linuxbox/svn/myrepo

Authentication realm: <svn://linuxbox:3690> Bunch_Of_My_Repos

Password for 'root':

Authentication realm: <svn://linuxbox:3690> Bunch_Of_My_Repos

Username: harry

Password for 'harry':

file1

file2

file3

secret/

authz-db = authz – здесь указываем название файла в котором будут описаны права доступа. В нашем случае файл называется authz

realm = MyRepo – реалм в котором находится репозиторий, это что-то типа домена

В том же каталоге где и svnserve.conf (<путь к репозиторию>/conf/) создаем файл authz и вносим в него конфигурацию

[groups]

agents = james, piter

[/]

* = r

[/secret] @agents = rw

* = [/secret/public]

* = rw

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

r – это право на чтение

w- право на запись

70

 

Модуль 7. Subversion.