Konu: Linux dosya sistem yapısı Paz Eyl. 09 2007, 18:00
Bu bölümde Linux'un kullandigi dosya sistemi hakkinda bilgi verilecektir. Dosya sistemini olusturan dizinler, kapsadiklari dosyalar ve bunlarin Linux isletim sistemindeki görevleri de kisaca belirtilecektir. Bir isletim sisteminin dosya sisteminin performansi, hizi ve buna benzer çesitli özellikleri sistemin verimli ve kararli çalismasi üzerinde dogrudan etkisi vardir. Linux dizin yapisinin gelistirilmesinde FSSTND (file system standard) grubunun çalismalarinin payi çok büyük oldu. Programcilardan olusan grup, standartlarin belirlenmesinde ve uygulama asamasinda Linux ile ilgilenenlere yardim etti. 1993 yilinda Olaf Kirsh, Linux haber grubuna yazdigi bir e-postasinda Linux dosya sistemi üzerindeki çalismalarin tamamlandigini haber verdi. O yildan bu yana linux dosya sistemi standardi üzerinde kayda deger degisiklik olmamistir. Linux dizin yapisinda bazi dizinlerin islevi birbiriyle aynidir. Bu durum, özellikle birbirini takip eden iki Linux sürümünde belirginlesir. Örnek olarak bir dagitimda /usr/bin dizini altinda yeralan dosya, diger sürümde /bin altina yerlestirilebiliyor. Dosya sistemleri ve dizinler paylasimli olarak da kullanilabilir. Birden fazla kisisel bilgisayarin baglandigi agda, disk alanindan yer kazanmak için bir makina sunucu (ana makina) olarak tayin edilir. Ag üzerindeki diger makinalar da sunucu üzerindeki diski paylasir. Buna örnek olarak kullanici ev dizinlerinin yeraldigi /home, çalistirilabilir dosyalarin bulundugu /usr, e-posta ve haber grubu bilgilerinin bulundugu /var/spool/mail ve /var/spool/news dizinleri verilebilir. Kök dizini, kendisine bagli diger tüm dizinleri de içerdiginden, Linux dosya sisteminde önemli bir yere sahiptir. Linux açilirken önce kök dizini /etc/fstab dosyasina uygun sekilde baglanir. Diger dosya sistemlerinin onarimi ve kontrolü için gerekli olan fsck programlari bu dizinde bulunmalidir. Benzer sekilde yedekleme için gerekli olan tar, zip, compress gibi arsiv programlarina da kök dizin altindan erisilebilmeli, açilis esnasinda hafizaya yüklenen çekirdek de kök dizininde yeralmalidir. Bir programi yerine koymadan önce bazi "dengelerin" gözönünde tutulmasinda yarar vardir. Programlanan her yazilimi kök dizinine koyarsaniz, bir süre sonra bu dosya sisteminin sistigini görürsünüz. Kök dizinini baslangiçta küçük (20-30Mb kadar) tutmak, gelistirilen programlari daha önceden belirlenen baska bir dosya sistemi altina koymak akillica olur. Bu yol, ag üzerinden genellikle paylasimi mümkün olmayan kök dizininin her makinadaki sabit diskte mümkün olan en az yer isgal etmesini saglar. Sistemdeki önemli dizinlere göz atarsak, /bin : Sistemin açilisi ve kontrolü için gerekli komutlar. Hem kullanicilarin, hem de sistem görevlisinin kullanabilecegi dosyalar (kök dizinde ise fazla sismemesi kosuluyla) buraya atilabilir. Sadece root kullanicinin ihtiyaç duyacagi init, getty, updatedb gibi programlar /sbin veya /usr/sbin'de durabilir. Bu dizinde bulunan dosyalara örnek olarak cat, chgrp, chown, date, dd, df, ln , mkdir, mount, ps, rm, sh, su, sync ve umount'u sayabiliriz. /dev : G/Ç dosyalari. Linux çekirdeginde desteklenen her aygita ait dosya /dev dizini altinda bulunur. Kurulum aninda bu dosyalar yerine yerlestirilir, bu dosyalarin silinmesi durumunda /dev/MAKEDEV ile tekrar yaratilabilirler. /etc : Sistem konfigürasyon dosyalari. Bu dizinde çalistirilabilir dosyalar bulunmamalidir. • skel : Buradaki dosyalar, kullanici hesabi açildiginda kullanicinin ev dizinine kopyalanir. • rc.d : Bu dizinin içinde, init sürecinin basvurdugu konfigürasyon dosyalari vardir. • passwd : Kullanici sifre veritabani • fstab : Linux'un açilisi esnasinda bindirilecek dosya sistemleri burada listelenir. • group : passwd'e benzer sekilde kullanicilarin gruplarini tutar. • inittab : init daemon için konfigürasyon dosyasi • motd : Kullanici sisteme girdikten sonra ekranina basilmasi istenen mesaj burada tutulur. • profile : Kullanici sisteme girdigi zaman çalistirilan dosya (csh ve sh türevi kabuklar için) • shells : Sistemde kullanilabilecek kabuk isimleri burada tutulur. • login.access : login komutu için konfigürasyon dosyasi. Sisteme girisi kullanici bazinda sinirlamak için kullanilir. • limits : Islemci performansinin kullanici bazinda kisitlanmasini saglar /home : Kullanicilara ayrilmis dizin. Baska sekilde ayarlanmamis ise, açilan her hesaba ait kullanici, burayi kullanacaktir. Büyük sistemlerde, bu kisim alt parçalara ayrilabilir (/home/ftpadm , /home/ogrenci gibi) /lib : Kütüphane dosyalari. /mnt : Geçici baglanan dosya sistemleri. Sadece bu is için kullanildigindan sistem görevlisine zaman kazandirir. /proc : Süreç kontrollerini ve diger sistem bilgilerini tutan dosya sistemi. Bu dosya sistemi aslinda disk üzerinde yer kaplamaz, tüm dosyalar çekirdegin bir uzantisi sayilabilir. • cpuinfo : islemci modeli, tipi ve performansini bildirir. • devices : Halihazirda çalisan çekirdek içinde destegi bulunan aygit sürücülerini listeler. • dma : Hangi dma kanallarinin kullanildigini belirtir. • filesystems : Halihazirda çalisan çekirdek içinde destegi bulunan dosya sistemlerini listeler. • interrupts : Hangi kesintilerin kullanimda oldugunu söyler. • iports : Halen hangi giris/çikis iskelelerinin kullanildigini belirtir. • kcore : Sistem hafizasinin görüntüsü /root : Sistem görevlisinin ev dizini. Mümkünse bu dizini sistemdeki diger kullanicilarin görmeyecegi sekilde ayarlayin. /sbin : Hayati sistem komutlari. Bir zamanlar bu dosyalar /etc dizini altinda yeraliyorlardi. Sadece sistem görevlisinin ihtiyaci olan komutlar, /sbin veya /usr/sbin içinde bulunur. /tmp : Geçici dosyalarin koyuldugu dizin. Belirli zaman araliklarinda temizlenmelidir. /usr : Diger önemli sistem dosyalarini tutar. Bu bölüm genelde en kalabalik dizindir, zira yeni kurulan tüm programlar buraya konulur. • X11R6: X Window sistemi bilgileri tutulur. • doc: Belge ve dokümanlar, genellikle HOWTO ve FAQ dosyalari. • lib: Bazi kütüphaneler • man: Man dosyalari • src: Bazi kaynak dosyalari ve linux çekirdegini olusturan kodlari (/usr/src/linux) içeren dizin. • sbin : Kök dosya sisteminde yeralmasi gerekmeyen çalistirilabilir sistem görevlisi dosyalari /var : Sürekli degisen sistem bilgileri burada tutulur. Istisnalar disinda diger makinalarla paylastirilmaz. • adm: Sistem yönetimini ilgilendiren kayitlar • preserve : Sistemin göçmesinden sonra zarar görmesi mümkün dosyalarin kaydedildigi yer. • spool : Sonra islenecek olan veriler buraya atilir (e-posta gibi) Eger sistem yöneticisi iseniz düzenli olarak dosya ve dizin yapisini kontrol etmelisiniz. Örneginn /tmp dizini normal kullanicilarin kullanimina açik oldugu için çok kisa bir sürede dolabilir. Burayi periyodik olarak silmek için find komutu ise yarayabilir : # find /tmp -atime +7 -exec rm -rf {} \\; Yukaridaki komut, tmp dizini altinda yeralan tüm dosyalari kontrol edecek ve 7 günden daha eski dosyalari silecektir. Benzer sekilde, kullanicilarin dosyalarinin yer aldigi /home dizini de çok kisa bir sürede dolmaya mahkumdur. Sistemde ne kadar büyük sabit disk olursa olsun bir gün gelecek burasi dolacaktir. Periyodik olarak buraya da göz gezdirmek gerekir. Asagida yeralan kisa program, /home dizininde yeralan kullanici dizinlerideki disk kullanimini büyükten küçüge dogru disk isimli dosyaya yollayacaktir. Bu dosyanin incelenmesiyle hangi kullanicilari "cezalandiracaginizi" görebilirsiniz # du -skx /home/* | sort -rn > disk du (disk usage), sistem kullanicilarinin sikça basvurdugu bir komuttur. Kullanilabilecek parametreler için du(1) kilavuz sayfasina bakin. UNIX, (ve dolayisiyla Linux) iki tip aygit tanir. Bunlardan ilki karakter aygitlari, baska bir deyisle veri alisverisini bayt bazinda yapan cihazlar, digeri de blok aygitlari, yani veri alisverisini blok cinsinden yapan cihazlardir. Karakter aygitlarina örnek olarak seri baglanan cihazlar ve teypler, disk aygitlarina örnek olarak da diskler verilebilir. Bu cihazlardan bir bilgi yazilip okundugunda dosya sistemi altinda bunlari tanimlayan dosyalar (/dev/*) kullanilmis olur. Örnek olarak bir yaziciya bilgi göndermek için, $ cat dosya > /dev/lp1 komutunu kullanabilirsiniz. Dosya, düz metin gibi, yazicinin anlayabilecegi bir yapida olmalidir. Her aygit, bir dosya olarak dosya sisteminde kendine yer bulduguna göre hangi aygit dosyalarinin (dügüm ) bulundugunu görmek mümkün olabilir. $ ls -l /dev/cua0 crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0 Ilk kolondaki ilk karakter (c), bu dosyanin bir karakter aygitina ait oldugunu belirtiyor. Normal dosyalar için buradaki karakter '-' olmaliydi. Benzer sekilde blok aygitlar için ise 'b' kullanilr. Aygit sürücü destegi çekirdekte olmasa bile /dev dizini altinda genellikle tüm aygit dosyalari (dügümler) bulunur. Bu demektir ki /dev/sda dosyasina sahip oldugunuz halde bir SCSI sabit diski sistemde takili olmayabilir. Tüm aygit sürücülerinin bulunmasi, programlarin kurulumunu ve yeni donanimin eklenmesini kolaylastirir.