RAMDISK kurmak ve kullanmak

From Lapis Wiki

Jump to: navigation, search
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım Dağıtımlar
Tarayıcılar Programlama Linux ve Oyunlar

Konu başlıkları

GİRİŞ

Ram disk hafızanın bir bölümünün hard disk gibi kullanılmasıdır. Ram disk lerin bölümlerinin belirli büyüklükleri vardır ve bildiğimiz partiştionlar gibi davranmaktadırlar. Ram disk in avantajı ramdiskde bulunan bilgiye hardiskden cok daha hızlı bir şekilde ulaşabilmenizdir. Ama kötü yanı sistem kapandıgında ramdaki bu bilgiler kaybolcakdır. Gecici bilgi tutmak için en uygun yer olabilir.:Linux kernel 2.4 den itibaren ramdisk desteklemektedir. Bu anlatım redhat 9 ve ubuntu dapper drake de denenmiş ve başarı ile uygulanmışdır. Diğer dağıtımlardada muhtemelen sorunsuz çalışacakdır.

Halihazırda üretilen ramdisklere bakalım

RedHat ve Ubuntu Dapper 16 adet ram dist üretirler, diğerleri içinde aynı olabilir. Tabi bunlar aktif olarak kullanımda değillerdir.

Örnek olarak aşagıda Ubuntu dapperımdaki cıktıyı görebilirsiniz.
#ls -l /dev/ram*
brw-rw---- 1 root disk 1,  0 2006-08-25 07:56 /dev/ram0
brw-rw---- 1 root disk 1,  1 2006-08-25 07:56 /dev/ram1
brw-rw---- 1 root disk 1, 10 2006-08-25 07:56 /dev/ram10
brw-rw---- 1 root disk 1, 11 2006-08-25 07:56 /dev/ram11
brw-rw---- 1 root disk 1, 12 2006-08-25 07:56 /dev/ram12
brw-rw---- 1 root disk 1, 13 2006-08-25 07:56 /dev/ram13
brw-rw---- 1 root disk 1, 14 2006-08-25 07:56 /dev/ram14
brw-rw---- 1 root disk 1, 15 2006-08-25 07:56 /dev/ram15
brw-rw---- 1 root disk 1,  2 2006-08-25 07:56 /dev/ram2
brw-rw---- 1 root disk 1,  3 2006-08-25 07:56 /dev/ram3
brw-rw---- 1 root disk 1,  4 2006-08-25 07:56 /dev/ram4
brw-rw---- 1 root disk 1,  5 2006-08-25 07:56 /dev/ram5
brw-rw---- 1 root disk 1,  6 2006-08-25 07:56 /dev/ram6
brw-rw---- 1 root disk 1,  7 2006-08-25 07:56 /dev/ram7
brw-rw---- 1 root disk 1,  8 2006-08-25 07:56 /dev/ram8
brw-rw---- 1 root disk 1,  9 2006-08-25 07:56 /dev/ram9

şimdide dmesg cıktımızı grep edip bu ayrılan blokların büyüklüklerini ögrenelim.

#dmesg | grep RAMDISK
[17179581.684000] RAMDISK driver initialized: 16 RAM disks of 65536K size 1024 blocksize

göründüğü üzere her parça 64Mb olarak ayrılmış. Hafızanızın büyüklüğüne göre bu değişebilir.

Hafıza bloğunun büyüklüğünü arttırmak

Ben grub.conf dosyamı bulamadığım için bunu deneyemedim. Redhat 9 a göre anlatımı vericem. Yanlız eger 512 ram iniz varsa zaten 64 Mb lık blok yeterinden fazladır. Ama arttırmak tabi sizin arzunuza kalmış. yanlız 10% den fazla ramdisk kullanmak önerilmiyor. Ben şimdi Radhat9 daki anlatımı buraya yazıyorum.

Ramdiskin boyutu sistem acılırken komut satırı opsyonu ile kernele iletilmektedir.Eğer grub sizde öntanımlı yükleyiciyse ki redhat 9 için bu öyledir, /etc/grub.conf dosyasını modifiye etmemiz gerekmektedir. Ramdisk büyüklüğü için kernel opsyonu şu şekildedir ramdisk_size=xxxxx. xxxxx 1024-byte bloklar şeklinde ifade edilmektedir. aşagıda 16MB ram blokları için grub.conf dosyasının editlenişini görmekdeyiz.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda5
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-20.9)
       root (hd0,0)
       kernel /vmlinuz-2.4.20-20.9 ro root=LABEL=/ hdc=ide-scsi ramdisk_size=16000
       initrd /initrd-2.4.20-20.9.img

koyu yzılan yerdeki gibi editleniyor. Sistemi tekrar başlattıgımızda dmesg cıktısından degişikliğin basarılı oldugunu görebiliriz

#dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 16000K size 1024 blocksize
RAMDISK: Compressed image found at block 0

Ramdisk i Formatlamak

Yanlızca bir adet ramdisk kullanacagım o yüzden bir adet ramdisk i formatlıyorum.

#mke2fs -m 0 /dev/ram0
mke2fs 1.38 (30-Jun-2005)
Dosya sistemi ismi =
İşl. Sist. türü: Linux
Blok boyu = 1024 (günlük kaydı = 0)
Adımlama boyu = 1024 (günlük kaydı = 0)
16384 düğüm, 65536 blok
0 blok (%0.00) süper kullanıcı için ayrıldı
İlk veri bloğu = 1
8 blok grubu
Grup başına 8192 blok ve 8192 sekme
grup başına 2048 düğüm
Süperblokların bulunduğu bloklar:
        8193, 24577, 40961, 57345
Düğüm tabloları yazılıyor: bitti
Süperblokların ve dosya sisteminin hesap bilgileri yazılıyor: bitti 
Bu dosya sistemi her 36 bağlamada bir ya da 180 günde bir, hangisi önce
gerçekleşirse, otomatik olarak denetlenecektir. Bu değerleri değiştirmek
için tune2fs'yi -c veya -i seçeneği ile çalıştırınız.

Bağlama noktası oluşturmak ve bağlamak

Ramdiskimiz formatladık şimdi bağlama noktası oluşturup /media/rd şeklinde bağlayalım.

#mkdir /media/rd
#mount /dev/ram0 /media/rd

Şimdi bağlandığını kontrol edelim

#mount | grep ram0
/dev/ram0 on /media/rd type ext2 (rw)
#df -h | grep ram0
/dev/ram0              62M   13K   62M   1% /media/rd

tunefs komutu yardımıyla bağlanan yeni ramdisk inize detaylı olarak bakabilirsiniz

#tune2fs -l /dev/ram0
tune2fs 1.38 (30-Jun-2005)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          33e7cfe1-ca52-4e16-8994-c35cf4da9014
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super
Default mount options:    (none)
Filesystem state:         not clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              16384
Block count:              65536
Reserved block count:     0
Free blocks:              63448
Free inodes:              16373
First block:              1
Block size:               1024
Fragment size:            1024
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2048
Inode blocks per group:   256
Filesystem created:       Sat Aug 26 20:29:22 2006
Last mount time:          Sat Aug 26 20:34:25 2006
Last write time:          Sat Aug 26 20:34:25 2006
Mount count:              1
Maximum mount count:      36
Last checked:             Sat Aug 26 20:29:22 2006
Check interval:           15552000 (6 months)
Next check after:         Thu Feb 22 19:29:22 2007
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Default directory hash:   tea
Directory Hash Seed:      402dfddf-7cfa-4982-8949-4cab2fae7dc9 

benim durumumda aliveli isimli kullanıcının ramdiski okuma yazma yapabilmesini istiyorum o yüzden. Aşagıdaki gibi ramdiske o kullanıcı için okuma yazma hakkı veriyoruz.

#chown aliveli:root /media/rd
#chmod 0770 /media/rd
#ls -ald /media/rd
drwxrwx--- 3 aliveli root 1024 2006-08-26 20:29 /media/rd

Ramdisk i kullanın

Bu işlemlerden sonra artık ramdiskinize yazıp silebilecek ve içeriğini görebileceksiniz. Aynen hard disk gibi kullanabileceksiniz. Ramdisk aslında sifreli dosyalar için iyi biyerdir. cunku işiniz bitip bilgisayarınızı kapattıgınızda dosyalar otomatik olarak silinecekdir.

Ramdiskde unmount yani baglamayı iptal etmek için aşagıdaki komutu kullanabilirsiniz.
#umount -v /media/rd
/dev/ram0 umounted

Yanlız unutmayın bilgisayar kapanmadıgı takdirde burayı birdaha baglarsanız ramdiskinize yazdıgınız dosyaların tekrar baglamada orda oldugunu goreceksiniz. Bikere ramdısk baglandıgında kernel orayı işaretler ve ram in o parcasına dokunmaz. Bu yuzden bilgileriniz tekrar kullanımda ordadır.

Otomatik Ramdisk Olusturmak

Eger sistem her basladıgında ramdiske ihtiyac duyuyorsanız asagıdaki yazılanları /etc/rc.local dosyasına ekleyiniz.Formatlar, bağlar, ve gerekli okuma yazma izinleri verir

/sbin/mke2fs -q -m 0 /dev/ram0
/bin/mount /dev/ram0 /media/rd
/bin/chown aliveli:root /media/rd
/bin/chmod 0750 /media/rd

Örnek : Webserver için Ramdisk Uygulaması

Örnek olarak veriyorum denemesini yapmadım şimdiden uyarıyım.Burda 3 ramdiskin bir webserver için nasıl kullanılabileceğini göreceğiz.İlk yapılacak şey document root unuzun kopyasını baska bir yere almak olacakdır.

mv /home/httpd/ /home/httpd_real
mkdir /home/httpd
mkdir /home/httpd/cgi-bin
mkdir /home/httpd/html
mkdir /home/httpd/icons 

sonrada aşagıdaki komutları httpd baslama prosedürüne ekleyin /etc/rc.d/init.d/httpd.init(sisteminizde nerde bulunuyorsa)

### ramdısklerı olusturulur
/sbin/mkfs -t ext2 /dev/ram0
/sbin/mkfs -t ext2 /dev/ram1
/sbin/mkfs -t ext2 /dev/ram2
### Ramdıskleri uygun yerlere baglanır
mount /dev/ram0 /home/httpd/cgi-bin
mount /dev/ram1 /home/httpd/icons
mount /dev/ram2 /home/httpd/html
### Gercek bilgiyi ramdisklere kopyalanır
### ramdiskdeki data tekrarbaslatıldıgında kaybolcakdır
tar -C /home/httpd_real -c . | tar -C /home/httpd -x
### Artık webserverinizi baslatabilirsiniz.

Kaynakça

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html Ramdisk olusturmak http://www.linuxfocus.org/English/November1999/article124.html Web Server la ilgili örnek


CTRLBREAK