Виртуализация · 8 min read · Dec 07, 2025
Xen На Debian Wheezy С LVM
Xen На Debian Wheezy С LVM
Автор: Jason Norwood-Young jason [at] freespeechpub dot co dot za
Итак, у вас есть серьезные серверные потребности. Вам нужно много серверов с несколькими операционными системами, работающими на своих собственных безумных сайтах, делающих праведные дела, служащих миру и делающих его лучше. Есть только одна проблема - вы бедны. Слишком бедны, чтобы запускать серверы AWS и Rackspace, не считая часы их работы и не плача каждый раз, когда получаете счет.
Не переживайте - вы можете получить то, что ищете, за гораздо меньшие деньги, чем стоят облачные серверы, особенно если вам нужно, чтобы они работали 24/7/365. С помощью виртуализации вы можете использовать один большой сервер для размещения множества маленьких серверов. Это почти как иметь собственное облако!
Этот учебник охватывает установку Xen и вашу первую виртуальную машину на Debian Wheezy. Если вы используете Squeeze, ознакомьтесь с учебником Фалко Тимме, который я использовал в качестве вдохновения для своего (хотя мы делаем это немного по-другому).
0. Выбор сервера для запуска
Итак, я использую Hetzner Германия. Почему? Потому что они чертовски дешевы. В виртуализированной среде вам действительно нужно много памяти. Чем больше памяти, тем больше виртуальных систем вы можете разместить, и тем больше они могут быть. У меня есть два сервера по 32 ГБ, что позволяет мне запускать около 8 серверов с объемом памяти от 1 ГБ до 4 ГБ каждый без проблем. Это не рекомендация и у меня нет никаких отношений с Hetzner, кроме как передавать им свои тяжело заработанные деньги каждый месяц.
Что вам нужно, так это провайдер, который предоставит вам корневой сервер по хорошей цене, с большим количеством памяти и возможностью удаленной перезагрузки и восстановления на случай, если вы действительно все испортите.
1. Установка Xen
Я предполагаю, что вы установили Wheezy, вошли как root и сделали все обновления apt-get, которые вам нужно было сделать. Итак, давайте начнем!
apt-get install xen-linux-system xen-toolsЭто устанавливает Xen, некоторые высокопроизводительные вещи и очень полезные xen-tools, которые мы будем использовать для создания наших виртуальных образов позже.
Далее мы хотим сказать Xen, как обрабатывать сетевое подключение. У меня есть небольшое признание: я не сетевой парень. На самом деле, я ненавижу сетевые технологии. Это сантехника интернета, и я отказываюсь наклоняться и показывать свою сантехническую трещину. А сетевые технологии Xen сложны, с странными маршрутами и мостами и бог знает чем еще. Поэтому я просто делаю самое простое, быстрое, грязное решение - ставлю его в режим NAT. (Нет, я на самом деле не знаю, что такое NAT, но это работает, хорошо? Перестаньте задавать вопросы.)
pico /etc/xen/xend-config.sxpУберите комментарий с следующих двух строк:
(network-script network-nat)
(vif-script vif-nat)Хотя мы установили Xen, он на самом деле не работает. Xen работает на уровне ядра, что означает, что вам действительно нужно загрузиться в Xen.
Сначала нам нужно сказать Debian загружать Xen вместо его обычного ядра:
dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen update-grubЗатем нам нужно перезагрузиться:
rebootЯ знаю, вы не можете дождаться, чтобы подключиться по ssh к вашей новой, потрясающей системе Xen, но дайте ей секунду, чтобы перезагрузиться.
Хорошо, попробуйте сейчас.
Как насчет сейчас?
Вы внутри? Мы в порядке? Хорошо. Давайте продолжим.
2. Управление Xen
Теперь вы хотите убедиться, что Xen действительно работает. В Squeeze вы могли просто выполнить uname -r, и вы увидели бы что-то вроде: 2.6.32-5-xen-amd64. По какой-то загадочной причине, неизвестной человечеству, это не работает на Wheezy, поэтому вместо этого сделайте это:
xen dmesgВы должны увидеть что-то вроде:
(XEN) Xen version 4.1.4 (Debian 4.1.4-3+deb7u1) ([email protected]) (gcc version 4.7.2 (Debian 4.7.2-5) ) Sun May 5 14:44:49 UTC 2013
(XEN) Bootloader: GRUB 1.99-27+deb7u2
(XEN) Command line: placeholder
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN) Found 2 MBR signatures
(XEN) Found 2 EDD information structures
...Если вы этого не видите, вы сделали что-то не так. Вернитесь и попробуйте снова. Для всех остальных, УСПЕХ! Поздравляю! Теперь у вас есть потрясающий экземпляр Dom0!
Dom-что? Кого вы называете домом?
Расслабьтесь, парень. Dom0, или Domain 0, это ваш хост-сервер, то, на чем вы сейчас находитесь, основание пирамиды. Гостевые серверы называются DomU, возможно, потому что это также звучит немного оскорбительно.
xm listName ID Mem VCPUs State Time(s)
Domain-0 0 31089 8 r—— 8.8Эта команда перечисляет все наши виртуальные серверы, включая Dom0. В данный момент это единственный сервер, который у нас работает.
Мы можем сделать много с помощью xm, включая xm create, который поднимает сервер, xm destroy, который убивает сервер, xm reboot, который перезагружает сервер, и xm top, который мониторит все работающие серверы.
3. Настройка LVM
Вы можете создавать серверы Xen как блочные устройства или как экземпляры LVM. Мне нравится LVM, потому что это более мужественно, и это также значительно упрощает изменение размера разделов позже.
Сначала нам нужен пустой, не смонтированный диск для размещения LVM. У меня нет пустого, не смонтированного диска, поэтому я просто собираюсь украсть один у своего сервера.
df -hFilesystem Size Used Avail Use% Mounted on
rootfs 1008G 915M 956G 1% /
udev 10M 0 10M 0% /dev
tmpfs 3.0G 292K 3.0G 1% /run
/dev/disk/by-uuid/5642a4c4-1bcb-49e2-b89c-7d754e6a521a 1008G 915M 956G 1% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 9.2G 0 9.2G 0% /run/shm
/dev/md1 496M 34M 437M 8% /boot
/dev/md3 1.7T 196M 1.7T 1% /home1.7 ТБ для /home? Вы серьезно? Это кажется совершенно ненужным.
pico /etc/fstabЗакомментируйте проблемный диск
#/dev/md/3 /home ext4 defaults 0 0Отмонтируйте диск
umount /dev/md3Правильно, теперь мы можем создать наш LVM-раздел.
pvcreate /dev/md3 Writing physical volume data to disk "/dev/md3"
Physical volume "/dev/md3" successfully createdvgcreate xen-vol /dev/md3vgdisplay --- Volume group ---
VG Name xen-vol
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 1.71 TiB
PE Size 4.00 MiB
Total PE 448996
Alloc PE / Size 0 / 0
Free PE / Size 448996 / 1.71 TiB
VG UUID wa0QCN-lBc1-545B-zMwf-vIuS-VXXI-GZAfbWПраведно!
4. Настройка Xen Tools
Xen Tools делает нашу жизнь с Xen намного проще, особенно когда дело доходит до создания новых серверов. Но сначала нам нужно немного его настроить.
pico /etc/xen-tools/xen-tools.conflvm = xen-vol
size = 20Gb # Размер дискового образа.
memory = 4Gb # Размер памяти
swap = 512Mb # Размер подкачки
gateway = 192.168.1.2
netmask = 255.255.0.0
broadcast = 192.168.1.255
mirror = http://ftp.de.debian.org/debian/
mirror_precise = http://archive.ubuntu.com/ubuntu # (и любые другие, которые вы хотите)
serial_device = hvc0
disk_device = xvda #по умолчанию
copyhosts = 15. Создание гостевого сервера
Время для главного события! Это процесс, который вы будете повторять каждый раз, когда хотите создать новый гостевой сервер Xen.
Для нашего первого тестового сервера я собираюсь сделать что-то немного меньшее, чем значения по умолчанию, которые мы установили в xen-tools.conf. Вы можете переопределить любые из значений по умолчанию в командной строке, в зависимости от того, что вы хотите. Поскольку мы не используем сервер dhcp, вам нужно будет установить “hostname” и “ip” каждый раз. Все остальное является необязательным.
xen-create-image --hostname=test --ip=192.168.1.99 --memory=512Mb --size=5G --swap=256KbGeneral Information
--------------------
Hostname : test
Distribution : wheezy
Mirror : http://ftp.de.debian.org/debian/
Partitions : swap 256Kb (swap)
/ 5G (ext3)
Image type : full
Memory size : 512Mb
Kernel path : /boot/vmlinuz-3.2.0-4-amd64
Initrd path : /boot/initrd.img-3.2.0-4-amd64
Networking Information
----------------------
IP Address 1 : 192.168.1.99 [MAC: 00:16:3E:27:33:2D]
Netmask : 255.255.0.0
Broadcast : 192.168.1.255
Gateway : 192.168.1.2
Creating swap on /dev/xen-vol/test-swap
Done
Creating ext3 filesystem on /dev/xen-vol/test-disk
Done
Installation method: debootstrap
Running hooks
Done
No role scripts were specified. Skipping
Creating Xen configuration file
Done
No role scripts were specified. Skipping
Setting up root password
Generating a password for the new guest.
All done
Logfile produced at:
/var/log/xen-tools/test.log
Installation Summary
---------------------
Hostname : test
Distribution : wheezy
IP-Address(es) : 192.168.1.99
RSA Fingerprint : de:92:b7:63:55:20:74:46:d3:de:cc:ff:55:22:69:24
Root Password : MlkaIn8Это создает файл конфигурации и раздел для нас, но не загружает сервер. Файл конфигурации находится по адресу /etc/xen/hostname.cfg. Вы можете редактировать этот файл напрямую, если вам нужно изменить такие вещи, как память, позже.
Давайте запустим сервер
xm create /etc/xen/test.cfgUsing config file "/etc/xen/test.cfg".
Started domain test (id=1)Что довольно круто, так это то, что “test” будет добавлен в наш файл /etc/hosts, что означает, что мы можем просто сделать это:
ssh testИспользуйте пароль, который вы получили в конце вывода xen-create-image, и вы внутри!
Убедитесь, что вы видите интернет:
ping google.comPING google.com (173.194.70.113) 56(84) bytes of data.
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=1 ttl=48 time=6.05 ms
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=2 ttl=48 time=6.03 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 6.030/6.044/6.058/0.014 ms6. Выпейте пиво
Вы это заслужили!
7. Указание IP-адресов на ваши виртуальные серверы
Вам понадобится множество IP-адресов от вашего интернет-провайдера (называемых подсетью). Я плачу немного больше в месяц за дополнительные восемь IP-адресов. Но чтобы они проходили прямо к вашему виртуальному серверу, требуется немного работы.
pico /etc/network/interfacesauto br0
iface br0 inet static
address 192.168.1.2
netmask 255.255.0.0
pre-up brctl addbr $IFACE
post-down brctl delbr $IFACE/etc/init.d/networking restartifconfig br0br0 Link encap:Ethernet HWaddr 82:18:d1:b8:37:c9
inet addr:192.168.1.2 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: fe80::9118:d1ff:feb8:37c9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:172 (172.0 B)ip addr add 80.1.2.41 dev eth0iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99Используйте –bridge=br0 при использовании xen-create. Для существующих файлов /etc/xen/*.cfg отредактируйте эту строку:
vif = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34' ]чтобы она выглядела так:
vif = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34','bridge=br0' ]Уничтожьте и создайте виртуальный сервер, если это необходимо.
Get new posts in your inbox
No spam. Unsubscribe anytime.