Ubuntu Server на VirtualBox. Настройка сети. #2

На этот раз всё на порядок проще :) Просто пришлось подымать на работе физический сервер внутри корп сети и я обрел некий новый экспириенс :) Итак. На этот раз устроим всё через сетевой мост. Без ната и виртуалхост адаптера.
Описываем как обстоят дела:
Windows 7 - host OS
UBUNTU 9.04 - guest OS (естественно в VirtualBox, на примере версии 3.0.8)
Host OS ходит в сеть через вайфай, соответственно у роутера ip 192.168.1.1
Какой ип у host OS по большому счету пофиг.
Надо:
Вытащить guest OS в интернет и одновременно лок сеть, то есть видеть по сети host OS.
Как:
Ржака. Как два пальца. Создаем одно соединение в свойствах машины, вот такое:

вот он bridged adapter

virtual box bridged adapter

Так. Обратите внимание, выбран беспроводной адаптер, то есть тот который у меня ходит в сеть по вайфаю, вообще у меня их два, есть ещё простая езернет сетевуха.
Мораль: надо выбрать тот адаптер который на самом деле ходит в сеть.
Теперь идем в /etc/network/interfaces и пишем там:

auto eth4
iface eth4 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1

Почему eth4? Потому что гладиолус. Чтобы узнать что у вас смотрим dmesg | grep eth
Далее, в /etc/resolv.conf дописываем:

nameserver 192.168.1.1

Кто не понял - это тот же ip шлюза. В общем-то и всё. Теперь как обычно /etc/init.d/networking restart и в бой :)

Как расшарить папку между гостевой и хост ОС в VirtualBox (Shared Folders)

Как как.. ну в мануале всё написано. Сначала как ни выкручивайся надо поставить Virtual Box Guest Additions. У меня нету оконного менеджера на девзоне, поэтому у меня были небольшие заморочки с этим. Ну,.. условно заморочки. Хост система - Windows 7, гостевая - Ubuntu 9.04 (32bit). Как было дело:

  1. Devices -> Mount CD/DVD-ROM -> CD/DVD-ROM Image
  2. Выбираем VBoxGuestAdditions.iso (лежит в папке с виртуалбоксом)
  3. sudo mount /media/cdrom0 
    cd /media/cdrom0 
    ls -la 
    
    Видим в списке файлик VBoxLinuxAdditions-x86.run (autorun.sh не заработает, потому что хочет gksudo, а иксов нету)
  4. Запускаем инсталятор дополнений руками
    sudo sh ./VBoxLinuxAdditions-x86.run
    
    И нифига не выходит потому что не установлен make, не установлены исходники ядра и ещё какая-то лабуда. Решаем эти проблемы при помощи гугла, kernel headers ставятся так
    sudo apt-get update 
    apt-cache search linux-headers-$(uname -r) 
    sudo apt-get install linux-headers-$(uname -r)
    
    Дальше всё что надо и не ставится идем в гугл и читаем как поставить. Всё тривиально, apt-get-ом. Эту итерацию выполняем до победы, пока установка дополнений не пройдет до конца без ошибок (ну, кроме матюгов по поводу того, что не установлены дополнения для иксов, а у нас их и нема, если консоль только, так что это не важно).
  5. Теперь, когда гостевые дополнения установлены делаем
    lsmod | grep vbox 
    modprobe vboxvfs # если lsmod не сказал что есть такое слово.
    
    То есть на этом этапе мы должны убедиться что дополнения установлены и модуль vboxvfs запущен. vboxvfs == VirtualBox Virtual File System видимо
  6. Теперь идем Devices -> Shared Folders и добавляем там папку с локального диска для того чтобы расшарить её с гостевой ОС. Выбираем папку которую хотим расшарить, имя шары для VirtualBox и тип доступа. Таким образом VirtualBox будет видеть эту шару по имени которое прописано в колонке Name (см рисунок). Причем клиент ОС видит новую шару сразу, без всяких перезагрузок.
  7. Теперь нашу шару надо подключить.
    cd ~ 
    mkdir my_shared 
    sudo mount.vboxsf virtbox_shared my_shared
    
    Таким образом мы прицепим шару с хост ОС E:\projects\virtbox_shared к папке ~\my_shared на гостевой ОС (см. рисунок). Дальше можно прописать это в fstab (virtbox_shared /home/ijin/my_shared vboxsf defaults 0 0) и бла-бла-бла, уже понятно. Ну вот. И вся любовь. Целостностью файловых систем озадачивается VirtualBox и я склонен ему доверять. Шара с вирт машиной - удобная штука. По идее можно вообще локально держать софт а выполнять на виртуальной машине если грамотно структуру проекта разложить. Там конечно, как всегда есть свои нюансы, но это уже отдельная история.
это список shared folders для VirtualBox

VirtualBox shared folders

Windows XP: Ubuntu Server на VirtualBox. Настройка сети.

Ад. По сравнению с VMWare. Странно но в Vista всё работало и в третьем VirtualBox-е. Здесь же речь пойдет о VirtualBox 2.2 С третьим под WinXP я как ни мучался - ничего у меня не вышло. Под вистой тройка взлетает без проблем. Итого, задача: есть Ubuntu Server как клиент ОС и WinXP как сервер ОС. Необходимо чтобы ось клиент ходила в интернет без проблем, видела машины в локальной сети и машины из локальной сети могли до неё достучаться. В моем случае расклад такой: есть wifi-роутер который раздает ипы для клиентов в диапазоне 192.168.1.2\254, сам он 192.168.1.1 понятно. Есть ноут, его ип - 2. На нем WinXP и VirtualBox с Ubuntu. Надо всю эту братию подружить. Ставится виртбокс без особых проблем, но с большим количеством воплей про то что это ПО не тестировалось на совместимость с WinXP (кстати в примере речь идет о WinXP SP3). Вопли игнорируем, виртбокс ставим. Поднимаем в нем Ubuntu. Добираемся до сетевых дел. Идем в настройки сети (для этого виртуальную машину надо остановить). Там устанавливаем два сетевых адаптера вот таким вот образом:

этот адаптер у нас будет смотреть в интернет, внешний мир

VirtualBox 2.2 настройка сети

а это тот самй пресловутый мост из VirtualBox Bridged Networking Driver

VirtualBox 2.2 настройка сети
Вот так вот. Вроде проще некуда. Казалось бы. Дальше запускаем виртуальную машину и топаем в настройки сети. По умолчанию соединение которое создал VirtualBox (VirtualBox Host-Only Network) у меня было с адресом 192.168.56.1, менять его я не стал, но вообще уверен что изменить его совсем не проблемно. Идем править интерфейсы в /etc/networking/interfaces (кстати, на всякий случай про положение адаптеров можно почитать вот так dmesg | grep eth) Выглядеть интерфейсы после настройки у меня стали примерно так:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth2
iface eth2 inet dhcp

auto eth3
iface eth3 inet static

address 192.168.56.10
netmask 255.255.255.0
Пояснять тут в общем-то нечего. Разве что ip виртуалки в локальной сети зафиксировался на 10-м номере. Дальше перезапускаем сеть и всё. В общем-то всё очень просто. Но я честно уже не раз это делаю и всё равно забываю постоянно, что и как должно быть. Может теперь запомню :)
это финал после нехитрых
sudo ifconfig eth2 up
sudo ifconfig eth3 up
sudo /etc/init.d/networking restart

VirtualBox 2.2 настройка сети
Вот и всё. Ставим LAMP и девелопим в своё удовольствие в условиях значительно приближенных к боевым. Кстати мы при этом ничего не украли, софт-то свободный :) Приятного программирования.

Как присоединить физический HDD, как найти большие директории

Случилась тут такая фигня. Выделил я под виртуальную машину всего ничего - 8Гб. И жил там себе и радовался. А тут на тебе, работы как привалило и внезапно я ощутил боль от такого вот опрометчивого шага. А сам VirtualBox как-то не разрешает динамически взять так и хопа сделать виртуальный хард больше. Оно и понятно, гостевая операционка с ума сойдет от таких поворотов. И решил я создать ещё один виртуальный хард и присоединить его к своей виртуалке и всё самое толстое (своё барахло по работе, базы мускульные, тонны дампов софта и тп лабудень) перенести на этот новый хард. Ну вот отрезал я значит ещё 20Гб, перезапустил виртуалку ии.. Само собой ничего автоматом не подхватилось. Поскольку в настройке линукса я новичек практически, пошел я гуглить. Ну и нагуглил ссылочку раз (как прицепить новый хард) и ссылочку два (как его отформатировать). В общем очень интересно было покрутить мозгами в ночи и постучать в бубен чуток :) Вот что примерно пришлось проделать.

sudo fdisk -l
/*
хм.. диск есть в системе. это круто. но на нем непонятная файловая система и нету разделов. 
кстати разделы можно посмотреть командой ls /dev/disk/by-uuid например, 
там ещё можно по-другому поглядеть, смотрим ls /dev/disk/
ну чо дальше.. ну думаю форматну-ка я его.
*/
sudo mkfs.ext3 /dev/sdb
sudo fdisk -l

/*
о, круто, больше на разметку диска не ругается
теперь значит можно раздел создать (я наоборот сделал, надо было сначала 
раздел а потом форматировать, но и так тоже работает как ни странно)
*/
sudo fdisk /dev/sdb

/*
тут мастер меня поспрашивал чего я хочу, я захотел один первичный 
раздел со всеми дефолтными настройками
*/
sudo fdisk -l

/*
ну что, всё круто. никаких матюгов уже не видно. премонтировать чтоли надо теперь.
*/
cd /home
sudo mkdir disk2
sudo mount /dev/sdb /home/diks2
cd /home/disk2
ls -la

/*
ура. примонтировано. lost+found папку видно. отлично.
ну теперь вроде как всё просто. надо дать себе на эту папку прав, бросить 
линк на неё в хомяк для удобства (моего) и радостно переложить туда всё своё барахло.
*/
sudo mkdir web
sudo chown ijin:ijin web
cd ~
ln -s /home/disk2/web

/*
во. теперь /home/ijin/web -> /home/disk2/web
всё. в конфигах апача поправил пути
ну и всё. смотрю свободное место..
*/
df -h

/*
и вижу что на первом диске весь этот секс освободил мне каких-то 800 МБ всего-то. 
так, думаю.. вот хренота. ещё пару жирненьких дампов в БД волью и привет. 
Надож как-то всё жирное унести .. минут 5 пытаюсь руками найти где лежат мускульные базы. 
ищу вручную найти не могу. вспоминаю про волшебную утилитку du. делаю значит..
*/
cd /
sudo du -h | grep mysql

/*
rem: sudo - чтобы ходить по всем-всем папкам, даже тем в которые у моего юзера нет доступа.
и вижу ацкий поток строк. смотрю на строчки которые du отдает (хорошо уже глазки привыкли 
на всё подряд регулярные выражения примерять :) и вижу, что указанный размер в Гб можно 
легко выловить из этого потока шлака. у grep есть клёви ключик -r, который позволяет не тупо 
искать подстроку а искать строчку совпадающую с регулярным выражением.
*/
cd /
sudo du -h | grep -r .*G.*mysql.*

/*
и вот они искомые обожравшиеся папки :) везение конечно чистой воды, наверняка есть
способ проще узнать где лежат мускульные базы, или просто нефигово бы знать где они 
лежат.. но в общем вот так вот при помощи кувалды и какой-то матери :) пришли к нужному 
результату. как говорил товарищ Христос "ищите и обрящите" (с) =)
*/
du disk usage

/*
теперь наверное осталось закрепить успех в /etc/fstab
для чего исполняем
*/
sudo mcedit /etc/fstab

/*
и в нем по аналогии с "UUID=бебебе / бебебе"  (это подключение основного раздела 
первого диска по UUID я так понимаю) прописываем
/dev/sdb /home/disk2 бебебе как в оригинальной строке хвост про ext3 и ещё какая-то "лабуда"
это надо затем чтобы после каждой перезагрузки не приходилось обламываться от того что 
второй диск не подключен и при загрузке демоны которые с него почитать хотят страшными 
словами ругаются, кроме того.. ну к нему тупо не будет доступа пока не скажешь
*/
sudo mount /dev/sdb /home/disk2

/*
в общем вот так должно быть примерно в фстабе
*/

Ну дальше понятно, упер базы на другой диск. Вот такая вот карусель. Чем больше калупаюсь с линуксом тем больше он мне нравится. Там всё можно сделать миллионом разных способов. Границ практически нет. Космические знания не нужны - под рукой всегда есть man и гугл. Только желание по сути. Я ещё хотел как-то написать про настройку сети в VirtualBox при том что ноут у меня ходит в сеть не по проводу, а через вайфай роутер, и одним коннектом на инет не обойтись, так как при таком раскледе на виртуалку не зайти, и надо было ещё один сетевой интерфейс поднимать, но это.. как говорится, совсем другая история :) Удачи вам. In byte we trust ;)

P.P.S.: да, при переносе баз в другое место я огреб уже известную с 8.04 проблему с apparmor. Фиксится это просто:
sudo mcedit /etc/apparmor.d/usr.sbin.mysqld

# меняем путь в строках
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
# на свой
# /home/disk2/mysql_db/ r,
# /home/disk2/mysql_db/** rwk,

sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart

# взлёт. 5 минут полет нормальный. =)
# права на папки 755, на файлы 660
# пользователь и группа на всё mysql:mysql