Linux + VirtualBox = сервер віртуальних машин

Якщо вам в руки потрапляє такий комп’ютер, а поруч з ним стоять треті пентіуми, які в кінці дев’яностих хтось гордо назвав серверами, то виникає бажання всі задачі перенести на нове залізо, а весь той хлам вимкнути, щоб не гудів даремно. Якщо ви одноосібно адмініструєте це все і все воно «живе» на чомусь одному — на Windows'i чи Linux'i, то проблем немає: налаштовуєте всі сервіси на одному комп’ютері і маєте повний фен-шуй. Проте частіше за все зробити таку «купку невеличку» не вдається: або крім вас різні сервіси адмініструють різні інші люди, або ви не хочете, щоб при зламі веб-сервера зловмисники отримали доступ ще й до електронної пошти чи внутрішнього документообігу, або різні сервери виконують однотипні задачі і просто «посваряться» за певні ресурси, або ...причини завжди знайдуться.

Спеціально для цього випадку розумні люди придумали поняття «віртуалізація» і в купі з ним — різного роду віртуальні машини. Деякі дозволяють ізоляцію лише певних ресурсів, інші створюють видимість повністю відокремленого обладнання. І в тих і в інших є свої переваги і недоліки в певних ситуаціях. В моєму випадку — повний зоопарк операційок (різні Windows'и і Linux'и) — найкращим виходом є повна емуляція обладнання, причому бажано реально існуючого.

Варіанти в даному випадку є наcтупні:

  • Hyper-V — коштує чималих грошей, та й Linux'и на ньому «живуть» почерез раз
  • VMWare — має безкоштовну версію і підтримує всі операційки «на ура», але безкоштовна версія має обмеження на використовувані ресурси сервера, так що з певного моменту upgrade заліза доведеться робити лише після придбання (теж недешевої) ліцензії
  • VirtualBox — проект з відкритим кодом, підтримується компанією Oracle. Безкоштовна версія має обмеження на функціонал: недоступні USB-пристрої і віддалений вхід через RDP-клієнт. Підтримує всі поширені операційки (не впевнений щодо MacOS, але вона все одно окремо не продається :-(, так що в роботі мені зустріч з нею найближчим часом «не світить»).

Флешки в сервери я не тикаю, а організувати віддалений доступ можна і без RDP, так що VirtualBox — «те що доктор прописав».

Подальші налаштування — наслідок послідовного процесу спроб і помилок, але загалом початкову конфігурацію я вгадав непогано, тому все запустилося досить швидко.

В загальних рисах все виглядає так:

  • одна віртуальна машина — один користувач. Створюємо користувачів не як завжди, а надаємо їм домашні каталоги окремо від інших в каталозі /VMS useradd -b /VMS -m -g VMS virtual-host1.your.domain окрема група для них також дозволить в разі потреби визначити, що маємо справу з користувачем-власником віртуальної машини, а також можна надати якісь права на спільні ресурси, тощо.
  • всі віртуальні машини називаємо одинаково: VM. Це дозволить в скриптах запуску та зупинки наперед знати до якого імені звертатися, а не відчитувати його кожен раз звідкись.
  • для кожного мережевого інтерфейсу створюємо «міст» (bridge), в який включаємо цей інтерфейс, а вже подальша конфігурація (якщо потрібно) пишеться на інтерфейсі «моста». Це пов’язано з тим, що віртуальна машина при безпосередньому підключенні до мережевого інтерфейсу виконує певні дії, внаслідок яких цей інтерфейс стає недоступним для інших користувачів — в нашому випадку — інших віртуальних машин. Тому ми в скриптах ініціалізації будемо створювати віртуальні мережні картки для кожної машини, включати кожну в відповідний «міст» і в конфігурації відповідної машини вказувати не реальний пристрій, а віртуальний — його вона може блокувати скільки влізе — нікому крім неї він не потрібен.
  • при вимкненні хоста на вимкнення віртуалок чекати не будемо, натомість просто збережемо їх стан. При ввімкненні окремої команди для відновлення стану не потрібно — команда ввімкнення відновлює збережений стан, якщо такий є, а якщо немає — запускає віртуальну машину наново.

В свіжому Debian'і скрипт завантаження в мене врешті-решт вималювався такий: #!/bin/sh
### BEGIN INIT INFO
# Provides: vmachines
# Required-Start: vboxdrv virtualbox networking
# Required-Stop:
# Should-Start:
# Should-Stop:
# X-Start-Before:
# X-Stop-After:
# Default-Start: 2 3 4 5
# Default-Stop:
### END INIT INFO

SCRIPTNAME=/etc/init.d/virtual-machines

#Список всіх інтерфейсів-«мостів» в системі
brlist=`/sbin/brctl show|grep ^br[0-9]|tr "\t" " "|tr -s " "|cut -d " " -f 1`

./lib/lsb/init-functions

do_start()
{
wd=`pwd`
modprobe vboxdrv
modprobe vboxpci
modprobe vboxnetadp
modprobe vboxnetflt
cd /VMS
for vm in * ; do
#дістаємо ідентифікатори користувача
gid=`id -rg ${vm}`
uid=`id -ru ${vm}`
for br in `echo $brlist`; do
#для кожного «моста» створюємо віртуальний відповідник
tunctl -u ${uid} -g ${gid} -t ${br}vm${uid}
#робимо учасником «моста»
brctl addif ${br} ${br}vm${uid}
#і вмикаємо
ip link set ${br}vm${uid} up
done
#тепер можна і машину ввімкнути
su -l ${vm} -c "/usr/bin/VBoxManage startvm VM --type headless"
done
cd "${wd}"
}

do_stop()
{
wd=`pwd`
cd /VMS
for vm in * ; do
#при вимкненні — зберігаємо стан
su -l ${vm} -c "/usr/bin/VBoxManage controlvm VM savestate"
#тут ще був код вимкнення і знищення віртуальних інтерфейсів, але він
#чомусь приводив до зависання процесу вимикання/перезавантаження,
#тому я його викинув «від гріха подалі»
done
cd «${wd}"
#більшість драйверів не вивантажаться через ті ж-таки «підвішані» мережеві
#інтерфейси. З цим би варто поборотися, але наразі може бути і так...
rmmod vboxnetflt
rmmod vboxnetadp
rmmod vboxpci
rmmod vboxdrv
}

case "$1" in
start)
log_action_begin_msg "Starting VMs"
do_start
case "$?" in
0|1) log_action_end_msg 0 ;;
esac
;;
stop)
log_action_begin_msg "Stopping VMs"
do_stop
case "$?" in
0|1) log_action_end_msg 0 ;;
esac
;;
restart|force-reload|status)
;;
*)
echo «Usage: $SCRIPTNAME start|stop" >&2
exit 3
;;
esac

Тепер до цього всього при бажанні можна «докрутити» ще phpvirtualbox, але добре подумайте чи воно вам треба — все-таки зайва можливість для різних йолопів наламати вам дров в системі. Хоча якщо ви цю схему прикрутили на сервер для VPS-хостингу(хостингу віртуальних серверів) — нікуди вам від нього не подітися.

До речі: для VPS-хостингу схема з розділенням користувачів вирішує проблему відсутності розподілу доступу в phpvirtualbox'i.

Як завжди сподіваюся, що це комусь стане в нагоді.

«Живі» приклади адресації і маршрутизації IPv4

Теорія штука хороша, але без реального застосування — безглузда і непотрібна. Перечитуючи третю частину серії «лікбезів» я зрозумів, що без ілюстрації її реальними прикладами, вона залишиться надто сухою і майже непридатною до використання. Писати просто «в ефір» я ніколи не збирався, тому пропоную декілька конфігурацій, які, сподіваюся, наочно покажуть що і як робиться.

Анекдот???

Сьогодні перший день відпустки... Читаю розсилку анекдотів:

Справжня відпустка — це коли ти купляєш шорти і панамку, а не нові шпалери і ламінат.

Звідки вони знають?!!!

Лікбез по комп’ютерних мережах. Частина третя.

Ну от нарешті прийшла черга розповісти що таке протокол TCP/IP четвертої версії. Попередні версії завершили своє існування ще на початку 80-х років минулого століття і інтерес становлять хіба для істориків. Наступні версії... Вони теж є. П'ятої так офіційно ніколи і не вийшло — так планувалося пронумерувати версію з розширеними можливостями передачі мультимедіа, але в результаті розробки в цьому напрямку отримали власні назви ST та ST2, але поки визначалися з їх назвами, то почалася розробка IPv6.

Розібратися в IPv6 можна з допомогою півлітри і здоровенного талмуда з описом (це не я придумав — це я переклав цитату), але наразі така проблема гостро не стоїть.

Є і інші розробки — IPv8, IPv9 та IPv12, але вони наразі не вважаються серйозними проектами (хоча люди, які читали специфікації, кажуть, що той же IPv8 набагато зрозуміліший ніж IPv6).

Але це все лірика — нас цікавить роботяга з тридцятирічним стажем — IPv4.

І знову про 64бітні вікна

Все-таки не даремно я колись експериментував з 64бітним Windows'ом — сьогодні мені це все знадобилося. Принесли мені «жертву»: ноутбук Asus A7U з жахливо вторможеною віндою. Від Linux'а народ як завжди морозиться, тому буде на ньому жити чергова інкарнація вінди. 2Гб пам’яті і 64бітний двоядерний Turion були вагомими аргументами, щоб на цей раз спробувати 64бітну версію операційки.

Тихіше їдеш — далі будеш

Перенесено з сайту tourpro.com.ua

У зв’язку із постійною зайнятістю Маняка, ніяк не міг написати обіцяний відгук про поїздку нашої компанії у таке улюблене село Космач, а саме про мою подорож додому зі скал Довбуша, на які нас водила наша хазяйка.

Так от, Володька вже писав як ми йшли по дорозі, приколювалися один з одного, але це ще були дрібниці. Дорога назад була куди веселішою. Не знаю як так сталося, але я, Льоша (до речі, родич засновника скал), Volk і Хру поверталися додому окремо від інших.

Веселі сайти

Абревіатури наших установ, то виявляється ще «дєтскій лєпєт на лужайкє». Значно смішніше дивитися на назви сайтів, які мовою оригіналу ніби і нічого, а от якщо їх починає читати українець...

Ось вам підбірочка для доброго настрою:

Свірзький замок. Ідея для одноденного відпочинку + фотозвіт.

Перенесено з сайту tourpro.com.ua

Свірж — колись містечко, а зараз село в Перемишлянському районі, неподалік Бібрки. Нам цікаве тим, що там є замок, в котрому зараз йдуть реставраційні роботи, але кажуть, що за «добровільні пожертви» можна потрапити всередину.

Добратися до Свіржа можна зі Львова, а саме з п’ятої автостанції, що на розі Зеленої та Луганської, автобусом Львів—Перемишляни. Якщо є бажання десь годинку-дві прогулятися — сідайте на будь-що, що їде до Бібрки — з неї до Свіржа «всього нічого» (по гуцульських мірках це навіть не «кільомитр», а «ади гездичьки»)

З історії Свірзького замку нефахівцям відомо лише те, що тут знімали «д’Артаньяна і трьох мушкетерів» — Бітюнський монастир в фільмі це і є Свірзький замок в реалі.

Студентські роки

Сьогодні додам ще трохи старих фотографій, але на цей раз трохи більш тематична підбірка ніж минула — це фото нашої університетської групи. Декого з цих людей я вже десять років не бачив :-(

Наші студентські походи. Фотоархів.

Перенесено з сайту tourpro.com.ua

Щоб Ви могли приблизно уявити собі персонажів, з якими відбувалися прикольні історії «сім по гривні п’ятдесят — сім п’ятдесят» і «тут вісім і тут вісім», а заодно нагадати їм, що випускний в нас був якраз десять років назад і пасувало б зібратися — покопався я ще в своєму фотоархіві і назбирав знимки з наших вилазок в Карпати.

Працює на AutoGenCMS 0.2.6

А чому це всі вирішили, що в сайта має бути шапка?