XEN. Enterprise виртуализация дома. | GNU/Linux в ХМАО-Югра
После установки необходимо разметить /dev/md0 для использования lvm:
Описанное ниже проводилось на операционной системе Gentoo GNU/Linux, но может быть использованно для других Linux-дистрибутивов с поправками на систему пакетов и расположение конфигурационных файлов. Материал расчитан на начинающих пользователей Gentoo GNU/Linux. В статье описано как подготовить платформу виртуализации XEN на программном RAID5 массиве с LVM. Материал готовился по памяти и может содержать ошибки и недочеты, если вы нашли ошибку, или у вас что-то не получается, свяжитесь со мной, статья будет исправлена.
Имеем:
- AMD Phenom(tm) II X4 925 Processor;
- 1 HDD Seagate 10GB.
- Проинсталлированную базовую систему Gentoo GNU/Linux на HDD Seagate.
Хотим получить:
Полигон для изучения операционных систем;
Готовим программный RAID5-массив.
Практически все современные, даже самые дешевые материнские платы оснащены аппаратным RAID контроллером. Но использовать мы его не будем. Почему? Во первых контроллер не является в полной мере аппаратным, и такие контроллеры смело можно назвать недо-RAID-ами. Во вторых, скорее всего, бортовой контроллер не умеет RAID5. В третих, информация о массиве хранится в BIOS вашего контроллера, и если вдруг с ним что-то произойдет, вы лишитесь всех ваших данных, восстановить их будет очень не просто. В четвертых, данный массив можно успешно использовать с другими дистрибутивами Linux на другом железе. Вы сможете легко принести корзину с вашими дисками другу, главное чтоб нашлось место для 4-х SATA дисков. Недостатком данной реализации является то, что все операции с дисковым пространством ложатся на центральный процессор, по этому с процессорами прошлых поколений (Intel Pentium 4, AMD Athlon XP и т.п.) будут наблюдаться значительные тормоза, особенно при операциях записи и удаления. RAID5 позволит объеденить наши 4 диска в массив. При этом если один из дисков выйдет из строя, достаточно будет его заменить на испраный, вся ваша информация останется в целости и сохранности. Итак, приступим:
Устанавливаем genkernel, если еще не установлен, ядро будем собирать именно им, тем кто привык собирать ядро руками, может пропустить этот шаг.
собираем ядро:
После чего появится меню конфигуратора. Движемся в следующем направлении:
Device Drivers --->
Multiple devices driver support (RAID and LVM) --->
После чего приводим конфиг примерно в следующее состояние:
--- Multiple devices driver support (RAID and LVM)
Выходим из конфигуратора и ждем окончания компиляции ядра.
Перезагружаемся. Теперь наше ядро поддерживает вожделенный программный RAID5 и LVM. Теперь разметим наши диски для использования.
Определим какие имена выделила система для дисков:
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
В моем случае на устройстве sda развернута ОС, а диски sdb-sde наш будущий массив. Создаем на устройствах sdb-sde разделы, и указываем тип раздела Linux raid autodetect. Это можно сделать утилитами fdisk, либо cfdisk. После чего вывод fdisk -l принимает следующий вид:
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
Теперь разделы готовы к работе. Устанавливаем утилиту mdadm:
Далее приступим к созданию логического устройства md:
mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Информацию по состоянию массива можно получить командой cat /proc/mdstat, после сборки и инициализации имеем примерно следующий вывод:
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
unused devices:
Далее приступим к настройке LVM. LVM позволит нам создавать и изменять разделы на устройстве /dev/md0. Установим утилиту управления логичесткими томами
После установки необходимо разметить /dev/md0 для использования lvm:
Далее необходимо создать группу томов, на которой будут размещаться наши разделы:
Группа томов разделена на порции данных — экстенты, теоретически, чем больше размер экстента, тем меньше фрагментация данных по экстентам. Ключом -s устанавливаем размер экстента в 1 гигабайт.
Активируем группу томов:
Теперь мы можем создать наш первый том, после чего смонтировать его в желанное место. Но не будем торопиться.
Установка XEN.
Терминология XEN.
Domain0 — привелигированный домен, из под него производится управление гостевыми системами
DomainU — непривелигированный домен, по сути гостевая система.
XEN может исполнять правиртуальные домены и домены HVM. Паравиртуальный домен требует модификации ядра. Именно его мы и будем использовать для linux-гостей. Домен HVM требует поддержки аппаратной виртуализации процессором, которая реализована дополнительными инструкциями ЦПУ. Следует заметить, что поддержки аппаратной виртуализации процессором не достаточно, так же требуется поддержка на уровне BIOS. Часто встречаются материнские платы, которые не имеют этой поддержки, не смотря на то что в ЦПУ она присутствует. Такие случаи требуют прошивки BIOS, причем как правило не официальной прошивкой, что конечно же связано с риском угробить материнскую плату. Если вы собрались покупать десктоповое железо с целью использовать его как сервер виртуализаци, настоятельно рекомендую обратить внимание на этот факт. Далеко не все такие BIOS-ы имеют модифицированные прошивки, по этому разочарование может быть огромным.
Для запуска виртуальных машин нам потребуется ядро linux с поддержкой XEN и утилиты управления. В дистрибутиве Gentoo эти пакеты замаскированы, другими словами разработчики не гарантируют работу этих пакетов. Тем не менее, могу вас заверить, на заявленном мною железе все это работает, и работает стабильно. Более того я использую XEN на gentoo на работе в отказоустойчивом кластере на 2-х серверах HP Proliant DL160, думаю это убедит вас в том что система очень стабильна. Для установки размаскируем необходимые пакеты:
# echo «app-emulation/xen ~amd64» >> /etc/portage/package.keyw>ords
# echo «app-emulation/xen-tools ~amd64» >> /etc/portage/package.keyw>ords
# echo «sys-kernel/xen-sources ~amd64» >> /etc/portage/package.keyw>ords
После чего мы имеем возможность все это установить:
# emerge app-emulation/xen app-emulation/xen-tools sys-kernel/xen-sources
После установки нам опять необходимо собрать ядро. Наверное у вас возникнет вопрос: «Черт! Опять? Почему нельзя было сделать это сразу?!». А потому что сейчас у нас есть рабочее ядро, и если ядро с XEN не соберется, или соберется не так, либо сломается, у вас будет возможность обойтись без LiveCD. В отличии от стандартного ядра, ядро с XEN нельзя собрать утилитой genkernel, по этому собирать его придется руками, что совсем не так страшно как вам может показаться:
После чего мы попадем в уже знакомый нам конфигуратор ядра. Идем сюда:
Device Drivers --->
XEN --->
Мой конфиг имеет следующий вид:
(8) Maximum simultaneous transmit requests (as a power of 2)
PCI Backend Mode (Virtual PCI) --->
< > Network-device frontend driver acceleration for Solarflare NICs
Xen version compatibility (3.3.0 and later) --->
Но это еще не все. Поскольку в этом ядре мы не будем использовать busybox и initrd, вам необходимо включить жизненно важный драйвер для контроллера HDD в ядро, а так же не забыть это сделать с файловой системой для корневого раздела, заодно можно и отключить поддержку всего остального железа, которого у вас нет. С этим вам придется разбираться самостоятельно, т.к. железо у всех разное. Хочу напомнить, что у нас уже есть RAID массив и LVM, по этому не забываем включить их в ядро.
Приступаем к сборке:
Далее необходимо поправить конфиг grub, что бы иметь возможность загрузить полученное ядро:
мой конфиг имеет следующий вид:
module /boot/vmlinux root=/dev/sda2 ro console=tty0
kernel /boot/kernel-genkernel-x8>6_64-2.6.31-gen
# vim:ft=conf:
После чего сохраняем конфиг и перезагружаем систему. Если вы правильно сконфигурировали ядро, то система должна без проблем загрузиться. В противном случае анализируйте ошибки загрузки и ищите причину. Как я уже писал, XEN работоспособен, весьма стабилен и готов к использованию в бою. После загрузки необходимо запустить демон xend:
сразу добавим его в загрузочный уровень default, чтоб он стартовал при загрузке системы:
так же не забываем про будующие гостевые системы:
Далее вам нужно создать логический том LVM и развернуть на него базовую систему Gentoo. Я не буду описывать здесь процесс установки, он крайне схож с процессом установки системы на реальное железо. Единственное что необходимо иметь в виду, что разворачиваете вы его на том LVM и ядро собирать не нужно. Я рекомендую вам создать отдельную директорию для гостевых ядер и точек монтирования, чтоб соблюдать порядок и не лезть в конфиг машины, только для того чтоб выяснить где же лежит ее ядро. Так же рекомендую всегда держать машину-шаблон, из нее мы будем разворачивать базовую систему для новых гостей, избегая длительной компиляции.
Думаю коментарии по назначению каталогов излишни. И так создаем том для машины-шаблона:
тем самым мы содали том с именем template, и размером в 8 экстентов, как вы помните размер экстента равен 1ГБ, корневая система для будущего гостя будет иметь размер 8ГБ. Теперь необходимо рзметить файловую систему и смонтировать ее. Я использую ReiserFS:
Разворачиваем базовую систему в /domU/mpoints/template
Далее нам необходимо собрать ядро для гостевой системы, конфиг ядра несколько отличается от конфига Dom0, по этому чтоб не его не трогать копируем ядро в другую директорию и собираем ядро для DomU
И опять знакомый конфигуратор:
Device Drivers --->
XEN --->
Мой конфиг:
(8) Maximum simultaneous transmit requests (as a power of 2)
< > Network-device frontend driver acceleration for Solarflare NICs
Xen version compatibility (3.4.0 and later) --->
Далее отключаем ВСЕ контроллеры HDD, иначе гость попросту не запустится:
< > ATA/ATAPI/MFM/RLL support --->
< > Serial ATA (prod) and Parallel ATA (experimental) drivers --->
так же рекомендую поотключать все то, чем вы пользоваться не будете, это сэкономит память и повысит безопасность гостевой системы. Но тут надо без фанатизма, иначе можно ненароком отключить необходимый функционал. И так, собираем ядро:
не торопитесь писать make modules_install, иначе вы затрете модули Dom0. Прежде:
# export INSTALL_MOD_PATH=«/domU/m>pointstemplate»
Копируем собранное ядро и конфиг в заранее подготовленные директории:
сборку гостя можно считать завершенной. Следующим шагом станет конфигурация сети, ибо гость без оной бесполезен.
Настройка сети.
Есть несколько вариантов настройки сети для гостевых систем XEN, я рассмотрю лишь один из них, на мой взгляд самый лучший — с использованием моста (bridge). Говоря образно, бридж можно рассматривать как виртуальный коммутатор, к которому подключен физический сетевой интерфейс. Туда же будут подключаться виртуальные сетевые интерфейсы гостевых систем.
XEN поставляется со скриптами, которые создают бридж, но я не буду их использовать, а создам мост средствами операционной системы. Причина очень проста — скрипты часто глючные и их приходится править вручную после каждого обновления системы.
Для создания моста есть 2 способа: первый — описать мост в /etc/conf.d/net и перезагрузить систему, воторой — описать мост в /etc/conf.d/net и создать его утилитой brctl без перезагрузки системы. Поскольку, как я уже говорил, я описываю установку и конфигурацию XEN по памяти, по этому мог допустить ошибки, когда описывал создание моста. Если у вас ничего не выйдет, напишите замечания, и я просто поправлю статью. Итак, приступим:
описываем мост в /etc/conf.d/net:
мой конфиг:
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).
Перезагружаем систему, либо создаем мост руками:
Полагаю понятно, что ip адрес здесь должен быть ваш. Теперь проверим настройки:
eth0 Link encap:Ethernet HWaddr e0:cb:4e:c2:35:a9
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:85 errors:0 dropped:0 overruns:0 frame:0
TX packets:85 errors:0 dropped:0 overruns:0 carrier:0
peth0 Link encap:Ethernet HWaddr b6:9a:1d:62:81:ad
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
TX packets:21787 errors:0 dropped:0 overruns:0 carrier:0
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
Как видим, все работает. Настало время приступить к созданию конфигурационного файла гостя. Файл будем создавать на основе имеющихся примеров:
Приступаем к редактированию:
vif = [ 'type=virtio,mac=e0:cb:4e>:c2:35:aa,bridg
disk = ['phy:/dev/data/template,>sda1,w', 'phy:dev/data/template-s>wap,sda2,w']
Далее необходимо поправить /etc/fstab гостя, чтоб он знал какими русерсами располагает. Мой fstab выглядит так:
# /etc/fstab: static file system information.
# noatime turns off atimes for increased performance (atimes normally aren't
# needed; notail increases performance of ReiserFS (at the expense of storage
# efficiency). It's safe to drop the noatime options if you want and to
# switch between notail / tail freely.
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
# See the manpage fstab(5) for more information.
# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#/dev/BOOT /boot ext2 noauto,noatime 1 2
/dev/sda1 / reiserfs noatime 0 1
/dev/sda2 none swap sw 0 0
#/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0
# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
# use almost no memory if not populated with files)
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Ну вот, настало время запустить и проверить нашу гостевую систему:
Using config file "./template".
KERNEL supported cpus:
Xen-provided physical RAM map:
0MB HIGHMEM available.
136MB LOWMEM available.
Zone PFN ranges:
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 34544
Kernel command line: root=/dev/sda1 rw xencons=tty
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Experimental hierarchical RCU implementation.
Experimental hierarchical RCU init done.
virtual kernel memory layout:
Checking if this processor honours the WP bit even in supervisor mode...Ok.
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
Checking 'hlt' instruction... OK.
xen_mem: Initialising balloon driver.
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
platform rtc_cmos: registered platform RTC device (no PNP device found)
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
Xen virtual console successfully installed as tty1
Event-channel device installed.
netfront: Initialising virtual ethernet driver.
ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports
Driver 'sd' needs updating - please use bus_type methods
i8042.c: No controller found.
ReiserFS: sda1: found reiserfs format "3.6" with standard journal
ReiserFS: sda1: journal params: device sda1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
VFS: Mounted root (reiserfs filesystem) on device 8:1.
Copyright 1999-2009 Gentoo Foundation; Distributed under the GPLv2
* Mounting proc at /proc ... [ ok ]
* Mounting sysfs at /sys ... [ ok ]
* Mounting /dev ... [ ok ]
* Starting udevd ... [ ok ]
* Populating /dev with existing devices through uevents ... [ ok ]
* Waiting for uevents to be processed ... [ ok ]
* Mounting devpts at /dev/pts ... [ ok ]
* Remounting root filesystem read-only ... [ ok ]
* Checking root filesystem ...Reiserfs super block in block 16 on 0x801 of format 3.6 with standard journal
Filesystem seems mounted read-only. Skipping journal replay.
* Remounting root filesystem read/write ... [ ok ]
* Mounting local filesystems ... [ ok ]
* Activating (possible) swap ... [ ok ]
* Setting system clock using the hardware clock [xen] ... [ ok ]
* Configuring kernel parameters ... [ ok ]
* Cleaning /var/lock, /var/run ... [ ok ]
* Wiping /tmp directory ... [ ok ]
* Setting hostname to NetStarter ... [ ok ]
* Loading key mappings ... [ ok ]
* Setting user font ... [ ok ]
* Initializing random number generator ... [ ok ]
* Starting sshd ... [ ok ]
* Starting vixie-cron ... [ ok ]
* Starting local ... [ ok ]
template login:
Теперь мы имеем рабочую платформу виртуализации и машину-шаблон. Конечно XEN можно использовать не только для изучения операционных систем. Вы можете разворачивать новые машины с отлаженными сервисами для постоянной работы, а эксперименты никак не повлияют на их работу. Паравиртуальные гости XEN имеют производительность сравнимую с производительностью железа на котором они исполняются (95-98% от реального железа). Используемое мною железо может обслуживать более 10-ти гостей в домашних условиях. На производительность влияет количество ядер ЦПУ и объем оперативной памяти. Естественно - чем больше тем лучше.
А так же :
Личная безопасность предпринимателя и ее обеспечение
Курсовой проект по дисциплине «Безопасность бизнеса» Выполнил студент Г и ТБ – 3 – 2002/2 Государственный университет управления Институт туризма и развития рынка Кафедра «Развития рынка» Москва 2003 г. Введение Ухудшение состояния криминогенной обстановки в стране, увеличение числа находящегося в розыске огнестрельного оружия, усиление межрегиональных связей организованных преступных групп, активизация диверсионно-террористической деятельности для оказания воздействия на российских граждан, работающих в сферах повышенного риска (политика, экономика, финансы, коммерция, журналистика), дают основание полагать, что тенденция к осложнению обстановки вокруг этой категории лиц в ближайшем будущем сохранится.
Sostav.ru - ежедневные новости маркетинга, рекламы и PR.
SCR answers on superstrings, nuclear synthesis and other physics