Solaris işletim sisteminde sanallaştırma yapmak için farklı alternatiflerimiz mevcut. Bu yazımda, Zone kullanımından biraz bahsedeceğim.
İster x86, isterseniz SPARC mimariyle çalışın, aynı adımları birebir uygulayabilirsiniz. Bu testleri yapmak için fiziksel bir makineye de ihtiyacınız yok. Kullandığınız bilgisayar üzerine VirtualBox ile sanal bir Solaris kurabilir ve sanal makinenizin içinde, yeni sanal makineler oluşturabilirsiniz. Solaris işletim sistemini de, Oracle Solaris Downloads bağlantısından indirebilirsiniz.
Anlatıma başlamadan önce VirtualBox kullanacaklar için bir uyarı yapmak istiyorum. Sanal bir makinenin içinde, sanal makineler oluşturup, bunların içinde sanal network kartları oluşturduğunuzda, VirtualBox ağ trafiğini kesiyor. Bu sebeple, işlemlere başlamadan, network kartınızda Promiscuous Mode kısmını Allow All yapın.
Bu işlemi yaptıktan sonra, Solaris işletim sistemini başlatın ve root kullanıcısına geçip, aşağıdaki komutu çalıştırın. (Dediğim gibi aşağıdaki işlem, sadece VirtualBox ile ilgili bir durum.)
ccebi@solarisvm:~$ sudo -s Password: root@solarisvm:/export/home/ccebi# nohup snoop -d net1 > /dev/null & [1] 2182 Sending output to nohup.out
Bu anlatımda, iki adet sanal makine oluşturacağım. Oluşturacağım her makineye birer network kartı atamak istiyorum. Bunun için var olan bir ağ kartının üzerinden, sanal kartlar hazırlayacağım.
# ONCELIKLE HANGI KARTLAR VE IP ADRESLERINE BAKIYORUZ # STATIK OLAN net1 ARAYUZUNU, SANAL AG KARTLARIMIZDA # KULLANACAGIZ ccebi@solarisvm:~$ ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4address dhcp ok 10.0.2.15/24 net1/v4address static ok 192.168.1.199/24 lo0/v6 static ok ::1/128 # net1 KARTINDAN BESLENEN 2 (IKI) ADET # SANAL AG KARTI OLUSTURUYOR VE KONTROL EDIYORUZ ccebi@solarisvm:~$ sudo dladm create-vnic -l net1 vnic1 Password: ccebi@solarisvm:~$ sudo dladm create-vnic -l net1 vnic2 Password: ccebi@solarisvm:~$ dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE IDS vnic1 net1 1000 2:8:20:ae:61:ea random VID:0 vnic2 net1 1000 2:8:20:a2:25:7a random VID:0
İki adet sanal makine oluşturacağımı söylemiştim. Makine IP ve isimleri bilgileri aşağıdaki gibi olacak. Bu bilgileri şimdiden hosts dosyasına ilave ediyorum:
ccebi@solarisvm:~$ tail -2 /etc/hosts 192.168.1.201 zone1 192.168.1.202 zone2
Şimdi birinci sanal makinemiz için temel yapılandırmayı gerçekleştirelim:
ccebi@solarisvm:~$ sudo zonecfg -z zone1 zonecfg:zone1> create zonecfg:zone1> set zonepath=/zones/zone1 zonecfg:zone1> set autoboot=false zonecfg:zone1> set ip-type=exclusive zonecfg:zone1> add net zonecfg:zone1:net> set physical=vnic1 zonecfg:zone1:net> end zonecfg:zone1> verify zonecfg:zone1> commit zonecfg:zone1> exit # GIRDIGIMIZ AYARLARI KONTROL EDIYORUZ ccebi@solarisvm:~$ zonecfg -z zone1 info
Bu noktada,"sudo zoneadm -z zone1 install" komutu verip, kuruluma başlayabilirim. Fakat direkt kurmak yerine, bir profil dosyası oluşturmak ve kurulumu onunla yapmak daha ideal. Böylece, konfigüre ederken, hata yaparsanız, en başa dönmek gerekmez.
# PROFIL OLUSTURMAYA BASLIYORUZ ccebi@solarisvm:~$ sudo sysconfig create-profile -o zone1-profile
Bu ekranların sonunda, profile dosyası hazırlanmış olacak. Akabinde kurulumu tetikleyebiliriz.
# KURULUM ASISTANI ISINI TAMAMLADIGINDA # OLUSAN PROFILE DOSYASINA AIT PATH ASAGIDA GOZUKECEKTIR ... SC profile successfully generated as: ./zone1-profile/sc_profile.xml Exiting System Configuration Tool. Log is available at: /system/volatile/sysconfig/sysconfig.log.3904 # KURULUM ASISTANI ISINI TAMAMLADIGINDA # YUKLEME SURECINE BASLIYORUZ ccebi@solarisvm:~$ sudo zoneadm -z zone1 install -c /export/home/ccebi/zone1-profile/sc_profile.xml Password: The following ZFS file system(s) have been created: rpool/zones/zone1 Progress being logged to /var/log/zones/zoneadm.20170115T191755Z.zone1.install Image: Preparing at /zones/zone1/root. Install Log: /system/volatile/install.4445/install_log AI Manifest: /tmp/manifest.xml.TQaiQi SC Profile: /export/home/ccebi/zone1-profile/sc_profile.xml Zonename: zone1 Installation: Starting ... Creating IPS image Startup linked: 1/1 done Installing packages from: solaris origin: http://localhost:1008/solaris/45347d2f5986961996b87fae6543eaa5c1e32178/ DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 280/280 49526/49526 341.4/341.4 324k/s PHASE ITEMS Installing new actions 67415/67415 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done Updating package cache 1/1 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 1305.328 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20170115T191755Z.zone1.install
Makinenin kurulumu tamamlandı. Şimdi zone1'i başlatıyoruz.
# ASAGIDAKI KOMUTLA ZONE BASLATILIYOR ccebi@solarisvm:~$ sudo zoneadm -z zone1 boot Password: # CALISAN ZONE'LARI GORUYORUZ ccebi@solarisvm:~$ zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 4 zone1 running /zones/zone1 solaris excl
Bu arada çok etkileyici bir konuyu paylaşmadan geçemeyeceğim. VirtualBox üzerinde kurulu, Solaris işletim sistemine sadece tek işlemci çekirdeği verdim. Zone kapalıyken, açılması 4-5 saniye, kapanması ise 3-4 saniye sürüyor. Keza, reboot işlemi de toplamda 9 saniyeyi geçmiyor. Böyle düşük bir sistemde, sanal makinenin bu derece hızlı başlaması hâyli etkileyici!
zone1'e konsol üzerinden bağlanıyoruz:
# ZONE'A KONSOLDAN BAGLANMAK ICIN ASAGIDAKI KOMUT GIRILIR # ARDINDAN TEKRAR ENTER'A BASIP, KONSOL GIRISI ALINIR ccebi@solarisvm:~$ sudo zlogin -C zone1 Password: [Connected to zone 'zone1' console] # SOLARIS GUVENLIK KONUSUNDA OLDUKCA HASSASTIR # ISLETIM SISTEMI, root GIRISLERINE DIREKT KAPALIDIR zone1 console login: root Password: Roles can not login directly Login incorrect # OLUSTURDUGUMUZ zoneadm1 KULLANICISYLA GIRIS YAPILIR zone1 console login: zoneadm1 Password: Oracle Corporation SunOS 5.11 11.3 September 2015 zoneadm1@zone1:~$ hostname zone1 # MAKINEYE VERILEN IP ADRESLERINI VE ARAYUZLERI LISTELIYORUZ # 192.168.1.201 ADRESINDEN, zone1 SUNUCUSUNA ERISIM OLDUGUNU # BASKA SUNUCULARDAN ARTIK DENEYEBILIRIZ zoneadm1@zone1:~$ ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1 vnic1/v4 static ok 192.168.1.201 lo0/v6 static ok ::1/128 vnic1/v6 addrconf ok fe80::8:20ff:feae:61ea/10
Ufak bir operasyon daha yapıyoruz ve standart olarak gelmeyen "top" paketini, zone1 sunucusuna kuruyoruz.
# BU ARADA STANDART OLARAK GELMEYEN top PAKETINI DE KURALIM zoneadm1@zone1:~$ sudo pkg install top Password: Packages to install: 1 Create boot environment: No Create backup boot environment: No DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 6/6 0.1/0.1 780k/s PHASE ITEMS Installing new actions 27/27 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done Updating package cache 1/1 zoneadm1@zone1:~$ top -v top: version 3.8beta1
Konsoldan çıkmak için, klavyeden sırasıyla "~." tuşlarına basmak yeterlidir. Fakat bu durum ssh bağlantınızı da kopartabilir. SSH bağlantınız kalsın istiyorsanız, "~~." yazmanız gerekir.
İki sanal makine oluşturacağımdan bahsetmiştim. İkinci makineyi de, birebir aynı şekilde oluşturabilirim. Fakat bu sefer, klon alarak, yeni makineyi oluşturacağım.
# TIPKI BIR ONCEKI ZONE'DA YAPTIGIMIZ GIBI # IKINCI SANAL MAKINEYI OLUSTURUYORUZ ccebi@solarisvm:~$ sudo zonecfg -z zone2 Password: Use 'create' to begin configuring a new zone. zonecfg:zone2> create create: Using system default template 'SYSdefault' zonecfg:zone2> set zonepath=/zones/zone2 zonecfg:zone2> set autoboot=false zonecfg:zone2> set ip-type=exclusive zonecfg:zone2> add net zonecfg:zone2:net> set physical=vnic2 zonecfg:zone2:net> end zonecfg:zone2> verify zonecfg:zone2> commit zonecfg:zone2> exit # AYARLARIMIZI KONTROL EDIYORUZ ccebi@solarisvm:~$ zonecfg -z zone2 info # BIR ONCEKI SEFERDE OLDUGU GIBI PROFILE DOSYASINI OLUSTURUYORUZ ccebi@solarisvm:~$ sudo sysconfig create-profile -o zone2-profile SC profile successfully generated as: ./zone2-profile/sc_profile.xml Exiting System Configuration Tool. Log is available at: /system/volatile/sysconfig/sysconfig.log.14719
Profil oluştururken, aynı ekranlar geleceğinden her birini tekrar koymadım. zone2 ayarları tamamlandığında, birinci makineyi (zone1) kapatıyoruz. Sunucu kapanınca, klon işlemine başlıyoruz.
# zone1 MAKINESI KAPATILIR VE KONTROL EDILIR ccebi@solarisvm:~$ sudo zoneadm -z zone1 halt Password: ccebi@solarisvm:~$ zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /zones/zone1 solaris excl - zone2 configured /zones/zone2 solaris excl # KLON ISLEMINE BASLANIR ccebi@solarisvm:~$ sudo zoneadm -z zone2 clone -c /export/home/ccebi/zone2-profile/sc_profile.xml zone1 Password: The following ZFS file system(s) have been created: rpool/zones/zone2 Progress being logged to /var/log/zones/zoneadm.20170115T202027Z.zone2.clone Log saved in non-global zone as /zones/zone2/root/var/log/zones/zoneadm.20170115T202027Z.zone2.clone # MAKINENIN KURULUMU KONTROL EDILIYOR ccebi@solarisvm:~$ zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /zones/zone1 solaris excl - zone2 installed /zones/zone2 solaris excl
Klon tamamlanınca, her iki makineyi açıyor ve farklı bir sunucudan, her iki makineye ssh yapıyoruz:
# SANAL MAKINELER ACILIYOR ccebi@solarisvm:~$ sudo zoneadm -z zone1 boot ccebi@solarisvm:~$ sudo zoneadm -z zone2 boot # MAKINELERDE BASIT BAZI KOMUTLAR CALISTIRIP, TEST EDIYORUZ ccebi@solarisvm:~$ sudo zlogin zone1 "hostname;uptime" Password: zone1 10:35pm up 13 min(s), 1 user, load average: 0.02, 0.06, 0.16 ccebi@solarisvm:~$ sudo zlogin zone2 "hostname;uptime" Password: zone2 10:35pm up 13 min(s), 1 user, load average: 0.02, 0.06, 0.15 # BIR BASKA SUNUCUDAN ssh ILE IKI SUNUCUYA # ERISIM DENIYORUZ ccebi@ora1744-tr:~$ ssh 192.168.1.201 -l zoneadm1 Password: Last login: Sun Jan 15 22:22:36 2017 from ora1744-tr Oracle Corporation SunOS 5.11 11.3 September 2015 ccebi@ora1744-tr:~$ ssh 192.168.1.202 -l zoneadm2 Password: Last login: Sun Jan 15 22:24:18 2017 from ora1744-tr Oracle Corporation SunOS 5.11 11.3 September 2015
İkinci sanal makineyi neden ilki gibi kurmadığımı merak etmiş olabilirsiniz. İlk makine gerçekten bir kurulumdu ve nispeten uzun sürmüştü. İkinci sanal makinenin oluşturulmasıysa, gerçek bir kurulum değildi ve saniyeler içinde tamamlandı. Bunun nedeni, ilk sanal makinenin klonlanmasıydı. Hatta zone1'de kurduğum için "top" komutunu, zone2'de tekrar kurmam gerekmedi; paket kendiliğinden geldi. Yani bir baz imaj (template) oluşturup, klon alarak çok daha hızlı provizyonlama yapabilirsiniz.
İki saniyelik aralıklarla, hem sistemin hem de ana ortamın performans durumunu aşağıdaki gibi görebilirsiniz:
# ZONESTAT KOMUTUYLA GENEL GORUNUMU ALABILIRIZ ccebi@solarisvm:~$ zonestat 2 Collecting data for first interval... Interval: 1, Duration: 0:00:02 SUMMARY Cpus/Online: 1/1 PhysMem: 0 VirtMem: 0 ----------CPU---------- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART STLN %STLN USED %USED USED %USED PBYTE %PUSE [total] 0.05 5.03% 0.00 0.00% 0 0.00% 0 0.00% 228 0.00% [system] 0.01 1.70% - - 0 0.00% 0 0.00% - - global 0.03 3.15% - - 0 0.00% 0 0.00% 228 0.00% zone1 0.00 0.08% - - 0 0.00% 0 0.00% 0 0.00% zone2 0.00 0.08% - - 0 0.00% 0 0.00% 0 0.00% ...
Solaris çok güçlü bir işletim sistemi. Sanallaştırma konusundaki en büyük başarısı ise, neredeyse sıfır ek yükle, bunu yapabilmesi. Üstelik x86 ve SPARC işlemciler üzerinde aynı bilgi birikimiyle çalışabiliyorsunuz. Ayrıca, Oracle ürünlerini koşturduğunuzda, kullandığınız kadar lisanslama şansınız da var. (Muadil sanallaştırma çözümlerinin aksine, Solaris üzerindeki yöntemler, Hard Partitioning olarak geçiyor. Detaylı bilgi için Oracle Partitioning Policy dökümanına bakabilirsiniz.)