KVM, Benim icin yeni bir baslangic – Sanal Sunucu Yaratma (ubuntu-vm-builder)

Simdi sira geldi sanal makine yaratmaya, normalde vmware veya hyper-v kullananlar birkez sanal makine yaratip isletim sistemine gore “sysprep” veya benzeri islemleri yapip daha sonra benzeri sanal makineleri yaratmak icin bu imajlari kullanip yollarina devam ederler , openstack dokumanlarina bakildiginda hazir indirilebilir imajlar mevcut ama nasil iliskilendiriliyor bir sonraki makalede inceleyecegim -> http://docs.openstack.org/image-guide/ubuntu-image.html, ek olarak birde virt-install uygulamasina bakacagim cunku openstack olayinda ilk ornekler virt-install ile🙂

ubuntu-vm-builder

Burada fazla konusmaktansa direkt komut ve aldigi parametreleri gormek daha guzel olacak🙂

->libvirt + bridge <-

noroot@kvmci:~$ sudo ubuntu-vm-builder kvm trusty –addpkg linux-image-generic –addpkg openssh-server –arch amd64 –hostname server4 –dest server4 –libvirt qemu:///system –bridge bridge1 –mem 1024 –cpus 1 –ip xxx.yyy.zzz.212 –mask 255.255.255.224 –net xxx.yyy.zzz.192 –bcast xxx.yyy.zzz.223 –gw xxx.yyy.zzz.193 –dns 8.8.8.8 ;

Burada onemli konular ;

  • ilk parametre (kvm|xen) gibi , burada hypervisor olarak kvm kullandigimiz icin kvm yazdim
  • isletim sistemi release adini vermelisiniz mesela “trusty” . Hazirda calistiginiz Ubuntu release adini ogrenmek icin “lsb_release -a” komutunu calistirabilirsiniz.
  • Burada onemli bir bug var , ubuntu trusty derlerken mutlaka “–addpkg linux-image-generic” paramteresini ekleyin aksi taktirde islem sonuclanmayacak, ilgili bug id ve link – > https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/1037607
  • Ubuntu icin lutfen dikkat “–addpkg openssh-server” eklemezseniz SSH yapamazsiniz😀
  • Eger sanal makineyi libvirt ile manage edecekseniz mutlaka bu parametreyi ekleyin “–libvirt qemu:///system”
  • Sanal makinenin sanal network interface’nin baglanacagi bridge’i belirtiyoruz “–bridge bridge1”
  • Memory/cpu gibi bilgiler set edilmis durumda
  • Bunun disinda geri kalan diger paramtereleri vermedik ve onlarin hepsi varsayili olanlar olacak, mesela ;
    • Disk 4 G
    • istenir ise ayretten /opt belirtilebilir ama parametreyi set etmedigimiz icin olmayacak
    • Kullanici adi varsayili olarak ubuntu sifre ubuntu
    • Dil UTC
  • Ek ne tip parametreler set edebilmek icin “sudo ubuntu-vm-builder kvm trusty –help” yazip kontrol edin lutfen
  • Kurulum asamasinda ne oldugunu gormek icin (eger temp path’ini  ubuntu-vm-builder komutunu calistirirken farkli bir yol tanimlamadiysaniz) tail -f /tmp/tmpnMt5S_ bakabilirsiniz
  • Islem bittikten sonra isletim sisteminin icersinde oldugu sanal makinenin qcow2 uzantili dosya ile ilgili ubuntu-vm-builder komutunu nerede calistirdiysaniz, orada olacatir. Islem sonunda tum isletim sistemleri paketleri temp dosyasi adinda ve qcow2 uzantili bir dosyada birlestirilecektir.

 

ubuntu-vm-builder yarattigi isletim sistemi imaji nerede ?

noroot@kvmci:~$ pwd

/home/noroot

noroot@kvmci:~$ ls -al server1/

total 751636

drwxr-xr-x 2 noroot noroot      4096 Nov 27 12:06 .

drwxr-xr-x 9 noroot noroot      4096 Nov 27 15:01 ..

-rwxrwxr-x 1 noroot noroot        68 Nov 27 12:03 run.sh

-rw-r–r– 1 noroot noroot 769720320 Nov 27 12:03 tmpSCgVIU.qcow2

Eger –libvirt qemu:///system eklemezseniz ne olur ? Sanal makineyi libvirt uzerinden yonetemezsiniz , makineyi calistirmak icin islem sonrasi yaratilan bash script’ini kullanmalisiniz.

noroot@kvmci:~$ cd server1/

noroot@kvmci:~/server1$ ls -al

total 751636

drwxr-xr-x 2 noroot noroot      4096 Nov 27 12:06 .

drwxr-xr-x 9 noroot noroot      4096 Nov 27 15:01 ..

-rwxrwxr-x 1 noroot noroot        68 Nov 27 12:03 run.sh

-rw-r–r– 1 noroot noroot 769720320 Nov 27 12:03 tmpSCgVIU.qcow2

run.sh icerigi ….

noroot@kvmci:~/server1$ cat run.sh

#!/bin/sh

exec kvm -m 1024 -smp 1 -drive file=tmpSCgVIU.qcow2 “$@”

Simdi sunucuyu gorelim, burada dikkat etmemiz gereken konu “–all” olayi eger bunu eklemezseniz ilgili makineyi goremezsiniz😀

 

virsh # list –all

Id    Name                           State

—————————————————-

9     server6                        running

–     server5                        shut off

Calistiralim

noroot@kvmci:~$ virsh start server5

setlocale: No such file or directory

Domain server5 started

Not : Bu arada ben komutlari hep direkt calistiriyorum iserseniz ayni sekilde once “virsh” diyerek virsh# console’a sonrada geri kalan komutu yani “start server5” diyebilirsiniz

Ilgili sanal sunucuyu durdurmak icin , burada “destory” korkutucu gelmesin stop ediyor kendisi🙂

noroot@kvmci:~$ virsh destroy server5

setlocale: No such file or directory

Domain server5 destroyed

veya

noroot@kvmci:~$ virsh shutdown server5

setlocale: No such file or directory

Domain server5 is being shutdown

Peki sanki bir VMware sanal sunucu gibi vmx dosyasini ve icergini gormek istesek 

noroot@kvmci:~$ virsh edit server5

setlocale: No such file or directory

<domain type=’kvm’>

<name>server5</name>

<uuid>649ccb80-622e-48d2-8a5c-28e5c6f444fd</uuid>

<memory unit=’KiB’>1048576</memory>

<currentMemory unit=’KiB’>1048576</currentMemory>

<vcpu placement=’static’>1</vcpu>

<os>

<type arch=’x86_64′ machine=’pc-i440fx-trusty’>hvm</type>

<boot dev=’hd’/>

</os>

<features>

<acpi/>

</features>

<clock offset=’utc’/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>destroy</on_crash>

<devices>

<emulator>/usr/bin/kvm</emulator>

<disk type=’file’ device=’disk’>

<driver name=’qemu’ type=’qcow2’/>

<source file=’/home/noroot/server5/tmp9QV2Om.qcow2’/>

<target dev=’hda’ bus=’ide’/>

<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’0’/>

</disk>

<controller type=’usb’ index=’0′>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x01′ function=’0x2’/>

</controller>

<controller type=’pci’ index=’0′ model=’pci-root’/>

<controller type=’ide’ index=’0′>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x01′ function=’0x1’/>

</controller>

<interface type=’bridge’>

<mac address=’52:54:00:39:f8:8e’/>

<source bridge=’bridge1’/>

<model type=’virtio’/>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>

</interface>

<input type=’mouse’ bus=’ps2’/>

<input type=’keyboard’ bus=’ps2’/>

<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’0.0.0.0′>

<listen type=’address’ address=’0.0.0.0’/>

</graphics>

<video>

<model type=’cirrus’ 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>

Bundan sonrasi vi editor kullanmak gibi, eger degisiklik yapicaginiz birsey var ise onu degisitip “wq” save edip sanal sunucuyu tekrardan calistiriyorsunuz.

Interface kismina dikkat, burada sanal sunucunun hangi bridge , sunucuya hangi MAC atandigina ve kart tipini gorebilirsiniz.
“virtio” bizim icin onemli cunku cunku yuksek performans’li network ve disk gereksinimleri icin gerekli, kendisini Xen paravirtualized device veya VMware Guest Tools gibi.

<interface type=’bridge’>

<mac address=’52:54:00:39:f8:8e’/>

<source bridge=’bridge1’/>

<model type=’virtio’/>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>

</interface>

Aaaaa network calisiyor mu diye kontrol etmeyi unuttuk :( 

ubuntu@server6:~$ ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=49 time=36.1 ms

64 bytes from 8.8.8.8: icmp_seq=2 ttl=49 time=35.5 ms

64 bytes from 8.8.8.8: icmp_seq=3 ttl=49 time=35.4 ms

Guzel calisiyor… , birde bridge ve ifconfig gorunumune bakalim , asagida bridge’e bagli MAC adresleri aktif olup olmadiklari var

noroot@kvmci:~$ brctl showmacs bridge1

port no mac addr is local? ageing timer

1 00:17:a4:77:0c:95 yes   0.00

1 00:1f:9e:78:e8:87 no   0.32

1 00:24:38:99:bf:00 no   3.57

3 52:54:00:5b:f5:0c no   70.08

1 9c:b6:54:91:cb:2d no   21.43

1 c8:cb:b8:a5:7c:a9 no   0.57

3 fe:54:00:5b:f5:0c yes   0.00

vnet1 bridge e baglanmis , vnet’lerin her biri sanal sunucularin network interface’leri oluyor

noroot@kvmci:~$ brctl show

bridge name bridge id STP enabled interfaces

bridge1 8000.0017a4770c95 no em2

vnet1

ifconfig ciktilarida asagidaki gibi 

vnet1     Link encap:Ethernet  HWaddr fe:54:00:5b:f5:0c

inet6 addr: fe80::fc54:ff:fe5b:f50c/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:629 errors:0 dropped:0 overruns:0 frame:0

TX packets:26569 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:500

RX bytes:67253 (67.2 KB)  TX bytes:1662178 (1.6 MB)

Birde console a nasil dusuyoruzu yapar isek bu is biter😀 basit anlamda islemleri yapmis olacagiz bunun icin bir iki ayari degisitirip sanal sunucuyu tekrardan calistiracagiz.

Oncelikle sanal sunucu konfograsyon dosyasindaki “graphics”  kisminda 127.0.0.1 yazan kismi asagidaki gibi degisitir ve sanal sunucuyu tekrardan baslatin

<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’0.0.0.0′>
<listen type=’address’ address=’0.0.0.0’/>
</graphics>

Yok ise VNC Client indirip , calisitirin. Hangi VNC port’u kullanacaginizi asagidaki komut ile ogrenebilirsiniz

noroot@kvmci:~$ virsh vncdisplay server6

setlocale: No such file or directory

:1

KVM node’un ip adresinin yanina display numarasini ekleyin xxx.yyy.zzz.ttt:1 gibi yukardaki gibi ….

Screen Shot 2015-11-27 at 17.38.29

ve guzellllllll

Screen Shot 2015-11-27 at 17.34.50

Serial Console uzerinden baglanmak icin ; 

https://jaredkipe.com/blog/programming/general/ubuntu-kvm-3-virsh-console-fix/ veya https://help.ubuntu.com/community/KVM/Access

 

VNC Download for MAC : https://www.realvnc.com/download/get/1734/eula/

VM

Posted on 27/11/2015, in KVM. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: