RAM Tabanlı Dosya Sistemi


Ram tabanlı dosya sistemi nedir? Bu yazımızda Linux’ta sistem hafızası (RAM) üzerinde çalışan dosya sistemlerini ve kullanım alanlarını anlatacağız.

İşletim sistemleri, kendi dosyaları ve kullanıcı dosyalarının sabit diskte organize bir biçimde tutulması için dosya sistemleri (File System) sunarlar. Kalıcı depolama sağlayan diskler ise SSD (Solid State Drive) adı verilen yeni nesil diskler de dahil olmak üzere bilgisayar sistemindeki en yavaş bileşenlerden biridir. Diskler sundukları kalıcı depolamanın yanı sıra bir performans penaltısı ile birlikte gelirler. Sistem hafızasından (RAM) meydana getirilen okuma/yazma en hızlı SSD diskten yapılan okuma/yazmadan bile 5-10 kat daha hızlıdır.

SSD disklerin yeni çıktığında nasıl bir fark oluşturduğunuz biliyorsunuz. SATA diskler ile arasındaki boyut geçişi herkesi oldukça şaşırtmış ve etkilemişti. Şuan neredeyse tüm cihazlarda SSD diskler kullanılmakta. Hız optimizeli olması adına. Fakat belirtmiş olduğumuz hız RAM lerde 5 ile 10 kat arasında daha fazla. Ne denli bir hızdan bahsettiğimizi anlamış olmalısınız.

Ram Tabanlı Dosya Sistemi

Birçok durumda dosya sistemi üstündeki dosyaların kalıcı olmasını istesek de dosyaların saklanmasının lüzumlu olmadığı durumlarda performans artışı sağlamak için yada dosyaların diskte saklanmasını direkt olarak istemediğimiz (güvenlik vb sebeplerle) durumlarda dosyaları RAM’de tutmak isteyebiliriz. Linux’ta tmpfs ve ramfs RAM üzerinde çalışan dosya sistemleridir. Bu iki dosya sisteminde yaratılan dosyalar bilgisayarın gücü kesildiğinde veya bilgisayar yeniden başlatıldığında RAM’de bulunan öteki bilgilerle birlikte kaybolurlar.

Bazı Linux dağıtımlarında /tmp, tmpfs dosya sistemi ile açılan bir RAM diski kullanır. Sistemde çalıştırılan uygulamalar /tmp klasörü altında geçici olarak kullanmak istedikleri dosyaları açar, yazar ve okurlar. Oluşturulan dosyalar en geç sistem kapandığında silinir. Yan not olarak, /tmp klasörü bazı kurulumlarda RAM yerine kalıcı disk üstünde bulunur. /tmp altındaki dosyalar periyodik olarak temizlenir. Bu sayede /tmp klasörünü kullanan uygulamalar yarattıkları dosyaların diski doldurması kaygısı olmadan diski kullanırlar.

Tmpfs dosya sistemi temel olarak RAM’i kullanmakla birlikte RAM’de yer kalmadığı zaman diski RAM olarak (swap) kullanabilir. Ramfs, tmpfs ile benzer işlevleri yerine getirir ama ramfs swap kullanmaz. Ramfs ile açılan diske toplam kapasitesinden daha fazla dosya yazıldığı zaman tmpfs ve diğer dosya sistemlerinin aksine disk, sistemdeki RAM bitene kadar büyümeye sürer. Ramfs içeriğini swap yapmayıp devamlı RAM’de kalmış olarak performans garantisi sunmasına karşın kontrolsüz olarak büyümesi sistem stabilitesini tehlikeye atar.

Ram Tabanlı Dosya Sistemi Kullanım Alanları

Şimdi bu dosya sistemlerinin kullanım alanlarını inceleyelim. CI (Continuous Integration) esnasında koşan entegrasyon ve uçtan uca testlerde veri tabanının sürekli olarak yine yaratılması ve migrate edilmesi gerekebilir. Testler esnasında veri tabanının oluşturulduğu disk tmpfs olarak seçilirse testler hızlandırılıp testlerin süresi kısaltılır. Tmpfs dosya sistemi ile açılan ve birçok Linux dağıtımında bulunan /dev/shm, prosesler arası iletişimde (IPC – Inter-Process Communication) kullanılır.

Uygulamanın performans-tehlikeli sonuç bölümlerindeki loglamanın uygulama performansını etkilememesi için logu yitirme riski alınarak tmpfs kullanılabilir. Log dosyaları belirli aralıklarla merkezi log sistemine (logstash, vb ile) gönderilebilir ya da kalıcı diske taşınabilir.

Yukarıdaki kullanım senaryolarına ayrıca emniyet amacı ile de tmpfs kullanılabilir. Popüler konteyner çözümü Docker, konteyner dosya sistemine trojan ve virüslerin enjekte edilmesini önlemek için konteynerlerin read-only modda çalıştırılmasına izin vermektedir. Read-only modda başlatılan konteynerlerın işlevini yerine getirebilmesi için emek harcama zamanında birtakım dosyalar yaratması gerekebilir. Konteynerlerin yaratacağı dosyaların bulunduğu klasörler tmpfs ile RAM’de oluşturularak trojanın restartlarda temizlenmesi sağlanabilir.

Yine konteynerlerde host ve konteyner dosya sistemine kaydedilmesi istenmeyen hassas bilgiler (gizyazı, token, vb) tmpfs ile açılan diske konarak konteynere iletilir, konteyner durdurulduğunda yada yeniden başlatıldığında bu kırılgan bilgiler otomatikman silinmiş olur.

RAM Tabanlı Dosya Sistemi
RAM Tabanlı Dosya Sistemi

Tmpfs’in performansını örneklemek amacıyla 2GB büyüklüğündeki tmpfs’e 1MB büyüklüğünde 1500 dosya yazılmıştır. Aynı muamele durağan disk üzerinde bulunan dosya sisteminde tekrarlanarak performans karşılaştırılmış ve tmpfs’in 5.6 kat daha hızlı olduğu gösterilmiştir.

Görüldüğü şeklinde tmpfs sabit disklere gore yazma işlemlerinde yüksek performans göstermektedir. Aynı performans farkı okuma işlemleri için ise çoğunlukla geçerli değildir şundan dolayı disk ve işletim sistemindeki cache’ler okuma performansını oldukça artırmaktadır.

kaynak : Gökhan Şengün

Leave a Comment