Merhabalar,
Bu makalede, storage konusuna değineceğim. Bildiğiniz gibi sanallaştırma ya da cluster kavramlarıyla ilgilenenlerin en büyük derdi, ortak storage alanı oluşturma konusundaki yetersizliklerdir. Çeşitli ISCSI appliance’lar kullanılarak da ISCSI storage ile bu açığı kapatabiliyoruz. Ben de bu amaçla, ücretsiz bir yazılım olan ve storage konusunu anlayarak uygulama konusundaki açıkları kapatabilmeniz amacıyla, FreeNAS storage kurulumunu ve konfigürasyonunu detaylı şekilde anlatmaya çalışacağım. FreeNAS konusunu öğrendikten sonra, çok eski bir donanımınızı bile, üzerine diskler ilave ederek, evinizde ya da iş yerinizde storage olarak test amaçlı kullanabileceksiniz.
FreeNAS nedir?
FreeNAS, NAS sistemi oluşturabilmek için yazılmış FreeBSD tabanlı, açık kaynaklı işletim sistemidir. Kurulumu ve yönetimi oldukça kolay olan bu yapı, hem eski hem de yeni donanımlarda oldukça performanslı çalışabilir, kurulum ve kullanımı basittir. Ayrıca her geçen gün x86 ve x64 sistemler için geliştirilmesi devam etmektedir.
NAS (Network AttachedStorage) nedir?
NAS (Network Attached Storage), adından da anlaşılacağı üzere ağa bağlanmış depolama cihazıdır. En temel tanımıyla, ağdaki diğer bilgisayarların ulaşabileceği genel bir dosya depolama alanıdır. Genellikle bir ekranı bile bulunmadan, sadece güç kablosuyla gücünü alıp Ethernet kablosu ya da kablosuz bağlantıyla da ağda erişilebilir hale gelen bir aygıttır. Ayrıca yönetimi de bir web arayüzünden kolayca yapılabilmektedir. Kurulumu basittir ve ilk kurulumda, cihaza bir network kablosu takılması ve bir IP verilmesi yeterli olmaktadır.
NAS sistemler ile ağınızda başka bir çok işlemi de kolaylıkla yapabilirsiniz. Yedekleme, senkronizasyon, Web sunucusu, dosya paylaşımı ve ISCSI storage olarak kullanıp cluster kurabilmek bunlara birkaç örnektir.
Kurulum Aşamaları
FreeNAS’ın birkaç sürümü vardır. En güncel sürümü https://www.freenas.org/download-freenas-release/ adresinden indirebilirsiniz. x86, x64 ISO ve VMware hazır imaj versiyonlarını bulabilirsiniz. 64 bit bir sistem kullanıyorsanız x64 olanı kullanabilirsiniz. Pentium 4, Athlon XP ve bunlardan önceki işlemcileri (yani 32 bit olanları) kullanıyorsanız x86 sürümünü indirmelisiniz. VMWare hazır imajı ise varolan işletim sisteminizde sanal makine olarak kullanmak içindir. ISO dosyasını CD/DVD’ye yazdırarak üzerinde diskler bulunan eski bir donanıma da bu medya ile kurulum yapılırsa, NAS cihazına çevrilebilir.
Şimdi kurulum adımlarına başlayalım:
Öncelikle, Vmware Workstation üzerinde bir FreeNAS sunucu oluşturdum. Işletim sistemi diski olarak 20 GB’lık küçük bir alan tanımladım. Bu alan aslında daha küçük olabilir. Çünkü FreeNAS işletim sistemi oldukça az yer kaplar. RAID kurulumunu da gösterebilmek için 3×100 GB lık diskler ekledim. (NOT:Bu diskleri kurulum aşamaları bittikten sonra ekledim. Siz en başta da ekleyip uyarıları da dikkate alarak kurulumu yapabilirsiniz.)
Sunucuyu CD/DVD iso mount olacak şekilde Power-on yaptığımızda aşağıdaki kuruluma başlama aşaması karşımıza gelir. Enter tuşuna basarak kuruluma başlıyoruz.
Sonraki ekranda 1 numaralı seçenek Install işlemini başlatan seçenektir. Tab ve yukarı-aşağı tuşlarıyla seçeneği işaretleyip OK tuşu ile devam ediyoruz.
Performanslı çalışma için en az 8 GB RAM önerilmektedir. Fakat daha düşük RAM, kurulum adımlarında engelleyici bir durum olmaz ve devam edebilirsiniz. Test ortamı olduğu için 2 GB RAM belirlemiştim.
Işletim sisteminin hangi diske yükleneceğini seçeceğiniz ekran geldiğinde dikkatli olmanızda yarar var. Çünkü büyük kapasiteli diski de yanlışlıkla seçme durumunuz olabilir. O yüzden öncelikle diğer diskleri eklemeden bu kurulumu yapıp, sonrasında sunucuyu kapatıp büyük diskleri sisteme dahil edebilirsiniz. 20 GB’lık OS diskimi seçerek devam ediyorum.
Bu alandaki tüm verilerin silineceğine dair uyarı ekranını da Yes ile geçiyorum.
Root yönetici şifresini de belirliyoruz. Bu şifreyi unutmayın, web arayüzünden bağlanırken de bu kullanıcıyla bağlanacağız. Bu web arayüzünden, isterseniz farklı kullanıcılar da oluşturabilirsiniz.
BIOS modda boot edilmesini seçiyorum.
Ve kurulum başladı.
Başarılı şekilde bittiğinde OK tuşu ile ilk kurulum ekranına geri dönüyoruz.
Kurulum bitti ve sunucumuzu, kurulum medyasını çıkarıp reboot edebiliriz. Fakat ben disk ekleyeceğim için sunucuyu kapatacağım. OK seçildiğinde aşağıdaki seçenekler karşımıza gelir. Kurulum medyasını çıkarıyoruz ve 4 numarayı seçip sistemi kapatıyoruz.
Sunucu açıldığında aşağıdaki gibi bir ekran karşımızda olacak. Benim sistemimde otomatik IP aldı. Sizler tüm ayarları, ilgili seçenek altında da static olarak yapabilirsiniz. Test ortamı olduğu için Default kurulum ayarlarıyla bırakıyorum.
Web browser’a bu IP yi yazıp web arabiriminden yönetim ekranına ulaşıyoruz.
Legacy Interface kullanarak bağlanmayı tercih ediyorum.
Otomatik kurulum sihirbazı açılır, exit seçerek buradan çıkıyoruz ve manuel ayarları yapacağız.
System>>Information altından öncelikle Hostname değiştirelim. Active Directory ortamınız varsa DNS kaydınızı da açmayı unutmayınız… Ayrıca time zone ve saat ayarlarını da yapmanız gerekmektedir.
Şimdi ISCSI disklerimizin nasıl oluşturulacağına bakalım.
1. iSCSI Service Enable edilmesi
Services sekmesine geçiyoruz ve ISCSI servisini start edip, boot aşamasında da otomatik başlaması için Start on boot seçeneğini işaretliyoruz.
2. Yeni Volume Eklenmesi
Storage >> volumes >> volume manager seçilir.
Volume ismi verilir, hemen altındaki Available disks altında sunucuya eklediğimiz 3x100GB disk görünür. + tuşuna basarak disklerin Volume Layout altına gelmesini sağlıyoruz. Eğer başka diskler eklemek istersek Add Extra Device seçerek alta bir satır eklemiş oluyoruz. Bu konfigürasyonla devam edeceğim. Bende 3 tane disk var.
Disk sayınıza göre RAID seçenekleri de kullanılabilir hale gelmekte. Ben 3 disk için RAIDZ seçtim, RAID 5 yapısını oluşturacak ve 1 diski parite için ayırıp toplamda 2 disk kapasitesi kullandıracak.
Buradaki RAID konfigürasyonu ve birkaç tane disk kullanma yöntemi, fiziksel olarak bu görevi yürütecek bir sunucu kurmanız ve fiziksel disk eklemeniz durumunda kullanılması gereken yapıdır. Eğer sanal ortamda kurulum yapıp, vmdk diskler verdiyseniz, bu diskleri RAID çalıştırmanın pek bir anlamı olmayacaktır. Performans için daha da fazla sistemi meşgul edeceği için şahsi düşüncem, sanal kurulumlarda RAID yapılmaması yönündedir. Her bir vmdk diski, volume manager’dan tek tek ekleyip herbirini ayrı bir LUN yapmak daha kullanışlı olacaktır.
Add Volume seçerek volume oluşturma işlemini tamamlıyoruz.
Volume Manager altında ancak yeterli sayıda diskiniz varsa RAID konfigürasyonu yapabilirsiniz. Disk sayılarına göre yapılabilecek işlemler aşağıdaki gibidir:
Stripe: En az 1 disk gereklidir.
Mirror: En az 2 disk gereklidir.
RAIDZ1: En az 3 disk gereklidir.
RAIDZ2: En az 4 disk gereklidir.
RAIDZ3: En az 5 disk gereklidir.
log device: En az 1 tane hızlı, düşük gecikmeli, güç korumalı bir dedike SSD disk önerilir.
cache device: En az 1 tane dedike disk ve SSD olması önerilir.
Diskimizi oluşturduğumuzda aşağıdaki gibi bir sonuç elde ediyoruz. Toplam kapasite yaklaşık 300 GB ama RAID yapısı gereği, kullanılan alan yaklaşık 200 GB oldu.
3. iSCSI üzerinden Paylaşım için Zvol oluşturma
ZFS (Zettabyte File System), birleşik bir dosya sistemidir ve Logical Volume Manager Sun Microsystems tarafından geliştirilmiştir. ZFS özellikleri, baştan aşağıya veri bütünlüğü için tasarlanmıştır. ZFS’nin bir parçası olan RAID, RAID-Z, RAID 5 gibi tek parite koruması sunar, ancak ZFS’nin yazma sırasında kopyalanan mimarisi sayesinde “delik aç” güvenlik açığı bulunmamaktadır. Ek seviyelerde RAID-Z2 ve RAID-Z3 sırasıyla çift ve üçlü parite koruması sunar. Bir yazılım ayna seçeneği de mevcuttur. FreeNAS Volumes ekranı, yeni bir birim oluştururken seçtiğiniz disk sayısına bağlı olarak olası her bir parite düzenlemesini listeler.
Veri bütünlüğünü sağlamak için her ZFS dosya sistemi de yukarıdan aşağıya doğru sağlamalarla doğrulanır. Tutarsızlıklar bulunursa, eşlik blokları bozuk verileri onarmak için kullanılabilir. Normal bir fırçalama varsayılan olarak açıktır ve web arayüzünden yeniden düzenlenip yapılandırılabilir.
Zvol bir ZFS özelliği olup, ZFS üzerinde Raw Block aygıtı oluşturur. Bu özellik, Zvol’un bir ISCSI Device Extend olarak kullanılmasına imkan tanır.
Biz de şimdi Zvol oluşturarak, her bir volume’ü bir ISCSI disk olarak sistemlere tanıtabileceğiz.
Storage>>Volumes>>ISCSI volume işaretleyip, en alttaki seçeneklerde Create Zvol seçiyoruz.
Tanımlayıcı bir isim vererek, Force size seçeneğini işaretliyorum. Force size, disk kapasitesinin %80 üzerine çıktığı durumlarda da kullanılabilmesini sağlar. O yüzden işaretliyoruz. Diğer seçenekleri Default olarak bırakabiliriz. Oluşturulan Zvol, toplam kapasitenin %80’inden fazlaysa “out of space” hatası alırsınız ve Zvol oluşturulamaz.
Sparse volume seçeneği, thin provisioning kullanmak içindir. Thin provisioning ile tüm alan hemen allocate edilmez. Veri boyutları arttıkça disk üzerindeki alan kullanımı artar. Bu yöntem tehlikeli bir duruma sebep olabilir. Çünkü kontrolsüz şekilde büyüme olursa ve bu disk havuzundaki alan azalırsa tüm yazma işlemlerinde hata oluşur ve sistem durur.
Add zvol seçerek işlemi bitiriyoruz.
Aynı yöntemle birkaç disk daha oluşturacağım ve onlara da tanımlayıcı isimler vererek, ilgili sunuculara tanımlarken yönetim kolaylığı sağlayacağım.
En son durumda aşağıdaki gibi disk yapısı oluşturdum. ESX sunuculara, Hyper-V hostlarına ve failover clusterda Quorum diski kullanmak üzere bölümler oluşturdum.
Sonraki aşama ise, bu zvol bölümlerinin ISCSI protokolü üzerinden paylaştırılmasıdır.
Konfigürasyonlara başlamadan önce ISCSI konsepti hakkında aşağıdaki tanımları bilmemiz gerekmekte. Şimdi bu terimleri kısaca tanıyalım.
Portal: Bu storage cihazına, bağlantı isteklerinin hangi IP ve port gruplarından yapılabileceğini tanımlar.
Initiator: ISCSI storage’a erişim yetkisi verilmiş olan sunucuları tanımlar.
Target: Storage sunucu üzerindeki storage kaynağını tanımlar, yani FreeNAS sunucumuzu. Her target, kendine özgü ve tek bir IQN (ISCSI Qualified Name) ismine sahiptir.
Internet Storage Name Service (iSNS): TCP/IP network üzerinde, ISCSI cihazlarının otomatik bulunmasını sağlayan protokoldür.
Extent: Paylaşılacak olan storage ünitesidir. (Yapacağımız örneklerde daha iyi anlaşılacaktır.)
LUN: Logical Unit Number anlamına gelir ve sunulmuş olan lojik ISCSI cihazlarını tanımlar. Initiator olarak tanımlı sunucular bu FreeNAS’a eriştiğinde, iSCSI LUN’lar üzerindeki alanları formatlayıp kullanırlar. Yani sunucular üzerinde göreceğimiz disk alanlarıdır LUN’lar.
Artık konfigürasyonlara başlayabiliriz.
4. iSCSI Target Konfigürasyonu oluşturma
Sharing >> Block (iSCSI) >> Target Global Configuration tabına geçiyoruz. Bu alanda hiçbirşey seçmeden, sadece save edip devam edin. Base name ile tanımlanan iqn numarasını, bu alanlara erişmesi istenen sunucularda tanımlayarak bağlantılarını sağlayacağız.
5. iSCSI Portal oluşturma
Sonraki adım, ISCSI için Portal oluşturmaktır. Portalın, paylaşımlı olan storage alanına erişmek için gerekli IP ve Port kombinasyonudur.
Sharing >> Block (iSCSI) >> Portals >> Add portal seçiyoruz ve ilgili alanları tanımlıyoruz ve ok ile işlemi bitiriyoruz.
Buradaki tanımlara da değinmekte fayda var.
Discovery Auth Method: İlgili sunucuların hangi kimlik doğrulama yöntemiyle storage’a erişeceğini belirler.
IP address: FreeNAS üzerindeki ağ kartının IP bilgisi olmalıdır. 0.0.0.0 seçilirse, FreeNAS üzerinde bulunan herhangi bir ağ kartı anlamına gelir. Eğer başka ağ kartınız varsa, yukarıdaki ekranda Add Extra Portal IP seçerek yeni bir ağ kartının IP adresini girmek için bir satır daha açabilirsiniz. Bu size hata toleransı sağlar. Şöyle ki: eğer bir ağ kartınız arıza yaparsa, diğer ağ kartı üzerinden de portal hizmet vermeye devam eder.
Port: ISCSI target’a (FreeNAS) erişmek için gerekli olan TCP portu tanımlanır. Default ISCSI portu 3260’tır.
6. iSCSI Initiator oluşturma
Hangi sistemlerin bu storage’a ISCSI üzerinden bağlanacağını tanımlamak için Initiator tanımlıyoruz.
Sharing >>Block (iSCSI) >> Initiators >> Add Initiators seçiyoruz ve tanımlarımızı yapıyoruz. Buradaki ayara göre tüm initiator’lar ve tüm IP bloklarından bu storage’a bağlantı sağlanabilecek. Eğer sadece bir ya da birkaç sunucunun (yetkilendirilmiş sunucuların) bağlanmasını istersek, o sunuculara ait olan ve kırmızı renkteki IQN ile başlayan isimleri eklenmelidir. Ben default ayarlarda bıraktım ve IP bloğundan bu storage’a erişimi olan her sunucu tarafından bağlantı sağlanabilecek. ALL yazılması, herkese açık olması anlamına gelir.
Ok tuşuna basıp işlemi bitiriyoruz.
7. iSCSI Target oluşturma
Target,portals-initiators-authentication method kombinasyonudur. Oluşturmak için ise Sharing >> Block (iSCSI) >> Targets >> Add Target yolundan Add Target seçilir. İsim verilir ve daha önce oluşturmuş olduğumuz portal ve Initiator grubu seçilir. Eğer Authentication istiyorsak istenen metod da seçilebilir.
8. Extent oluşturma
ISCSI target’lar, kaynaklara sanal erişimler sağlarlar. Extent ‘ler ise, client’larla paylaştırılmak istenen kaynakları tanımlarlar. Yani diskleri, target ları oluşturduk ama hala paylaşılmıyor. Bu paylaşımı da extent altından tanımlamış olacağız. (Örnek: hangi disk, hangi isimle paylaşılacağının tanımı.)
2 tip extent kullanılır.
- Device Extent : Device extent’ler Zvol’lere, Zvol snapshotlara, ya da SSD / RAID volume gibi fiziksel bir diske, sanal storage erişimi sunarlar.
- File Extent : File extent’ler ise, herhangi bir dosyaya, sanal storage erişimi sunarlar.
Hali hazırda ISCSI-Volume adında bir volume ve altında zvol tanımları yapmıştık. Bu da demek oluyor ki device extent kullanacağız, çünkü volume ve zvol için device extent kullanılacağını yukarıda belirttim.
Sharing >> Block (iSCSI) >> Extents >> Add Extent seçiyoruz ve daha önce oluşturduğumuz zvolleri seçerek tanımlayıcı extent isimleri veriyoruz. Bu işlemi her zvol için tekrarlayacağız.
Tümünü ekledikten sonra görüntü aşağıdaki gibi olacak. Yukarıdaki konfigürasyonda eğer Read-only seçerseniz, bağlı olan sunucular bu alan üzerine veri yazamaz ve sadece okuma yapabilirler.
9. Extent ile target ilişkilendirme
Artık son adıma geldik. Bu adımda ise son ayarları yaparak, depolama alanımızı kullanılabilir hale getireceğiz. ISCSI bağlantı isteği gönderen sunucuların, hangi LUN’a bağlanacaklarını belirleyeceğiz ve bu LUN’lara bir ID tanımlayacağız.
Sharing >> Block (iSCSI) >> Associated Targets >> Add Target/Extent seçiyoruz.
Target seçeneği bizim FreeNAS sunucu için oluşturduğumuz isim. Başka ağ kartlarımız da olsaydı o kartlara bağlı target’lar da oluşturabilecektik. Elimizde tek arabirim ve tek target olduğu için sadece bu iscsi-san ismi çıkacak karşımıza.
Aslında bu ekranda yaptığımız işin özeti şu: QUORUM extent’i , iscsi-san üzerinden yayınlansın.
Bu işlemi diğer extentler için de yapıyoruz, LUN ID ler aynı olmayacak şekilde 0-1-2-3 şeklinde veriyoruz ve son durum aşağıdaki gibi oluyor.
Artık storage ortamımız tamamen hazır durumda. Bundan sonrası ise, artık hangi ortamı kullanıyorsak (vmware, hyper-v, sunucu cluster ortamı vs.), o ortamda ISCSI initiator kullanarak bu LUN’lardan herhangi birini ortak storage alanı olarak tanımlayabiliriz. Tabi ki kullandığım platformlara göre isimlendirme yapmıştım. Mesela ESX-DATASTORE olanı gidip de Hyper-V ortamına bağlamayacağız elbette. 🙂 İsimlendirmeyi de, hangi platformda kullanacaksanız ona göre yapmanız. Bu şekilde işlerin takibini daha kolay şekilde yapabilirsiniz.
İlerleyen zamanda yayınlayacağım makalelerde de hem vmware hem de hyper-v ortamları için, bu alanların nasıl ekleneceğini yayınlayacağım.
Yararlı olması dileğiyle.
Yusuf İşleyen