Linux, Vserver · 6 min read · Feb 09, 2026
Linux-Vserver на Debian Sarge
Резюме
Вы можете найти более удобную для чтения версию этого руководства на 5dollarwhitebox.org.
Цитата с 13thfloor.at/vserver/project:
Linux-VServer позволяет создавать виртуальные частные серверы и контексты безопасности, которые работают как обычный сервер Linux, но позволяют запускать множество независимых серверов одновременно в одном боксе на полной скорости. Все службы, такие как ssh, почта, веб и базы данных, могут быть запущены на таком VPS без модификаций, так же как и на любом реальном сервере. Каждый виртуальный сервер имеет свою собственную базу данных учетных записей пользователей и корневой пароль и не мешает другим виртуальным серверам.
Вы можете найти презентацию о Linux-vserver на http://www.linux-vserver.org.
Два основных термина, которые нужно знать:
- Хост-система: Это физический сервер, который “хостит” Гостевые ОС (виртуальные серверы).
- Гостевая система: Это виртуальные серверы, которые работают поверх Хост ОС.
Подготовка
Начните с чистой установки Debian Sarge 3.1. Рекомендуется держать хост-систему как можно более минималистичной (я редко вижу причины запускать что-либо большее, чем SSH и iptables).
Пакеты для установки
Всегда обновляйте вашу базу данных apt перед установкой программного обеспечения и обновляйте текущие пакеты:
# apt-get update && apt-get upgrade
Затем нам нужно установить несколько основных пакетов:
- util-vserver: Утилиты пользовательского пространства для управления виртуальными серверами
- ssh: Это, вероятно, уже должно быть установлено
- ncurses-base и libncurses5-dev: Необходимы для “make menuconfig” при компиляции ядра.
# apt-get install util-vserver ssh ncurses-base libncurses5-dev
Файлы
| /var/lib/vservers | Домашний каталог для файлов vservers |
| /etc/vservers.conf | основной конфигурационный файл (там не так много интересного) |
| /etc/vservers | Содержит конфигурационные директории для каждого виртуального сервера |
| /usr/sbin/vserver | Утилита для взаимодействия, сборки, запуска, остановки, входа и т.д. в vservers |
| /bin/vshelper | Еще одна утилита для управления работой vservers |
| /usr/lib/util-vserver | Основные скрипты/функции/и т.д. |
Ядро
Обратите внимание, что я не делал этот раздел “по-дебьянски”. Все было сделано с использованием ванильного ядра с kernel.org. Вы можете найти хорошие ссылки в комментариях пользователей ниже для других ресурсов. Получите последнее ядро, в настоящее время последняя стабильная версия linux-vserver для ядра 2.6.12.4.. что мы и получаем:
# cd /usr/src
Получите последний патч ядра с linux-vserver.org или 13thfloor.at/vserver:
# wget http://www.13thfloor.at/vserver/s_rel26/v2.0/patch-2.6.12.4-vs2.0.diff.gz
Если вы уже используете аналогичное ядро 2.6.x, вы можете скопировать вашу текущую конфигурацию перед сборкой. Она должна находиться где-то вроде “/boot/config-2.6.x”
# cp /boot/config-2.6.X /usr/src/linux-2.6.12.4/.config
Эта последняя команда только если вы хотите использовать существующую конфигурацию… пожалуйста, не пытайтесь использовать файл конфигурации 2.4.X… пожалуйста. ;)
Хорошо, давайте сделаем это. Есть несколько вещей, которые вы хотите включить при компиляции. Первое, что нужно сделать, это иметь рабочую компиляцию для вашей системы… и с этим я не могу вам помочь. Пожалуйста, обратитесь к ссылке, если вам нужна помощь в компиляции ядра.
# make menuconfig
Для будущего использования вам, вероятно, следует включить LVM (и поддержку dev-mapper)… так как это удобно для виртуальных серверов.
Вы увидите категорию “Linux Vserver”. Значения по умолчанию должны быть хорошими, однако вы должны выбрать что-то вроде следующего:
Включить Legacy kernel API
Включить Proc Security
Включить Hard CPU Limits
Круто… теперь у нас есть наша конфигурация…. давайте сделаем ядро:
# make
Затем мы захотим обновить нашу конфигурацию grub:
Используя команду ‘vi’, отредактируйте /boot/grub/menu.lst и добавьте следующие строки ПЕРЕД другими записями, которые уже там есть… и убедитесь, что строка “default” установлена на “0”: title Vanilla 2.6.12.4-vs2.0
root (hd0,0)
kernel /vmlinuz-2.6.12.4-vs2.0 root=/dev/hda2 ro
initrd /initrd.img-2.6.12.4-vs2.0
savedefault
boot
И вот и все. Теперь мы должны быть в состоянии перезагрузиться и иметь наше новое ядро, готовое к некоторым виртуальным серверам.
# reboot
Проверьте ядро после загрузки, чтобы убедиться, что мы работаем на новом:
# uname -r
2.6.12.4-vs2.0
Отлично!
Настройка виртуальных серверов
Создание виртуальных Debian серверов на хосте Debian практически невероятно просто. Следующее описывает это для вас:
# vserver
-n
–hostname
–interface
-m debootstrap – -d
Таким образом, наш первый виртуальный сервер будет иметь следующую информацию:
| VSERVER_NAME | vserver1 |
| FQDN | vserver1.mydomain.com |
| NET_DEVICE | eth0 |
| IP | 192.168.1.10 |
| CIDR | 24 (255.255.255.0) |
| DEBIAN_DISTRO | sarge |
Поэтому следующая команда создаст его:
# vserver vserver1 build \
-n vserver1 \
–hostname vserver1.mydomain.com \
–interface eth0:192.168.1.10/24 \
-m debootstrap – -d sarge
Обратные слэши ‘\’ означают новую строку… однако вы можете выполнить это все как одну команду без использования обратных слэшей.
И вот и все… установка начинается с сетевой установки debian выбранного дистрибутива. Это не должно занять больше нескольких минут. На моей системе базовая установка занимает всего 144MB. Теперь давайте посмотрим, что у нас есть:
# ls -lah /var/lib/vservers/vserver1
total 80K
drwxr-xr-x 20 root root 4.0K Nov 10 08:17 .
drwxr-xr-x 4 root root 4.0K Nov 10 08:13 ..
drwxr-xr-x 2 root root 4.0K Nov 10 08:17 bin
drwxr-xr-x 2 root root 4.0K Dec 15 2004 boot
drwxr-xr-x 3 root root 4.0K Nov 10 08:13 dev
drwxr-xr-x 37 root root 4.0K Nov 10 08:17 etc
drwxrwsr-x 2 root staff 4.0K Dec 15 2004 home
drwxr-xr-x 2 root root 4.0K Nov 10 08:16 initrd
drwxr-xr-x 7 root root 4.0K Nov 10 08:17 lib
drwxr-xr-x 2 root root 4.0K Nov 10 08:16 media
drwxr-xr-x 2 root root 4.0K Dec 15 2004 mnt
drwxr-xr-x 2 root root 4.0K Nov 10 08:16 opt
drwxr-xr-x 2 root root 4.0K Dec 15 2004 proc
drwxr-xr-x 2 root root 4.0K Nov 10 08:16 root
drwxr-xr-x 2 root root 4.0K Nov 10 08:17 sbin
drwxr-xr-x 2 root root 4.0K Nov 10 08:16 srv
drwxr-xr-x 2 root root 4.0K May 10 2005 sys
drwxrwxrwt 2 root root 4.0K Nov 10 08:17 tmp
drwxr-xr-x 11 root root 4.0K Nov 10 08:16 usr
drwxr-xr-x 13 root root 4.0K Nov 10 08:16 var # ls -lah /etc/vservers/vserver1
total 28K
drwxr-xr-x 5 root root 4.0K Nov 10 08:13 .
drwxr-xr-x 6 root root 4.0K Nov 10 08:13 ..
drwxr-xr-x 4 root root 4.0K Nov 10 08:13 apps
-rw-r–r– 1 root root 112 Nov 10 08:13 fstab
drwxr-xr-x 3 root root 4.0K Nov 10 08:13 interfaces
-rw-r–r– 1 root root 5 Nov 10 08:13 name
lrwxrwxrwx 1 root root 22 Nov 10 08:13 run -> /var/run/vservers/vserver1
drwxr-xr-x 2 root root 4.0K Nov 10 08:13 uts
lrwxrwxrwx 1 root root 37 Nov 10 08:13 vdir -> /etc/vservers/.defaults/vdirbase/vserver1
Теперь, когда у нас установлен vserver, давайте запустим его. Синтаксис для команды ‘vserver’ следующий:
# vserver
А для нашего vserver1:
# vserver vserver1 start Запуск демона системного журнала: syslogd.
Запуск демона журнала ядра: klogd.
Запуск MTA: exim4.
Запуск интернет-суперсервера: inetd.
Запуск планировщика отложенных задач: atd.
Запуск периодического планировщика команд: cron.
… # vserver-stat
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME
0 35 73.4M 5.4K 0m05s21 0m02s33 1m13s00 root server
49152 5 11M 967 0m00s00 0m00s00 0m30s52 vserver1
vserver1:/#
И теперь вы находитесь в контексте виртуального сервера. Чтобы выйти и вернуться к хост-системе, просто введите “exit”.
Заметки по конфигурации
Сначала вам нужно будет запустить “apt-setup” и настроить apt так же, как и в любой другой системе debian. Установка debian bootstrap является очень минимальной базовой установкой. Вам нужно будет установить все, что вы хотите.
Следует упомянуть, что каждый виртуальный сервер имеет свой собственный IP-адрес. Однако, поскольку эти IP-адреса настроены как алиасы для вашего фактического сетевого устройства (т.е. eth0), они все слушают на одном физическом устройстве. Это может вызвать проблемы, когда конфигурации по умолчанию указывают “Слушать” на всех интерфейсах. Каждая служба внутри vserver должна указывать адрес прослушивания.
Например:
SSH:
# apt-get install sshd
Измените строку:
#ListenAddress 0.0.0.0
На
ListenAddress 192.168.1.10
И…
# /etc/init.d/ssh restart
Остальное действительно зависит от вашего воображения и понимания чудес документированного открытого исходного кода… веселитесь!
BJ Dierkes, RHCE-LPIC1
wdierkes [at] 5dollarwhitebox [dot] org
Техас, США
Ресурсы
- Проект Linux-vserver
- http://www.13thfloor.at/vserver/project
- Debian GNU Linux
Get new posts in your inbox
No spam. Unsubscribe anytime.