FreeBSD – Jail Sistemleri Ramdisk Üzerinde Çalıştırmak
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYCmZttz' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
freebsd sistemlerde her türlü servisi jail sistemler üzerinde çalıştırmayı seviyorum. Bu şekilde bir nevi sanallaştırma yapılmış olduğundan dolayı hem yedekleme gibi yönetimsel faliyetler kolaylaşıyor hem de servisler yalıtılmış ortamda çalıştığından dolayı güvenlik seviyeniz artmış oluyor.
Geçenlerde çok sayıda mail göndermekte kullanılan bir qmail sunucusu çalıştıran bir jail sistem'in disk I/O kapasaitesini nasıl arttırabilirim diye düşünürken, aklıma bu jail'i host sistem üzerinde oluşturacağım bir ramdisk içerisinden çalıştırıp çalıştıramayacağım geldi.
Elbette bir jail'i ramdisk üzerinde çalıştırmak, host sistemin her reboot'undan sonra jail'in uçması anlamına gelir. Ancak veri güvenliği ile ilgili bir sıkıntı yoksa ramdisk yönetmini kullanmak kazanılan yüksek I/O kapasitesi düşünüldüğünde gayet mantıklı olabilir.
Bir jail sistemi ramdisk üzerinde çalıştırmak için jail'e ait anadizini ramdisk alanına taşımak ve yapılandırma doslayarında yeni path'i belirtmek yeterlidir. Ancak sistemi restart etmeniz durumunda ramdisk silineceği için her sistem restartında jail'in yeniden set edilmesi gerekiyor. Bu işlem için de basit bir rc scripti yeterli oluyor. Yazının devamında, ezjail ile oluşturulan jail sistemlerin yukarıda anlatıldığı şekilde ramdisk üzerinde nasıl up edilebileceği ile ilgili detaylar bulabilirsiniz.
İçerik İndexi
Ramdisk Oluşturmak
Elbette, jail ile ilgili yapılandırma işlemlerine başlamadan önce sisteminizde bir ramdisk oluşturmanız gerekiyor. freebsd sistemlerde ramdisk oluşturulması ile ilgili olarak http://www.syslogs.org/freebsd-sistemlerde-ramdisk-olusturulmasi/ adresinde bir yazı yayınlamıştım. Öncelikle ilgili linkte anlatıldığı şekilde (minimm 512MB'lik) bir ramdisk oluşturun. Sonrasında bu yazıya devam edebilirsiniz.
Jail`in Ramdiske Taşınması
Yukarıda da bahsettiğim gibi ben jail sistemleri yönetmek için ezjail kullanıyorum. (Ezjail ile ilgili her türlü bilgi için http://www.syslogs.org/freebsd-jail-kurulumu/ adresine göz atabilirsiniz.) Ezjail ile oluşturulan jail sistemler /usr/jails dizini altında bulunuyorlar. Örnek olarak elimizde jail01 isimli bir jail bulunduğunu düşünürsek bu sistemi /mnt/ramdisk dizinine mount edilmiş ramdisk'e taşımak için şu adımları uygulayabilirsiniz.
Öncelikle jail01 isimli jail'i stop ediyoruz.
# ezjail-admin stop jail01
Sonrasında, /usr/jails/jail01 dizinini /mnt/ramdisk dizinine taşıyoruz ediyoruz.
# mv /usr/jails/jail01 /mnt/ramdisk/
Not: Bu işlemi özellikle mv ile move şeklinde yapıyoruz. Zira jail dizin yapısının symbolic linkler de dahil olmak üzere korunması gerekmektedir. (Aynı işlemi tar -> untar şeklinde yapmak da mümkündür.)
Bu işlemin ardında yapılandırma dosyalarında düzenleme yapmak gerekiyor.
Conf Dosyalarında Düzenleme
Ezjail'in jail sistemler ile ilgili düzenleme yapılması gereken iki adet dosyası bulunmaktadır. Birincisi jail ile ilgili tüm yapılandırmanın tutulduğu /usr/local/etc/ezjail/ dizini altında jail'in adını taşıyan ana yapılandırma dosyasıdır. Öncelikle bu dosya içerisineki path bilgisini düzenliyoruz:
/usr/local/etc/ezjail/jail01 isimli dosyayı editleyin:
# vi /usr/local/etc/ezjail/jail01
Path'in belirtildiği satırı aşağıdaki şekilde düzenliyoruz.
export jail_jail01_rootdir="/mnt/ramdisk/jail01"
ve kaydedip çıkıyoruz.
İkinci düzenlemenin yapılacağı dosya ise /etc/ altında fstab.jail01 ismi ile bulunan jail'e ait fstab dosyasıdır. Bu dosyada basejail isimli ana dizini jail'in basejail dizinine mount edilmektedir. Burada da jail'in yeni path'i belirtilmelidir:
/etc/fstab.jail01 isimli dosyayı editleyin:
# vi /etc/fstab.jail01
Path'in belirtildiği bölümü aşağıdaki şekilde düzenliyoruz.
/usr/jails/basejail /mnt/ramdisk/jail01/basejail nullfs ro 0 0
ve kaydedip çıkın.
Bu değişikliklerden sonra jail ramdisk üzerinde çalışabilecek duruma gelmektedir. Bu nedenle start ederek her şeyin yolunda gidip gitmediğini kontrol edin:
# ezjail-admin start jail01
Herhangi bir problem çıkmadıyda sistem sorunsuz olarak çalışıyor olmalıdır. ezjail-admin list komutu ile bakarsanız jail'in /mnt/ramdisk altında çalışıyor olduğunu görmeniz gerekir.
# ezjail-admin list STA JID IP Hostname Root Directory --- ---- --------------- ------------------------------ ------------------------ DR 1 10.10.10.12 jail01.cagri.net /mnt/ramdisk/jail01
Taşıma işleminin birinci aşaması burada bitiyor. Şimdiyse sistem açılışlarında jail'in yeniden set edilmesi ile ilgili işlemleri tamamlayalım.
Reboot Sırasında Jail`in Set Edilmesi
Ben, sistem açılışlarından jail'in ramdisk üzerinde yeniden set edilmesi için basit bir rc scripti kullanıyorum. Bu script bir dizinde tar.gz formatında duran güncel jail backupını, (fstab'da yazılı olduğundan dolayı daha önce oluşturulmuş olan [1]) ramdisk'e taşıyor. Jail'in yapılandırma dosyaları, jail anadizinini ramdisk üzerinde gösterdiği için de bu işlem jail'in set edilmesi ve düzgünce çalışması için yeterli oluyor.
Bu işlemi aşağıdaki şekilde yapmak mümkün.
Önce halihazırda ramdisk üzerinde çalışmakta olan jail01 isimli jail'i yedek almak üzere durduralım.
# ezjail-admin stop jail01
Daha sonra da, /var/ dizini altında jailbackups bir yedek dizini oluşturalım.
# mkdir /var/jailbackups
Şimdi de jail01'i /var/jailbackups/ dizinine tar.gz formatında yedekleyelim.
# cd /mnt/ramdisk/ # tar cvfz /var/jailbackups/jail01.tar.gz jail01
Sonra da /usr/local/etc/rc.d/ dizini altında setjaildir isimli bir dosya oluşturalım.
# touch /usr/local/etc/rc.d/setjaildir
Dosya içerisine aşağıdaki satırları paste edelim:
Son olarak da /usr/local/etc/rc.d/setjaildir isimli dosyanın izinlerini çalıştırılabilir olarak set edelim.
# chmod 755 /usr/local/etc/rc.d/setjaildir
Bu şekilde sistemin yeniden açılması sırasında jail01'in yedeği /mnt/ramdisk dizinine açılacak ve jail01 düzgün olarak çalışacaktır. Durumu kontrol etmek için sisteminizi restart etmeyi deneyebilirsiniz.
[1] http://www.syslogs.org/freebsd-sistemlerde-ramdisk-olusturulmasi/
Ayrıca bkz:
http://www.syslogs.org/freebsd-jail-kurulumu/
http://www.syslogs.org/freebsd-sistemlerde-ramdisk-olusturulmasi/
Bu yazılar da ilginizi çekebilir:
- FreeBSD Jail Sistemlere İkinci IP Eklemek
- FreeBSD Jail Sistemlerde Tarih ve Saat’in Set Edilmesi
- Ezjail Flavours ile Öntanımlı Jail Sistemler Oluşturmak
- FreeBSD Sistemlerde RamDisk Oluşturulması
- FreeBSD Jail Kurulumu – Güvenli Network Servisleri
Yorumlar
Trackbacks
Yorumda bulunun.
Süpersiniz Çağrı hocam.
Makale için Teşekkürler.
[Cevapla]