RAMDISK kurmak ve kullanmak
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • 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
