Yakın bir zamandır Openstack ile uğraşıyorum ve bununla birlikte’de KVM ile uğraşıyorum. Bu yazımda sizlere Ubuntu üzerine KVM kurulumu hakkında bilgi vereceğim. Sanallaştırma çözümlerine baktığınızda genel olarak birçok firma başta VMware vSphere ESXi olmak üzere Hyper-V, Citrix XenServer gibi hypervisor’leri kullanıyor.
Bu kurulumda aşağıdaki donanımı kullandım.
http://www.tayfundeger.com/vmware-home-lab
KVM’i kurmak en önemli gereksinimlerden birtanesi CPU desteğinizin olmasıdır. Bunu da zaten kuruluma başlamadan önce check edebiliyoruz.
Ben kurulumu Ubuntu 14.04 üzerine yapacağım. SSH ile bağlantı yapıyorum ve kullanmış olduğum CPU’nun KVM uyumluluğunu görmek için aşağıdaki komutu çalıştırıyoruz ve gerekli paketler kuruluyor.
01 |
tayfun@KVM2:~$ sudo apt-get install cpu-checker |
|
02 |
Reading package lists… Done |
03 |
Building dependency tree |
|
04 |
Reading state information… Done |
05 |
The following extra packages will be installed: |
|
06 |
msr-tools |
07 |
The following NEW packages will be installed: |
|
08 |
cpu-checker msr-tools |
09 |
0 upgraded, 2 newly installed, 0 to remove and 88 not upgraded. |
|
10 |
Need to get 17.5 kB of archives. |
11 |
After this operation, 112 kB of additional disk space will be used. |
|
12 |
Do you want to continue? [Y/n] y |
13 |
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty/main msr-tools amd64 1.3-2 [10.6 kB] |
14 |
Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty/main cpu-checker amd64 0.7-0ubuntu4 [6,834 B] |
15 |
Fetched 17.5 kB in 3s (4,985 B/s) |
|
16 |
Selecting previously unselected package msr-tools. |
17 |
(Reading database … 55709 files and directories currently installed.) |
|
18 |
Preparing to unpack …/msr-tools_1.3-2_amd64.deb … |
19 |
Unpacking msr-tools (1.3-2) … |
|
20 |
Selecting previously unselected package cpu-checker. |
21 |
Preparing to unpack …/cpu-checker_0.7-0ubuntu4_amd64.deb … |
|
22 |
Unpacking cpu-checker (0.7-0ubuntu4) … |
23 |
Processing triggers for man-db (2.6.7.1-1ubuntu1) … |
|
24 |
Setting up msr-tools (1.3-2) … |
25 |
Setting up cpu-checker (0.7-0ubuntu4) … |
cpu-checker paketi kurulduktan sonra, kullanmış olduğumuz CPU’nun kvm ile uyumlu olup olmadığını görmek için aşağıdaki komutu çalıştırıyoruz.
1 |
tayfun@KVM2:~$ kvm-ok |
2 |
INFO: /dev/kvm exists |
3 |
KVM acceleration can be used |
|
4 |
tayfun@KVM2:~$ |
KVM için önerilen kurulum 64 bit bir mimari üzerinedir ancak bu gerekli değildir. Yani 32 bit bir mimari üzerinede kurulum yapabilirsiniz. Aşağıdaki komutu çalıştırdığımızda;
Eğer 0 gözükür ise bu işlemcinin 64 bit olmadığı anlamına gelir.
Eğer 1 ‘den yüksek bir değer görürseniz bu CPU ‘nun 64 bit ile uyumlu olduğu anlamına gelir.
1 |
tayfun@KVM2:~$ |
|
2 |
tayfun@KVM2:~$ egrep -c ‘ lm ‘ /proc/cpuinfo |
3 |
16 |
|
4 |
tayfun@KVM2:~$ |
5 |
tayfun@KVM2:~$ |
KVM Kurulumu:
KVM kurulumu için gerekli olan paketleri aşağıdaki komut ile yüklüyoruz.
001 |
tayfun@KVM2:~$ |
|
002 |
tayfun@KVM2:~$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils |
003 |
[sudo] password for tayfun: |
|
004 |
Reading package lists… Done |
005 |
Building dependency tree |
|
006 |
Reading state information… Done |
007 |
The following extra packages will be installed: |
|
008 |
acl augeas-lenses binutils build-essential cgroup-lite cpp cpp-4.8 |
009 |
dctrl-tools debootstrap devscripts diffstat distro-info-data dnsmasq-base |
010 |
dpkg-dev dput ebtables fakeroot g++ g++-4.8 gcc gcc-4.8 gcc-4.8-base gettext |
011 |
hardening-includes intltool-debian iproute ipxe-qemu kpartx libaio1 |
|
012 |
libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl |
013 |
libapt-pkg-perl libarchive-zip-perl libasan0 libasound2 libasound2-data |
|
014 |
libasprintf-dev libasyncns0 libatomic1 libaugeas0 libauthen-sasl-perl |
015 |
libautodie-perl libavahi-client3 libavahi-common-data libavahi-common3 |
016 |
libbluetooth3 libboost-system1.54.0 libboost-thread1.54.0 libbrlapi0.6 |
017 |
libc-dev-bin libc6 libc6-dev libcaca0 libclone-perl libcloog-isl4 |
|
018 |
libcommon-sense-perl libcroco3 libdigest-hmac-perl libdistro-info-perl |
019 |
libdpkg-perl libemail-valid-perl libencode-locale-perl liberror-perl |
|
020 |
libexporter-lite-perl libfakeroot libfdt1 libfile-basedir-perl |
021 |
libfile-fcntllock-perl libfile-listing-perl libflac8 libfont-afm-perl |
|
022 |
libgcc-4.8-dev libgettextpo-dev libgettextpo0 libgmp10 libgomp1 |
023 |
libhtml-form-perl libhtml-format-perl libhtml-parser-perl |
|
024 |
libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl |
025 |
libhttp-daemon-perl libhttp-date-perl libhttp-message-perl |
|
026 |
libhttp-negotiate-perl libio-html-perl libio-pty-perl |
027 |
libio-socket-inet6-perl libio-socket-ssl-perl libio-stringy-perl |
|
028 |
libipc-run-perl libipc-system-simple-perl libisl10 libitm1 libjpeg-turbo8 |
029 |
libjpeg8 libjson-perl libjson-xs-perl liblist-moreutils-perl |
|
030 |
liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmnl0 |
031 |
libmpc3 libmpfr4 libnet-dns-perl libnet-domain-tld-perl libnet-http-perl |
|
032 |
libnet-ip-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnetcf1 |
033 |
libnetfilter-conntrack3 libnl-route-3-200 libnspr4 libnss3 libnss3-nssdb |
|
034 |
libogg0 libparse-debcontrol-perl libpciaccess0 libperlio-gzip-perl |
035 |
libpixman-1-0 libpulse0 libquadmath0 librados2 librbd1 libsdl1.2debian |
|
036 |
libseccomp2 libsndfile1 libsocket6-perl libspice-server1 libstdc++-4.8-dev |
037 |
libstdc++6 libsub-identify-perl libtext-levenshtein-perl libtie-ixhash-perl |
038 |
libtsan0 libunistring0 liburi-perl libusbredirparser1 libvirt0 libvorbis0a |
039 |
libvorbisenc2 libwww-perl libwww-robotrules-perl libx86-1 libxen-4.4 |
|
040 |
libxenstore3.0 libxml2-utils libxslt1.1 libyajl2 lintian linux-libc-dev |
041 |
manpages-dev patchutils pm-utils python-cheetah python-libvirt |
042 |
python-vm-builder python3-chardet python3-debian python3-magic |
043 |
python3-pkg-resources python3-six qemu-keymaps qemu-system-common |
|
044 |
qemu-system-x86 qemu-utils seabios sharutils t1utils unzip vbetool wdiff |
045 |
Suggested packages: |
|
046 |
augeas-doc binutils-doc cpp-doc gcc-4.8-locales debtags bsd-mailx mailx |
047 |
cvs-buildpackage devscripts-el gnuplot libfile-desktopentry-perl |
|
048 |
libterm-size-perl libyaml-syck-perl mutt svn-buildpackage debian-keyring |
049 |
equivs libsoap-lite-perl mini-dinstall python-bzrlib g++-multilib |
|
050 |
g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg gcc-multilib autoconf |
051 |
automake1.9 libtool flex bison gdb gcc-doc gcc-4.8-multilib libgcc1-dbg |
|
052 |
libgomp1-dbg libitm1-dbg libatomic1-dbg libasan0-dbg libtsan0-dbg |
053 |
libquadmath0-dbg gettext-doc libasound2-plugins alsa-utils augeas-tools |
|
054 |
libgssapi-perl glibc-doc libdata-dump-perl libcrypt-ssleay-perl pulseaudio |
055 |
libstdc++-4.8-doc radvd libauthen-ntlm-perl binutils-multiarch |
|
056 |
libtext-template-perl libyaml-perl cpufrequtils radeontool python-markdown |
057 |
python-pygments python-memcache python3-setuptools samba vde2 sgabios |
|
058 |
kvm-ipxe-precise zip |
059 |
The following NEW packages will be installed: |
|
060 |
acl augeas-lenses binutils bridge-utils build-essential cgroup-lite cpp |
061 |
cpp-4.8 dctrl-tools debootstrap devscripts diffstat distro-info-data |
|
062 |
dnsmasq-base dpkg-dev dput ebtables fakeroot g++ g++-4.8 gcc gcc-4.8 gettext |
063 |
hardening-includes intltool-debian iproute ipxe-qemu kpartx libaio1 |
|
064 |
libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl |
065 |
libapt-pkg-perl libarchive-zip-perl libasan0 libasound2 libasound2-data |
|
066 |
libasprintf-dev libasyncns0 libatomic1 libaugeas0 libauthen-sasl-perl |
067 |
libautodie-perl libavahi-client3 libavahi-common-data libavahi-common3 |
068 |
libbluetooth3 libboost-system1.54.0 libboost-thread1.54.0 libbrlapi0.6 |
069 |
libc-dev-bin libc6-dev libcaca0 libclone-perl libcloog-isl4 |
|
070 |
libcommon-sense-perl libcroco3 libdigest-hmac-perl libdistro-info-perl |
071 |
libdpkg-perl libemail-valid-perl libencode-locale-perl liberror-perl |
|
072 |
libexporter-lite-perl libfakeroot libfdt1 libfile-basedir-perl |
073 |
libfile-fcntllock-perl libfile-listing-perl libflac8 libfont-afm-perl |
|
074 |
libgcc-4.8-dev libgettextpo-dev libgettextpo0 libgmp10 libgomp1 |
075 |
libhtml-form-perl libhtml-format-perl libhtml-parser-perl |
|
076 |
libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl |
077 |
libhttp-daemon-perl libhttp-date-perl libhttp-message-perl |
|
078 |
libhttp-negotiate-perl libio-html-perl libio-pty-perl |
079 |
libio-socket-inet6-perl libio-socket-ssl-perl libio-stringy-perl |
|
080 |
libipc-run-perl libipc-system-simple-perl libisl10 libitm1 libjpeg-turbo8 |
081 |
libjpeg8 libjson-perl libjson-xs-perl liblist-moreutils-perl |
|
082 |
liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmnl0 |
083 |
libmpc3 libmpfr4 libnet-dns-perl libnet-domain-tld-perl libnet-http-perl |
|
084 |
libnet-ip-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnetcf1 |
085 |
libnetfilter-conntrack3 libnl-route-3-200 libnspr4 libnss3 libnss3-nssdb |
|
086 |
libogg0 libparse-debcontrol-perl libpciaccess0 libperlio-gzip-perl |
087 |
libpixman-1-0 libpulse0 libquadmath0 librados2 librbd1 libsdl1.2debian |
|
088 |
libseccomp2 libsndfile1 libsocket6-perl libspice-server1 libstdc++-4.8-dev |
089 |
libsub-identify-perl libtext-levenshtein-perl libtie-ixhash-perl libtsan0 |
|
090 |
libunistring0 liburi-perl libusbredirparser1 libvirt-bin libvirt0 |
091 |
libvorbis0a libvorbisenc2 libwww-perl libwww-robotrules-perl libx86-1 |
|
092 |
libxen-4.4 libxenstore3.0 libxml2-utils libxslt1.1 libyajl2 lintian |
093 |
linux-libc-dev manpages-dev patchutils pm-utils python-cheetah |
|
094 |
python-libvirt python-vm-builder python3-chardet python3-debian |
095 |
python3-magic python3-pkg-resources python3-six qemu-keymaps qemu-kvm |
|
096 |
qemu-system-common qemu-system-x86 qemu-utils seabios sharutils t1utils |
097 |
ubuntu-vm-builder unzip vbetool wdiff |
|
098 |
The following packages will be upgraded: |
099 |
gcc-4.8-base libc6 libstdc++6 |
|
100 |
3 upgraded, 177 newly installed, 0 to remove and 85 not upgraded. |
101 |
Need to get 61.1 MB of archives. |
|
102 |
After this operation, 206 MB of additional disk space will be used. |
103 |
Do you want to continue? [Y/n] |
Devam etmek için Y butonuna basıyoruz ve ilgili paketler yükleniyor.
Kurulum tamamlandıktan sonra düzgün çalıştığına emin olmak için aşağıdaki komutu çalıştırıyoruz.
1 |
tayfun@KVM2:~$ virsh -c qemu:///system list |
|
2 |
error: failed to connect to the hypervisor |
3 |
error: Failed to connect socket to ‘/var/run/libvirt/libvirt-sock’: Permission denied |
Yukarıdaki komutu çalıştırdığımızda eğer hata alıyorsanız relogin olun yani çıkıp tekrar giriş yapın SSH’a.
1 |
tayfun@KVM2:~$ virsh -c qemu:///system list |
|
2 |
Id Name State |
3 |
—————————————————- |
|
4 |
|
5 |
tayfun@KVM2:~$ |
Tekrar login olduktan sonra aynı komutu yine çalıştırıyoruz ve karşımıza liste geliyor. Tabi şuanda virtual machine create etmediğimiz için karşımıza herhangi bir liste gelmiyor.
Ubuntu GUI ara yüzünü aşağıdaki komut ile yüklüyoruz.
1 |
sudo apt-get install –no-install-recommends ubuntu-desktop |
Eğer KVM üzerinde yapacağınız işlemleri GUI arayüzünü kullanarak yapmak istiyorsanız bunun için virt-manager paketini yüklemeniz gerekiyor.
1 |
sudo apt-get install virt-manager |
Yukarıdaki komutu çalıştırdığımızda Y butonu ile paketlerin yüklenmesini başlatıyoruz.
01 |
etting up libgnome2-bin (2.32.1-4ubuntu1) … |
|
02 |
Setting up libgnome2-0:amd64 (2.32.1-4ubuntu1) … |
03 |
Setting up libbonoboui2-0:amd64 (2.24.5-0ubuntu3) … |
|
04 |
Setting up libgnomeui-0:amd64 (2.24.5-3) … |
05 |
Setting up python-gnome2 (2.28.1+dfsg-1ubuntu2) … |
|
06 |
Setting up virt-manager (0.9.5-1ubuntu3) … |
07 |
Processing triggers for libc-bin (2.19-0ubuntu6.5) … |
|
08 |
Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.30.7-0ubuntu1) … |
09 |
tayfun@KVM2:~$ |
|
10 |
tayfun@KVM2:~$ sudo reboot |
11 |
|
|
12 |
Broadcast message from tayfun@KVM2 |
13 |
(/dev/pts/0) at 1:06 … |
Kurulum tamamlandıktan sonra sudo reboot komutu ile sunucuyu reboot ediyoruz. Artık GUI arayüzünde açılacaktır.
User’imiz ile login oluyoruz.
Virtual machine yönetimini yapacağımız Virtual Machine Manager’i açıyoruz. Bunun için /usr/share/appliacations bölümüne giriyoruz ve Virtual Machine Manager’ı açıyoruz.
Virtual machine’lerinizi buradan yönetebilir yeni virtual machine’ler oluşturabilir hatta bunları farklı bir KVM’e migrate bile edebilirsiniz.
Umarım faydalı olmuştur.
İyi çalışmalar.