
Исходные данные:
Физический сервер Asus, 4 ядра, 16 Гб RAM, 1Тб HDD четыре штуки, собранные в RAID10, 4 гигабитных сетевых карты.
Требуемая площадка минимум для:
- Windows Server 2008R2 Standart RUS полная установка — контроллер домена.
- Windows Server 2008R2 Standart RUS Core — обновление системы КонсультантПлюс.
- CentOS 6.4 х64 — антивирусный и кеширующий прокси-сервер, файл-сервер.
- Windows 7(8) х64(х32) — тестовая машина.
В качестве гипервизора выбран Qemu-KVM.
Выбор гипервизоров проводился среди Xen Server, Qemu-KVM, Microsoft Hyper-V Server.
В двух словах, почему выбор пал именно на Qemu-KVM.
Проводились тестовые установки всех указанных систем. По результата сравнения вывод следующий:
Недостатки Xen Server — он по своему усмотрению разбивает жёсткий диск, и указать ему на своё предпочтение в разделах, нет ни какой возможности (по крайней мере у меня не получилось).
Ладно, пусть так, ставим с разбивкой диска "по-умолчанию". Следующая неприятность нас ждёт в демонах (в аббревиатуре Windows — сервисах запускаемых по-умолчанию) и в настройках фаервола. Говоря проще в сервисах запущено всё, что только возможно, а в фаерволе открыто всё, что можно открыть. Особо разработчики перемудрили с автовходом пользователя root, с основной консоли (то есть клавиатура и монитор присоединены непосредственно к серверу), а также автозапуском, после автовхода, текстовой утилиты предварительной настройки. Которой, естественно, можно также просто всё и расстроить.
С одной стороны - так проще запустить и поставить гостевую систему. Но, с точки зрения безопасности - её просто нет. Если у злоумышленника будет физический доступ к серверу (это отдельная тема), то считай ему и делать то ничего не придётся. Кстати, как найти и отключить этот автовход — сходу разберётся далеко не каждый. Ну и не могу не заметить, что в комплекте идёт утилита для контроля гостевых систем, и их установки в гипервизоре, чисто «виндовская». Для управления гостями из "линукса", потребуется virt-manager.
И так, основываясь на всём выше перечисленном от Xen Server решено было отказаться.
То есть мы можем собрать конструктор с нуля под себя, по своему усмотрению. Что и было сделано. Рассказывать об установке и настройке CentOS не стану - мануалов куча. Скажу лишь, что ставилась система в минимальной инсталляции, что бы не захламлять, к тому же других ролей на этой системе не будет.
И так, будем считать, что на нашем физическом сервере установлена система CentOS 6.4 в минимальной конфигурации.
Далее я буду приводить только те системные настройки, которые непосредственно касаются системы виртуализации.
Важным моментом, в правильности установки и последующей работы гостей, является правильная настройка сети на сервере. Для работы виртуальных машин, их выхода в сеть, и главное их доступности из локальной сети, нам потребуется настроить мост bridge0, между физической сетевой картой и всей системой в целом. И вот тут самое интересное. На моём физическом сервере имеется 4 гигабитных сетевых карты. Логично предположить, что каждой гостевой системе достанется по одной карточке.
На практике можно конечно именно так и поступить. Но это будет означать 4 занятых порта в свиче (а портов, как и памяти, лишних не бывает). Я повесил по две системы на первые две карточки., То есть у меня в системе есть bridge0 и bridge1, у каждой свой IP-адрес. Сам сервер доступен по любому из этих двух адресов. То есть если кто то из пользователей "отвалится" и позвонит с вопросом "где сервер?" (что то случилось с одной сетевой карточкой) всегда можно зайти на сервер удалённо по второму адресу и разобраться в сути проблемы. Сразу хочу оговориться, что систем может быть больше, даже не смотря на то, что физических ядер всего 4, а физической памяти 16 Гб, я запускал 4 виртуальные машины в каждой из которых по два ядра и по 6 Гб оперативки. Они работали одновременно вполне сностно, но о распределении вычеслительных мощностей между гостями в конце статьи.
И так, у нас на двух физических сетевых карточках "висит" по две гостевые системы (2х2).
Изначально я хотел объединить все четыре физических сетевых карточки в одну bond0, и уже с неё кидать мост bridge0, к которому подключались бы как гостевые системы, так и хостовая. При этом у хостовой системы IP-адрес был бы тот, который прописан в /etc/sysconfig/network-scripts/ifcfg-bridge0, а у гостевых - у каждой свой. Но при данной настройке постоянно отваливались SMB-шары как на виндовых, так и на линуксовых серверах, а так же RDP, а вот SSH работал исправно. В чём собака порылась - выяснить так и не удалось, поэтому остановлися на варианте 2х2.
Под катом скрипт1, который я использую для постустановочой настройки, что бы минимизировать однообразные действия. Обязательно разберитесь в нём, прежде чем его запускать, особенно касается раздела отключения служб, хотя сам по себе скрипт - проще простого.
#
INSTALL=/root
cp -f $INSTALL/sysctl.conf /etc/sysctl.conf
cp -f $INSTALL/modprobe.conf /etc/modprobe.d/modprobe.conf
cp -Rf $INSTALL/network-scripts/* /etc/sysconfig/network-scripts
rm -Rf /etc/yum.repos.d
cp -Rf $INSTALL/yum.repos.d /etc
service network restart
service sshd restart
#
#
yum clean all
rm -Rf /var/cache/yum/*
yum install -y yum-plugin-remove-with-leaves.noarch yum-plugin-priorities.noarch yum-plugin-fastestmirror.noarch htop mc webmin
#
#
echo "export EDITOR=ee" >> .bash_profile # Здесь я прописал консольный текстовый редактор ee из комплекта FreeBSD, вы можете прописать свой,
# тогда при вводе команды virsh edit именно он и будет вызываться.
#
chkconfig webmin --level 2345 off
chkconfig cgconfig --level 2345 off
chkconfig cgred --level 2345 off
chkconfig fcoe --level 2345 off
chkconfig iscsi --level 2345 off
chkconfig iscsid --level 2345 off
chkconfig lldpad --level 2345 off
chkconfig lvm2-monitor --level 2345 off
chkconfig multipathd --level 2345 off
chkconfig netconsole --level 2345 off
chkconfig netfs --level 2345 off
chkconfig nfs --level 2345 off
chkconfig nfslock --level 2345 off
chkconfig rdisc --level 2345 off
chkconfig restorecond --level 2345 off
chkconfig rpcbind --level 2345 off
chkconfig rpcgssd --level 2345 off
chkconfig rpcidmapd --level 2345 off
chkconfig rpcsvcgssd --level 2345 off
chkconfig rsyslog --level 2345 off
chkconfig haldaemon --level 2345 off
#
chkconfig ksm --level 345 on
chkconfig ksmtuned --level 345 on
chkconfig ip6tables --level 2345 on
chkconfig iptables --level 2345 on
chkconfig network --level 2345 on
#
gpasswd -d mail mail
#
userdel -r radvd
userdel -r nfsnobody
userdel -r rpcuser
userdel -r rpc
userdel -r mail
userdel -r game
userdel -r ftp
userdel -r floppy
userdel -r audio
userdel -r video
#
groupdel floppy
groupdel audio
groupdel video
groupdel mail
groupdel ftp
groupdel game
groupdel nfsnobody
#
#
yum -y install kvm libvirt libvirt-python python-virtinst # Cобственно установка гипервизора, естественно доступ в Интернет уже должен быть.
groupadd libvirt
#cp -f $INSTALL/libvirtd.conf /etc/libvirt/libvirtd.conf
#
service libvirtd start
virsh net-destroy default
virsh net-undefine default
#
cp -f $INSTALL/config /etc/selinux/config
shutdown -r now
exit
Первая секция тупо копирует с перезаписью конфиги служб и сервисов по своим местам.
Все конфиги в конце статьи.
Вторая секция, устанавливает плагины к yum и утилиты htop, webmin и mc. Что это такое и зачем они нужны сказано уже не мало. Если вы всё ещё не знаете, что это, то скорее всего они вам и не понадобятся вовсе - поэтому удаляйте, но плагины yum лучше оставьте.
И так, следующая секция - отключение ненужных служб из автозапуска и удаление "левых" пользователей. По хорошему ненужное лучше вообще всё удалить, заменив в директиву --level 2345 off директивой -del, но делайте это только если вы точно знаете что делаете.
Обращаю ваше внимание:
ВНИМАТЕЛЬНО ПРОСМОТРИТЕ ОТКЛЮЧАЕМЫЕ СЛУЖБЫ!
Что бы не возникло потом вопросов типа "я сделал по вашей инструкции и теперь у меня перестал работать почтовый сервер!"
Следующим разделом идёт собственно установка самого гипервизора и его настройка.
Обратите внимание, что группа libvirt в CentOS, при установке на CentOS 6.3 Qemu-KVM, не создаётся автоматически. Если для установки Qemu-KVM вы решили не использовать мой скрипт, то не забудьте создать группу libvirt вручную, коммандой groupadd libvirt. При установке на CentOS 6.4 всё создаётся корректно. На других дистрибутивах не проверял.
Так же нужно удалить все виртуальные сетевые соединения, созданные при установке Qemu-KVM,
командами virsh net-destroy default и virsh net-undefine default
Ну и на напоследок отключение selinux и перезагрузка.
Если всё сделано правильно, то после перезагрузки мы получим полностью функциональную площадку для размещения гостевых систем, ни чем не уступающую Xen Server или Microsoft Hyper-V Server, а в чём то даже превосходящую их.
На этом настройка сервера закончена.
Для установки гостевых систем, входим на сервер по ssh, и запускаем скрипт2:
#
qemu-img create -f qcow2 -o preallocation='metadata' /home/virtual/Stronghold.qcow2 100G
#
virt-install --connect qemu:///system \
--name Stronghold \
--ram 6144 \
--vcpus 2 \
--cpuset 2,3 \
--cdrom /home/ISO/centos_6.4_final.iso \
--description Proxy \
--os-type Linux \
--network bridge=bridge0 \
--disk '/home/virtual/Stronghold.qcow2',device='disk',size=500,sparse=false,cache='writeback',bus='ide' \
--hvm \
--accelerate \
--graphics vnc,port=5900,keymap=ru \
--virt-type kvm \
--autostart
Здесь:
Stronghold.qcow2 100G - файл диска, размером 100 гигабайт. Размер и расположение можно менять по своему вкусу.
--vcpus 2 - число процессоров в гостевой системе,
--cpuset 2,3 - привязка вирутальных процессоров к физическим,
--graphics vnc,port=5900,keymap=ru - куда выводится экран установки, можно выводить на текстовую консоль, при одновременном запуске нескольких гостевых систем, нужно использовать разные порты vnc, иначе будет вылетать с ошибкой. Остальное думаю понятно.
Можно также воспользоваться готовым шаблоном из приведённых, или сделать свой (особенно удобно при большом количестве гостевых установок).
Windows Server 1 ядро, 4 гига памяти Rapid.xml:
<name>Rapid</name>
<uuid>8c2fee85-f1ee-17eb-23ab-7b69c941bd0c</uuid>
<description>PDC</description>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static' cpuset='0'>1</vcpu>
<os>
<type arch='x86_64' machine='rhel6.3.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>cpu64-rhel6</model>
<vendor>Intel</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='est'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='smx'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='acpi'/>
</cpu>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='writeback'/>
<source file='/home/virtual/Rapid.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/home/ISO/Win2008R2.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:3f:7a:35'/>
<source bridge='bridge0'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='no' keymap='ru'/>
<video>
<model type='vga' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
Windows Server 2 ядра, 6 гигов памяти, СОМ-порт Gobi.xml:
<name>Gobi</name>
<uuid>be88f6da-df5c-86e3-2ef7-0adebc2ee96d</uuid>
<description>Server Core</description>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>6291456</currentMemory>
<vcpu placement='static' cpuset='2-3'>2</vcpu>
<os>
<type arch='x86_64' machine='rhel6.3.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='writeback'/>
<source file='/home/virtual/Gobi.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/home/ISO/Win2008R2.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:10:f5:f9'/>
<source bridge='bridge0'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='dev'>
<source path='/dev/ttyS0'/>
<target port='0'/>
</serial>
<console type='dev'>
<source path='/dev/ttyS0'/>
<target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5902' autoport='no' keymap='ru'/>
<video>
<model type='vga' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
CentOS 6.4 1 ядро, 4 гига памяти Proxy.xml
<name>Proxy</name>
<uuid>ffe7951d-9975-121f-c7a3-b005b612ddf5</uuid>
<description>Proxy</description>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static' cpuset='1'>1</vcpu>
<os>
<type arch='x86_64' machine='rhel6.3.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>cpu64-rhel6</model>
<vendor>Intel</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='est'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='smx'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='acpi'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='writeback'/>
<source file='/home/virtual/Stronghold.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:69:66:09'/>
<source bridge='bridge0'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901' autoport='no' keymap='ru'/>
<video>
<model type='vga' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
Здесь важно отметить, что запустив установку по скрипту, она (установка) уйдёт в "фон", и ответить на вопросы мастера установки и нажать кнопочку "Далее" просто так мы не сможем. Что бы не лишать себя этой радости жизни, на своём рабочем компьютере (или любом другом, не сервере) делаем от рута:
YUM вытянет за собой все зависимости, которые потребуются для управления гостевыми системами на нашем удалённом сервере.
Далее запускаем virt-manager, меню "Правка" -> "Параметры" -> вкладка "Свойства виртуальной машины", отмечаем "Удалённая виртуальная машина", как показано на рисунке.
Повторюсь ещё раз: virt-manager мы поставили на машине, отличной от сервера.
"Default storage format" лучше выбрать QCOW2, позже расскажу что это такое.
Далее нажимаем меню "Файл" -> "Добавить соединение", и появится вот такое окно:
В строке "Гипервизор", в выпадающем меню выбираем Qemu-KVM. Справедливости ради хочу отметить, что virt-manager может управлять и Xen Server, если кто не хочет ради управления Xen Server ставить "винду".
Далее тип подключения — я выбрал ssh, но другие варианты тоже есть.
Имя хоста (IP-адрес нашего сервера, или имя, если занесёно в DNS).
Имя пользователя — пользователь, от имени которого работает Qemu-KVM, он должен входить в группы libvirt, (которой изначально нет) и в группу qemu, следовательно, группу libvirt создать, а потом ввести в неё пользователя. Если пользовались моим скриптом1 , то он только создаёт группу. Вводить пользователя в группы всё равно нужно вручную коммандами:
# usermod -G libvirt -a vadim
Вместо vadim пишите своего пользователя.
Ставим галочку "Подключаться автоматически", то есть при запуске virt-manager, и жмём "Подключится". Удалённая система запросит пароль пользователя, которого мы только что добавили в группы. Вводим пароль и вауля, перед нами окно virt-manager-а с нашим сервером и запущенной виртуальной машиной в нём (мы же уже запустили установку, теперь она ждёт наших команд).
Выделяем мышкой виртуальную машину и жмём кнопку "Открыть". Всё, перед нами обычное окно установки, как если бы мы ставили систему на локальную машину.
Ставим гостевую систему обычным образом.
На этом собственно и всё. Ничего сложного. В принципе, новые гостевые системы можно ставить непосредственно из virt-manager, но лично я его использую только, что бы продолжить и завершить установку. Начинаю же с сервера, скриптом2, так как в нём более гибко можно описать параметры и пути установок. А последующую настройку уже делаю по RDP для Windows-машин или по SSH для Linux.
Так же полезно будет в окне виртуальной машины зайти в раздел "Параметры виртуального оборудования". Там следует сменить предлагаемую "по-умолчанию" сетевую карту на e1000, если конечно ваша сеть и физический сетевой адаптер сервера поддерживает гигабит.
Так же полезно будет физически привязать виртуальный процессор гостевой машины к физическому процессору сервера. Делается это в разделе Processor -> Pinning, в случае большого количества установок, таким образом можно равномерно распределить нагрузку между физическими ядрами сервера (это можно задать и в начале установки в скрипте2).
Я специально гонял тесты, перед вводом сервера в боевой строй. Здесь важнно учесть перераспределение нагрузки и роли, которые гости будут исполнять. В конечном варианте я расделил физические ядра и оперативку между гостями таким образом, что бы нагрузка на наих в течении суток (днём и ночью) была более менее равномерная, тоесть не вешал все тяжёлые дневные задачи на одно ядро в одн овремя суток, а равномерно распределяя по суткам и между ядрами (привязка виртуальных ядер к физическим)
И так, в разделе IDE DISK1 нужно выбрать формат хранилища qcow2. После этого систему следует выключить и произвести конвертацию файла диска из формата RAW (в котором устанавливается система по-умолчанию) в формат QCOW2, что сильно повысит операции файлового ввода-вывода внутри виртуального диска (п окрайней мере так написано в мануалах и других статьях, однако я сам разницу практически не заметил, да и не проводил особых тестов).
Конвертацию производим командой:
Далее запускаем гостевую систему, либо из virt-manager-а, либо с командной строки сервера, используя
Получить список установленных гостевых систем можно командой
Конфиги:
...
DEVICE=bridge0
TYPE=Bridge
IPADDR=192.168.1.20
PREFIX=24
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
DNS1=192.168.1.11
DNS2=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
DOMAIN=firma.local
USERCTL=no
BOOTPROTO=static
ONBOOT=yes
...
DEVICE=bridge1
TYPE=Bridge
IPADDR=192.168.1.21
PREFIX=24
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
DNS1=192.168.1.11
DNS2=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
DOMAIN=firma.local
USERCTL=no
BOOTPROTO=static
ONBOOT=yes
...
DEVICE=bond0
TYPE=Bonded
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=no
...
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="10:bf:48:d5:c7:00"
BRIDGE=bridge0
ONBOOT="yes"
...
DEVICE="eth1"
BOOTPROTO="static"
HWADDR="10:bf:48:d5:c7:01"
BRIDGE=bridge1
ONBOOT="yes"
...
alias bond0 bonding
options bonding mode=2 miimon=100 downdelay=200 updelay=200
...
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.panic = 10
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.ip_local_port_range="16384 65000"
net.core.rmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_default = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 16777216 16777216
net.ipv4.tcp_wmem = 4096 16777216 16777216
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.tcp_keepalive_time = 1800
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 200000
#net.ipv4.ip_conntrack_max = 64000000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_timestamps=0
...
[Webmin]
name=Webmin Distribution Neutral
priority=3
baseurl=http://download.webmin.com/download/yum/
enabled=1
...
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
priority=3
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
...
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
priority=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
enabled=1
priority=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
enabled=1
priority=2
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
priority=2
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
priority=2
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
...
SELINUXTYPE=targeted
SELINUX=disabled
SETLOCALDEFS=0
...
В файле /etc/libvirt/libvirtd.conf достаточно расскоментировать строку unix_sock_group = "libvirt"
В файле /etc/ssh/sshd_config расскоментировать X11Forwarding yes
...
...
Вот собственно и всё!
Удачи!
Искренне ваш, Vadimsky
[26/07/2013 06:17 - skyb]
[29/09/2013 18:20 - xlin]
<driver name='qemu' type='raw' cache='none'/>
<source file='/var/lib/libvirt/images/win2k8-1.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
<mac address='52:54:00:62:ab:0f'/>
<source bridge='bridge1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
[22/10/2013 18:19 - aprogrammer]
[25/02/2015 06:25 - освоивший]
[26/02/2015 10:46 - zenon]
Последний комментарий порадовал...
Добавить комментарий