Ana Sayfa » *nix » Linux Sistemlerde RAM Disk Oluşturulması

Linux Sistemlerde RAM Disk Oluşturulması


BerbatKötüİdare EderGüzelHarika (Toplam 4 oy. 5 puan üzerinden ortalama 4,50 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYxVNh0k' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349

Sistem memorysinin bir kısmının sisteme disk partisyonu olarak mount edilmesiyle oluşturulan ramdiskler zaman zaman disk I/O ile alakalı bazı konularda sistem performansını arttırmak üzere kullanılabilecek güzel bir alternatif olabilmektedir. Ram üzerinde dosya sistemi oluşturulmasına ve bu alan içerisinde dosya barındırılmasına olanak sağlayan ramdiskler özellikle veri güvenliğinin önplanda olmadığı cache vs. gibi işlemler için tercih edilebilirler. Örneğin daha önce ramdisk kullanılarak yapılan bir reverse proxy uygulamasından bahsetmiştim. Bu yazıda ise sistemlerde ramdisk oluşturulmasından ve otomatik olarak mount edilmesine değineceğim.

 

Ramdisk vs tmpfs


Herşeyden önce olası karışıklıkları önlemek için Ramdisk ve tmpfs arasındaki farklardan bahsetmek istiyorum. Bildiğiniz gibi sistemlerde tmpfs ismi ile /dev/shm dizinine mount edilmiş olan bir paylaşımlı hafıza (shared memory) alanı bulunur. Bu alan da sonuç olarak memory üzerinde yer kaplar ve mantıken ramdisk olarak adlandırılabilir.  Ancak bizim bahsettiğimiz ramdisk'lerden farklı olarak tmpfs, memory'de dinamik olarak yer işgal eder ve ancak kullanımda olmayan (available) memory'nin yarısı kadar yer kaplayabilir. Ayrıca alanın idareli kullanılması için en az kullanılan sayfalar (pages) swap alanına taşınır. Oysa burada bahsedilen ramdisk mantığında, memory'den belirli bir alan, partisyon olarak sisteme mount edilmek üzere atanır. Örnek olarak sisteminizde 8GB ram bulunuyorsa, bunun 4'ünü ramdisk olarak tanımlayabilirsiniz.  Böylece sabit büyüklükte bir disk bölümü elde edebilirsiniz. Ayrıca tmpfs'deki gibi swap ile doğrudan bir ilişkisi yoktur.  İkisinin kullanım alanlarına örnek vermek gerekirse, tmpfs sistem ve süreçlerle ilgili geçici bilgilerin tutulduğu /var/run ya da /var/lock dizinler için kullanışlı olabilecekken ramdisk ise  bir siteye ait imaj gibi statik dosyaların barındırılması ve bu dosyaların disk I/O problemlerinden etkilenmeden performanslı bir şeklilde sunulmaları açısından idealdir.

Ramdisk Yapılandırması


İlk olarak memory'nin ne kadarının ramdisk olarak atanabileceğini belirtmek üzere grub'a küçük bir ekleme yapılması gerekiyor. Ben örnek olarak 512MB'lik bir tanımlama yapacağım; siz rakamı ihtiyacınıza göre düzenleyebilirsiniz.

Bu işlem için /etc/grub/menu.lst dosyasını açıyoruz:

# vi /boot/grub/menu.lst

Dosya içerisinde bulunan kernel satırına ramdisk_size=[KByte cinsinden değer] parametresi eklenmelidir. RHEL/CentOS ve Debian/Ubuntu sistemler için bu işlem aşağıda görüldüğü şekilde olmalıdır.

RHEL/CentOS

Aşağıdakine benzer satırları bulun:

title CentOS (2.6.18-194.32.1.el5)
 root (hd0,0)
 kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00
 initrd /initrd-2.6.18-194.32.1.el5.img

ve aşağıda kırmızı ile belirilen ramdisk_size=[KByte cinsinden değer] eklemesini yapıyoruz:

title CentOS (2.6.18-194.32.1.el5)
 root (hd0,0)
 kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00 ramdisk_size=524288
 initrd /initrd-2.6.18-194.32.1.el5.img

Bu şekilde 512MB'a kadar ramdisk tanımlamak mümkün olacak. Ancak değişikliklerin devreye girebilmesi için dosyaya eklemeyi yaptıktan sonra sistemin reboot edilmesi gerekiyor.

Debian/Ubuntu

Debian ve Ubuntu sistemlerde dosya içeriği şu şekilde görünmektedir.

title           Debian GNU/, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-686 root=/dev/mapper/Lab03--Debian-root ro quiet
initrd          /initrd.img-2.6.26-2-686

kernel satırına aşağıdaki şekilde ekleme yapıyoruz:

title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-686 root=/dev/mapper/Lab03--Debian-root ro quiet ramdisk_size=524288
initrd          /initrd.img-2.6.26-2-686

Dosyayı kaydettikten sonra, değişikliklerin devreye girmesi için sistemi reboot ediyoruz.

Dosya Sisteminin Oluşturulması


Ramdisk kullanımında veri güvenliği önplanda olmadığı için journaling'e ihtiyaç bulunmuyor dolayısı ile ram üzerinde oluşturulacak dosya sistemin ext2 olması yeterli. Hem CentOS hem de Debian sistemlerde işlem aynıdır. Aşağıdaki şekilde kolayca oluşturulabilir:

# mke2fs -m 0 /dev/ram0

Ayrıca, -m 0 parametresi ile kullanılabilir alan üzerinde rezervasyon yapılmamasını sağlıyoruz. (Normalde alanın %5'lik bölümü rezerve edilir.)

Mount İşlemi


Dosya sisteminin oluşturulmasından sonra, ilgili alanı sisteme mount edelim. Ben bu işlem için /ramdisk isimli bir dizin oluşturuyorum ve ram0'ı bu dizine bağlıyorum:

# mkdir /ramdisk
# mount /dev/ram0 /ramdisk

Böylece ramdisk isimli 512MB'lik bir partisyon elde etmiş oluyoruz. df ile bakarsınız ilgili bölümü görebilirsiniz.

[root@Lab02CentOS ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      7.2G  1.3G  5.6G  19% /
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/ram0              497M  1.6M   496M   0% /ramdisk

Bildiğiniz gibi sisteminizi reboot etmeniz durumunda ramdisk uçacaktır. Dolayısı ile sistem açılışlarından sonra dosya sisteminin yeniden oluşturularak mount edilmesi gerekir. Bu işlem bir init script ile otomatize edilebilir.

Automount Init Scripti


Şimdi, /etc/init.d/ dizini altında makeramdisk isimli bir script oluşturalım ve sistem açılışlarında çalışıp ramdisk oluşturarak sisteme mount etmesi için scripti servis olarak startup'a ekleyelim.

Bu işlem CentOS ve Debian sistemler için küçük farklılıklar içermektedir. Dolayısı ile konuya ilgili sistemler için ayrı başlıklar altında değineceğim.

RHEL/CentOS

/etc/init.d dizini altında makeramdisk isimli bir dosya açıyoruz:

# vi /etc/init.d/makeramdisk

Dosya içerisine aşağıdaki satırları giriyoruz:

#!/bin/sh
#
# chkconfig: 345 99 10
# description: Ramdisk Olusturur
# description: Ramdisk Olusturur
#
# processname:
# pidfile:
# config:
mke2fs -m 0 /dev/ram0
[ ! -d /ramdisk ] &amp& mkdir -p /ramdisk
mount /dev/ram0 /ramdisk

Dosyadan kaydederek çıktan sonra, çalıştırılabilir olarak set ediyoruz.

# chmod 755 /etc/init.d/makeramdisk

Şimdi de açılışlarda otomatik olarak çalışması için sisteme ekliyoruz:

# chkconfig --add makeramdisk
# chkconfig --level 345 makeramdisk on

Böylece işlem tamamlanmış oluyor.

Debian/Ubuntu

Debian tabanlı sistemlerde de aynı şekilde /etc/init.d/ altında makeramdisk isimli bir dosya açıyoruz:

# vi /etc/init.d/makeramdisk

Dosyaya aşağıdaki satırları ekliyoruz:

#!/bin/sh
# Ramdisk Olusturur
#
### BEGIN INIT INFO
# Provides:          makeramdisk
# Required-Start:
# Required-Stop:
# Default-Start:     3 4 5
# Default-Stop:      1
# Short-Description: Ramdisk Olusturur.
# Description:       Ramdisk olusturup /ramdisk dizinine mount eden shell script.
#
### END INIT INFO
mke2fs -m 0 /dev/ram0
[ ! -d /ramdisk ] &amp& mkdir -p /ramdisk
mount /dev/ram0 /ramdisk

Çalıştırma izni veriyoruz:

# chmod 755 /etc/init.d/makeramdisk

Son olarak da startup'a ekliyoruz:

update-rc.d makeramdisk defaults

Böylece sistem açılışlarında ramdisk oluşturulacak ve /ramdisk dizinine mount edilecektir.

Visited 2.794 times, 1 visit(s) today
Kategoriler: *nix,ipucu |

Bu yazılar da ilginizi çekebilir:


- FreeBSD Sistemlerde RamDisk Oluşturulması
- CentOS NFS Server ve Client Yapılandırması
- iotop İle Disk Aktivitesini Görüntülemek | I/O Monitoring
- Debian Tabanlı Sistemlerde Paket Sorgulama İşlemleri
- Linux Sistemlerde Gereksiz Servislerin Tespiti ve Kapatılması

Yorumlar


  1. kemal | (Ocak 26th, 2012 6:52 pm)

    /boot/grub/menu.lst yok içinde işletim sisteminin

    [Cevapla]

  2. ada | (Mayıs 5th, 2012 12:24 pm)

    acık sade anlasılır,işime yaradı .teşekurler

    [Cevapla]

Trackbacks

Yorumda bulunun.