Dosyalarımız fiziksel depolama alanları üzerinde tutulur.Bu alanlar bilgisayarımızdaki dahili harddisk ,harici hard diskimiz ,CD/DVD ROM,SAN,NAS.. gibi biçimlerde olabilir. Peki bu alanlardaki bilgilere nasıl erişiriz sorusunun cevabı File System(Dosya Sistemi) oluyor arkadaşlar. File System olmadan depolama alanına ne bir şey kopyalayabiliriz, ne paylaştırabiliriz, ne güvenlik ve erişimini sağlayabiliriz ne de herhangi bir şekilde kullanabiliriz. İşletim sistemimizin verilere erişimi için yine onun bileceği bir biçimde diski biçimlendirmeliyiz. Nasıl ki Windows ortamlarında diskimizi biçimlendirirken NTFS dosya sistemini kullanıyorsak, Linux vari işletim sistemlerinde de ext2,ext3,ext4 gibi dosya sistemlerini kullanıyoruz. Linux işletim sistemi birden fazla dosya sistemine destek verir. File System tarafında güçlü olmasında çoğu kişinin hemfikir olduğu noktadır. Şimdi sırasıyla Linux’un dosya sistemi gelişim seyrini ve diğer destek verdiği dosya sistemlerini inceleyelim.
ext2,ext3,ext4 à Linux dosya sistemleri(native file systems-kendi üzerinde geliyor)
· Extendend File System (extfs); 1992 yılında Linux için Minix File System’deki(MFS) yetersizliklerden dolayı ilk geliştirilmiş dosya sistemidir. MFS’de dosya isimleri en fazla 14 karakter, maksimum dosya boyutu da 64MB olabiliyordu. Sonrasında extfs2,3,4 diye geliştirmeleri devam etmiştir. Günümüzde kullanılmıyor diyebiliriz.
· Second Extended (extfs2); extfs’in performans eksiklikleri ve geliştirilmesi gerekliliği sebebiyle 1993 yılında yeni bir tasarım anlayışıyla Virtual File System(VFS) mantığı getirilerek dosya sistemi işlemleri sistem çekirdeğinden çıkartılmış araya VFS’le çekirdekle diğer dosya sistemleri arasına bir ara yüz eklenmiştir.VFS sayesinde sistem çekirdeği sadece dosya işlemleri için VFS’le muhatap oluyor ama VFS’in önüne kim gelirse gelsin aynı şekilde isteyeceği için VFS bu istekleri anlamakta zorluk çekmiyor. Extfs2 dosya sistemi journaled(günlüklü) dosya sistemi değildir. Bu yüzden USB flash tipi veya solid state disks (SSD) gibi depolama alanlarında yüksek hız ve performans sağlar.extfs2 dosya sisteminde bir dosyanın maksimum boyutu 2GB ,dosya ismi de 255 karakter olabilir.
· Third Extended(extfs3);2001 yılında 2.4.15 Linux kerneline dahil olan extfs3 dosya sisteminin extfs2’den farkı journaling meselesi, online FS büyütebilme ve büyük dizinler için HTree indeksleme mekanizması getirmesidir. Journaling ne derseniz ; Sistemimizde disk üstünde bir işlem yapılacağı zaman, diskin kendi üstünde bir değişikliğe gitmeden önce bütün istekleri bit bit, byte byte bir yere yazdığını ve sırasıyla uyguladığını düşünebilirsiniz. Herhangi bir felaket anında(elektrik kesilmesi gibi) disk üstündeki verilerinizin tutarsız kalmaması için alınmış bir önlemdir ve data kurtarma konusunda yine sistem içinde bulunan araçlarıyla(fsck,..) hayatınızı kolaylaştırır. Extfs2 dosya sistemlerinizi rahatlıkla extfs3 tipine dönüştürebilirsiniz.
· Fourth Extended(extfs4); 2006 yılında Theodore Ts’o tarafından geliştirilen,2008’de daha kararlı yapıya kavuşan extfs4 Redhat Enterprise Linux Server ve Centos Ailesinin 6.x sürümlerinde de gelmeye başladı. Theodore bu geliştirmeden sonra 2010 yılında Google’a geçti ve Google kendi sunucularında ayrıca Android İşletim sistemlerinde extfs4’ü dosya sistemi olarak kullanmayı piyasada var olan rakip dosya sistemlerinden daha iyi test sonuçları verdiği için tercih etti.extfs3’te journallemede olmayan bit checksum meselesi extfs4’de işler hale getirildi.Geliştirmeleri devam ettiği için Windows ve Mac OS’la uyumluluk çalışmaları devam etmektedir.
Microsoft File Systems; Msdos,vfat,fat,ntfs à MS-DOS ve Windows dosya sistem türleri
Linux ortamından Msdos,fat ve vfat dosya sistemleri için ekstra bir şey yapmadan erişme imkanınız olabilir ama NTFS dosya sistemi için Linux sisteminize ,yine aynı şekilde extfs2,extfs3 için ise Windows ortamına driver yüklemeniz gerekli olacaktır.Mesela bknz.
JFS,JFS2 à OS/2 ve IBM Aix Unix işletim sisteminin günlüklü dosya sistemleridir. Linux kernelinizde modülünüz var ise veya sonradan driver yükleyerek bu dosya sistemlerine de Linux’unuzdan erişebilirsiniz.
Network FileSystems; Ağ üstünden dosya paylaşımı için yaygın olarak kullanılan NFS ve Samba mevcuttur.
NFS; Unix ve Linux platformlar arası dosya paylaşımı için kullanılan dosya sistemidir.Linux kerneli hem NFS server olarak hem de NFS client olacak şekilde bir yapıya sahiptir. Yani hem ağda diğer Unix&Linux sistemlere dosya paylaşabilir hem de paylaşılan dosyalara rahatlıkla erişebilirsiniz.
SMB(CIFS); Server Message Block (SMB) protokolü sonradan Core Internet File System (CIFS) olarak işim değiştirmiştir ve Microsoft işletim sistemi ailesinin kendi arasında dosya paylaşımı için kullanılan dosya sistemidir. Eğer Linux sisteminizde Samba paketiniz var ise Linux sisteminizden Windows ailesine dosya paylaşabilir veya paylaşılanları görebilirsiniz.
ISO-9660; Sadece CD-ROM içinde kullanılan dosya sistemidir.
Peki,iyi güzelde benim Linux sistemim bu dosya sistemlerine destek veriyor mu? Nasıl bilirim derseniz iki yoldan bakmak gerek;
Öncelikle sistem kernelimizin sürümüne bakıyoruz ve sonrasında bizde hali hazırda var olan dosya sistemi modüllerini görüyoruz;
[root@artemis fs]# uname –a
Linux artemis 2.6.18-238.19.1.el5 #1 SMP Fri Jul 15 07:32:29 EDT 2011 i686 i686 i386 GNU/Linux
[root@artemis fs]# ls -l /lib/modules/2.6.18-238.19.1.el5/kernel/fs/
total 116
drwxr-xr-x 2 root root 4096 Sep 12 20:53 autofs4
drwxr-xr-x 2 root root 4096 Sep 12 20:53 cachefiles
drwxr-xr-x 2 root root 4096 Sep 12 20:53 cifs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 configfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 cramfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 dlm
drwxr-xr-x 2 root root 4096 Sep 12 20:53 ecryptfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 exportfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 ext3
drwxr-xr-x 2 root root 4096 Sep 12 20:53 ext4
drwxr-xr-x 2 root root 4096 Sep 12 20:53 fat
drwxr-xr-x 2 root root 4096 Sep 12 20:53 freevxfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 fscache
drwxr-xr-x 2 root root 4096 Sep 12 20:53 fuse
drwxr-xr-x 3 root root 4096 Sep 12 20:53 gfs2
drwxr-xr-x 2 root root 4096 Sep 12 20:53 hfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 hfsplus
drwxr-xr-x 2 root root 4096 Sep 12 20:53 jbd
drwxr-xr-x 2 root root 4096 Sep 12 20:53 jbd2
drwxr-xr-x 2 root root 4096 Sep 12 20:53 jffs2
drwxr-xr-x 2 root root 4096 Sep 12 20:53 lockd
drwxr-xr-x 2 root root 4096 Sep 12 20:53 msdos
drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfs_common
drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfsd
drwxr-xr-x 2 root root 4096 Sep 12 20:53 nls
drwxr-xr-x 2 root root 4096 Sep 12 20:53 squashfs
drwxr-xr-x 2 root root 4096 Sep 12 20:53 udf
drwxr-xr-x 2 root root 4096 Sep 12 20:53 vfat
Bu listede Linux sistemimizde var olan modulleri gördük ama bu modüller , şu an ki kernelimizin içinde yüklenmemiş olabilir veya sizin çalışmak istediğiniz dosya sisteminin modülü hiç yoksa kernelimize uygun şekilde derleyip o modülü kernelimize eklememiz gerekir. Kerneldeki modülleri görmek istiyorsak;
[root@artemis fs]# cat /proc/modules à Komutu size yardımcı olur.
[root@artemis fs]# cat /proc/modules |grep ext à Mesela bizde ext3 dosya sisteminin modülü şu an kernelimizde yüklü,görebiliyoruz
ext3 125385 3 – Live 0xe08e6000
jbd 57321 1 ext3, Live 0xe086a000
[root@artemis fs]#
[root@artemis fs]# cat /proc/modules |grep fat à Fakat FAT için modül sistemde var olmasına rağmen kernelde yüklü görünmüyor.
[root@artemis fs]#
Linux sistemlerde dosya sistemleri ile çalışırken bazı hatırlatmalar;
· Linux&Unix sistemlerde her şey birer dosyadır. Bir şey dosya değilse o process’tir diye bir deyiş vardır. Diskler(devices-aygıtlar), bütün kartlar(network, storage kartları) vb.
· Bir dosya ismi 256 karakterden uzun olamaz(ext3 ve ext4) ve de dosya uzantısı diye bir kavram yoktur, örneğin örnek.txt ismindeki bir dosyadaki “.txt” uzantısı Linux da dosyanın ismine dahil edilir ama onun bir text dosyası olduğunu göstermez.
· Dosya isimlendirmelerinde bazı özel karakterler dışında bütün alphanumeric karakterler kullanılabilir(ext3 ve ext4).Ama tavsiye olarak büyük-küçük harfler ve sayıları kullanmanız yeterlidir, boşluk kullanmayın.
· Bir dosyanın büyüklüğü 16G ile 2TB arasında olabilir(ext4’de 16TB’a kadar çıkabilir)
· Bir mantıksal hacim grubunun(Volume Group-VG) maksimum büyüklüğü ext3’de 32 TB,ext4 file sistem’inde 1EB’ye kadar teorikte çıkabiliyor.
· Sistemdeki diskleri görmek ve üzerinde işlem yapmak için temel olarak fdisk komutu kullanılır. Disklerle Create Partition(bölümlendirme), format, delete yapılabilir. Disk kullanımını görmek için df ve du kullanılır. İleri seviyede diskler üstünde işlem yapılacak ise diskler LVM yönetimine devredilip, LVM’le yola devam edilir.
· File System, genel sisteme eklenecekse/bağlanacaksa mount komutu kullanılır, sistemden bağlantısını kaldırmak için umount komutu kullanılır. Mount’un kelime anlamı bağlamak şeklinde anlayabiliriz.
· Dosyaların ve dizinlerin üzerinde işlem yaparken File System ağaç yapısında path(yol) olarak absolute path(tam yol) ve relative path(göreceli yol) kavramları, genel olarak komutların yardım ve kılavuz sayfalarını okumak için man, help,bu pathlerle dizin değiştirmek istenildiğinde cd,File System ağacında nerede olduğumuzu görmek için pwd,boş bir dosya(File) oluşturmada touch,boş bir dizin(Directory) oluşturmada mkdir, ne olduğunu anlamada file,dosyaları okumada cat,more,less,head,tail,kopyalamada cp,taşımada ve isim değiştirmede mv, listelemede ls,dosyaları ve dizinleri silmede rm ve sadece içi boş dizinleri silmede rmdir, sembolik ve hard linkde ln,symlinks,durumlarını görmede stat ve lsof, arşivlenmek istendiğinde tar, sıkıştırılmak istendiğinde zip,arama yapılırken find, dosyalarda pattern(kavram) araması yapılıyorsa grep(egrep,fgrep) kullanılır. Bir sonraki makalemizde bu temel komutlar detaylı bir şekilde incelenecektir.
Şimdi de Unix&Linux dosya sisteminde file,i-node, directory, superblock kavramlarını açıklamamız gerekiyor.
File; Sisteme kaydettiğiniz verilerin kendisidir. Bu bir mp3 dosyası,txt ascii text dosyası,binary dosya,pdf dosyası olabilir. Aslında bütün dosyalarımız disk üstüne 0 veya 1 olarak kaydediliyor ama yorumlanış kısmında işler değişiyor.ascii text ise farklı bir şekilde yorumlanıyor,mp3 dosyası ise farklı şekilde yorumlanıyor.binary/executable bir dosya ise sistem onu bir emirler dizisi olarak algılayıp içindekileri çözmeye çalışıyor ve execute ediyor.
i-node; dosya sistemindeki her nesne i-node (index node) ile gösterilir.Bunu bir etiket olarak düşünebilirsiniz. File System’de her dosya ve dizinin eşsiz bir i-node numarası bulunur. inode da dosyanın ismi ve File System ağacında nerede olduğu bilgisi tutulmaz,tutulan bilgiler ise aşağıdaki gibidir;
Dosyanın türü
Dosyanın izinleri(r-okuma,w-yazma,x-çalıştırma)
Dosyanın sahibi ve grubu
Dosyanın boyutu
Dosyanın Access,change,modification zaman etiketleri
Dosyanın silinme zamanı
Link sayısı(soft veya hard link)
Access Control List(ACL) bilgisi
Dosyanın disk üstünde hangi blockta olduğu bilgisi
Locking bilgisi,kullanımda olduğu zaman “kullanılıyor diye dosyayı locklar”
Dolayısıyla bu bilgilerle biz dosyanın ne olduğunu ve özelliklerini tutmuş oluyoruz. Peki dosya isimleri i-node da tutulmuyorsa dosyaların i-node ve ismini nerede tutacağız, bunları nerede gruplayacağız? Bu sorunun cevabı da directory oluyor.
Directory (dizin); Bize içinde bulunan nesneleri i-node ve isimleriyle gruplamamıza yardımcı olan File System yapısıdır.Aslında bu haliyle özel dosyalardır diyebiliriz.Dizin içinde ayrıca bir üst dizini gösteren “ .. ” ve kendini gösteren “. “ dizinciklerde bulunur.
Dizinler ikiye ayrılır
Root Directory (/); Her File System’de sadece bir tane Root(/) dizini bulunur. File System’i bir ağaç gibi düşünecek olursak ağacın kökü Root(/) dizinidir.
Sub Directory; Root dizinin altındaki her dizin bir alt dizin olarak geçer.
Superblock;Bir File System’in karakteristik özellikteki bilgilerini tutan yapıya superblock denir. Superblock ihtiva ettiği bilgiler nedeniyle hayati önem taşımaktadır. Bu önem itibariyle kopyaları disk üstünde birden fazla noktada tutulur. İçindeki bilgiler ise;
File System’in boyutu
Block size(Block boyutu)
Dolu ve boş olan bloklar
İnode tabloların boyutları ve nerelerde olduğu bilgisi,ilk i-node’un nerede olduğu
Diskin block dağılımı ve kullanım bilgisi
Blok gruplarının boyutu ve bilgisi
Şekil-1 Linux Native Dosya sistemlerinden ext2 gibi bir File System’in disk üzerindeki durumu
Şekil-1’de gördüğümüz gibi, diskimizin ilk bölgesi boot bölümünü oluşturuyor ve sonrasında disk block group’lara bölünüyor. Diskin bloklarının sayısı ve uzunluğu aslında diski biçimlendirirken
İşletim sistemine belirttiğimiz paremetreler arasında. Herhangi bir bloğu açarsanız File System’in karakteristiğini tutan dediğimiz SuperBlock ları her block başında göreceğiz.Güvenlik için her Block Group’unda yer alırlar.Sonra bu grubun disk üzerinde nerde başlayıp, nerede bittiği, ne kadarının kullanıldığı bilgileri group descriptors bölümünde görürüz.Inode bilgileri Inode Map ve Inode Table bölümlerinde tutuluyor.Block group’unun en sonunda verimizi sakladığımız Data Block’un yer aldığını görüyoruz.
Şekil-2 Data Block’ta Dir1 dizinin içeriği ve bu içeriğin Inode Bilgilerindeki Yerleşimi
Disk üstüne sanki bir mikroskopla bakabildiğinizi düşünün ve DIR1 isimli dizinin bölgesine baktığımızı hayal edin. Bu dir1 isimli dizinin içinde dizin tanımında bahsettiğimiz gibi (sözde)içinde olan dosyaların isimleri ve inode numaraları yazacak. Sonra o numaraları Inode Table kısmında tablodaki yerine ve dosyaların inode bilgilerine bakalım. Görecekleriniz aynen bu şekil-2deki gibi olacaktır.Detay için bknz.
Dolayısıyla Dosya sistemi (File System) denilince hangi işletim sisteminde olursanız olun genellikle iki anlam çıkartılıyor;
Birincisi ; Sistem tarafından bakarsak şekil-1 ve şekil-2’deki gibi dosya ve dizinlerin, herhangi bir depolama(Storage) alanının üzerindeki yerleşimi, ulaşımı, sıkıştırılması, kriptolanması, günlüklenmesi ve kullanılması.
İkinci olarak kullanıcı tarafından bakıldığında mantıksal olarak dosya ve dizinlerin hiyerarşik ters bir ağaç görünümü veya herhangi mantıksal bir şekilde veri ağacı oluşturmasıdır.
Şekil-3 Linux&Unix Sistemlerde File System’in Genel Ağaç Görünümü
Şimdi hiyerarşik ağaç görünümünde olan File System altında hangi önemli dizinler yer almakta sırasıyla kısa kısa onları inceleyeceğiz. Genel yapı çizim olarak aşağıda gösterilmiştir.
/:
Kök dizini,root of File System olarak geçen File Sistem’in ilk başlangıç noktasıdır.Linux sistemde yer alan bütün dosya ve dizinler /’un altında yer alır. Bunu ne sistemdeki süper yetkili kullanıcı root’un ev dizini olan/root ile ne de root (superuser) kullanıcısının kendisi ile karıştırmamak gerek.1994 yılında Linux topluluğu tarafından kabul edilen File System Hierarchy Standart (FHS) /’un içinde ne bulundurulması ve nasıl olması gerektiğini bildirmiştir.Buna göre;
/ işletim sistemini boot ettirebilmek ve diğer file system’leri mount edebilmek için gerekli olan bütün araçlara ve dosyalara sahip olmalıdır.
Sistem yöneticisi için yani root(superuser) için sistemi kurtarmaya yönelik gerekli araç ve gereçleri barındırmalıdır.
Olabildiğince boyutu küçük olmalıdır. Çünkü büyük boyutlu file system’lerin kurtarılması her zaman zor olur ve çok zaman alır.Ayrıca / içinde hızlı büyüme riski olan veya paylaşımlı dosyalar olmaması gerekir. Çünkü / fiziksel olarak dolu olması işletim sistemine zarar verebilir.
Sisteme kurulan diğer yazılımlar / altına direk olarak dosya koymamalıdırlar.
Bu kurallara göre /’u içinde bulunduran disk bölümü(Partition) bu dizinleri mutlaka içermelidir. /bin,/dev,/etc,/lib,/sbin
/root:
Linux&Unix sistemlerde süper yetkili kullanıcı root’tur. Sistemde her şeyi yapmaya yetkisi mevcuttur. Bu root kullanıcısının ev dizini olarak /root kullanılır.
/home:
Sistemde yer alan kullanıcıların ev dizinleri bu /home dizinin altında yer alır. Biz sistemimizi kurarken cozumpark kullanıcısı eklemiştik,cozumpark kullanıcısının ev dizini /home/cozumpark olmaktadır.
/proc:
Sanal ve memory’de yer alan bir FS parçası olup,tamamen kernel’in (işletim sistemi çekirdeği) ve sistemde çalışan process’lerin (süreçlerin,servislerin) bilgilerini tutan bir dizindir. /proc disk üstünde yer almaz ,memory’de yer alır.
Dosyalar(Files) |
Açıklama |
/proc/num |
Num yerine sistemde çalışan process’lerin dizinleri yer alır. Mesela sistemdeki 2398 pid’li processin dizini /proc/2398 dur. |
/proc/cpuinfo |
Sistemde var olan CPU sayısını,tipini,modelini belirtir. |
/proc/devices |
Kernelde çalışan aygıt(device) sürücülerini listeler. |
/proc/filesystems |
Kernelde yer alan File systemleri(FS) gösterir. |
/proc/ioports |
I/O portlarından hangisinin kullanıldığını gösterir. |
/proc/kcore |
Fiziksel memory’nin imajını tutar. |
/proc/kmsg |
Kernel tarafından üretilen mesajları gösterir. |
/proc/loadavg |
Sistemin ortalama load’ unu gösterir. |
/proc/meminfo |
Sistemdeki memory ‘i ve memory kullanım bilgisini gösterir. |
/proc/modules |
Kernelde yüklü olan modülleri gösterir. |
/proc/net |
Network protokollerini gösterir. |
/proc/stat |
İşletim sistemi istatistiklerini gösterir. |
/proc/uptime |
Sistemin ne kadar süredir ayakta olduğunu gösterir. |
/proc/version |
Kernel versiyonunu gösterir. |
/bin:
Sistem yöneticisi ve kullanıcılar tarafından kullanılabilen çalıştırılabilir programların/komutların/binary dosyaların olduğu dizindir.
/dev:
Sistemdeki device’lara(aygıtlara, disk ve terminal gibi) erişmek için gerekli olan dosyaların yer aldığı dizindir.
Aygıt İsmi(Device Name) |
Açıklama |
hd |
IDE disk sürücülerini belirtir; 1–4 primary bölümlere; 5 ve sonrası logical bölümlere işaret eder. |
sd |
SCSI disk sürücülerini belirtir. Sisteme disk ekledikçe sda,sdb,sdc şeklinde isimlendirme devam eder. |
scd |
SCSI CD-ROM sürücüleri |
fd |
Floppy diskleri |
st |
SCSI tape sürücüleri |
tty |
Terminals,sistemde var olan terminaller tty1,tty2.. isimlendirmesiyle devam eder. |
lp |
Printer ports,printer portlarını ifade eder. |
ttyS |
Serial ports,sistemdeki seri portları ifade eder. |
md |
RAID devices,RAID aygıtlar varsa onları belirtir. |
cdrom |
CD-ROM device dosyasına linktir. |
cdwriter |
CD-R veya CD-RW device dosyasına linktir. |
modem |
Modem device dosyasına linktir. |
floppy |
Floppy device dosyasına linktir. |
tape |
Tape device dosyasına linktir. |
scanner |
Scanner device dosyasına linktir. |
/etc:
Sistemdeki bütün yapılandırma dosyaları burada yer alır. Bu dizin sistem açılırken ve sonrasında gerekli ayarları/tuning yapabilmek için önemli dosyaları barındırır.
/lib:
Ortak kütüphanelerin (Shared libraries) ve Kernel modüllerinin yer aldığı dizindir./bin ve /sbin altındaki binary’ler bu kütüphaneleri kullanırlar.
/boot:
Sistemi boot etmek için gerekli olan dosyaların olduğu bölümdür. LILO ve GRUB gibi sistemi boot eden programlar /boot dizinindeki dosyaları okurlar.
/mnt:
Genellikle sisteme geçici olarak bağlanacak(mount etmek) usb stick,cdrom,external hard disk,Floppy gibi aygıtlar için geçici mount etme bölgesidir.
/opt:
Linux İşletim sistemi üreticileri tarafından kullanılmayan ama başka şirketlerin Linux’a herhangi bir yazılım kurulumu yapacaklarında kullandıkları dizindir.
/sbin:
Sistem yöneticisi için gerekli olan çalıştırılabilir programların/komutların/binary dosyaların olduğu dizindir.
/tmp:
Geçici dosyaların olduğu dizindir. Sistem veya kullanıcılar burada istedikleri gibi dosya/dizin oluşturup silebilirler.Sistem boot ettikten sonra silinme ihtimali vardır.
/usr:
/ altında yer almayan sistem ve kullanıcılar için gerekli olan diğer dosya ve programlar bu dizin altında yer alır. Örnek vermek gerekirse;
Dizin(Directory) |
Açıklaması |
/usr/bin |
Sistemdeki kullanıcılar için gerekli olan binary dosyalar ve gerekli araçlar burada bulunur. |
/usr/sbin |
Sistem yöneticisinin çalıştırdığı binary dosyalar burada bulunur. |
/usr/lib |
Uygulamalar,programlama dilleri için gerekli olan kütüphaneler(libraries) buradadır. |
/usr/games |
Oyun dosyaları burada tutulur. |
/usr/include |
C ve C++ programlama dillerinin header (.h) dosyaları burada tutulur. |
/usr/doc |
Linux dokümantasyonu burada tutulur. |
/usr/local |
Lokalde kurulu olan uygulamalar öncelikle bu path altına kurulur. |
/usr/share |
Mimari bağımsız dosyaların,genellikle dokümantasyon ve genel ayarlar için kullanılan bir bölümdür. |
/usr/src |
Kaynak dosyalarının tutulduğu yerdir. |
/usr/X11R6 |
X Windows Sisteminin kütüphane ve uygulama dosyalarının olduğu bölümdür. |
/var:
Sistem log dosyaları, yazıcı dosyaları, mail ve yazıcı queue(kuyrukları) ları yer alır. Gittikçe büyüyebilen bir dizin olduğu için /var dizinin / ile aynı disk bölümü üstünde olmaması bir avantajdır.
Dizin(Directory) |
Açıklama |
/var/cache |
Yardım sayfaları,web Proxy bilgileri,fontlar,bazı uygulamaların özel geçici bilgileri burada tutulur. |
/var/crash |
Sistem crash dump ‘larının tutulduğu yerdir. |
/var/games |
Sistemde kurulu olan oyun bilgilerinin tutulduğu yerdir. |
/var/local |
/usr/local altına kurulan programlar için değişen data’ların tutulduğu yerdir. |
/var/lock |
Özel bir dosya veya program kullanılırken sistemin o dosya veya program üstüne lock koyduğunu belirten dosyalar burada yer alır. |
/var/log |
Sistem loglarının tutulduğu bölgedir. Mesela /var/log/messages kernel ve diğer sistem uygulamalarının log attığı dosyadır. |
/var/mail |
Kullanıcıların mailbox dosyaları yer alır. |
/var/opt |
/opt dizini altında kurulu olan programlar için değişebilir verilerin tutulduğu yerdir. |
/var/run |
Sistemde çalışan process’lerin bilgilerinin tutulduğu yerdir. |
/var/spool |
mail, haber ve yazıcı kuyruğun daki dosyalar burada bulunur. |
/var/tmp |
Geçici dosyaların tutulduğu yerdir. |
/var/www |
Web server’a ait web sayfalarının/dosyalarının tutulduğu yerdir. |
/var/ftp |
FTP server’a ait FTP dosyalarının tutulduğu yerdir. |
/var/named |
DNS Server’a ait Domain konfigürasyon dosyalarının tutulduğu yerdir. |
Şekil-3 File System Genel Yapısı
File System İşlemlerinde İki Önemli Dosya ve İki Önemli Komut
/etc/fstab dosyası; Linux system boot ederken hangi disk üstünde hangi dosya sistemi ne gibi özelliklerle yer alacağı bilgisini bu dosyaya bakarak bilir. Sistem açılırken hayati önem taşıyan ve içeriği bozulmamış olması gereken bir dosyadır. Her satır bir dosya sistemini gösterir ve # işareti ile başlayan satırlar comment olarak ele alınıp göz ardı edilir.
device; Disk veya bir bölümü temsil eder.Mount edilecek kısım nereye mount edilecekse o aygıtı gösterir.
Mountpoint; Adı üstünde mount noktasını gösterir. Mesela bizim örneğimizde “/ “dosya sistemi “/dev/VolGroup00/LogVol00” üstüne mount edilecektir.
Fs; Mount edilecek dosya sisteminin türü nedir, extfs2,extfs3 gibi.
Options; Dosya sistemi mount edilirken ne gibi özelliklere sahip olacak.Dosya sistemini mount ederken kullanabileceğimiz seçenekler aşağıdaki gibidir.
async veri okuma ve yazma asenkron olacak
atime dosyaya erişildiğinde dosyanın inode bilgisini değiştir,güncelle
auto harici birimler için standart formattır.Sistem boot edince veya mount –a komutu verilince dosya sistemleri otomatik mount olur.
defaults rw,suid,dev,exec,auto,nouser,async — > defaults dediğinizde bu seçenekler gelmiş olur.
dev aygıtlara(devices) erişim hakkı verilmesi
exec binary dosyaların execute edilebilmesi
noatime dosyaya erişildiğinde inode bilgisini güncelleme
noauto dosya sistemi elle mount edilmelidir.
nodev aygıtlara(devices) erişim hakkı verilmemesi
noexec binary dosyaların execute edilememesi
nosuid setuid ve segid özelliklerinin kullanılamaması
nouser sadece root kullanıcısının dosya sistemini mount edebilmesi
remount dosya sisteminin tekrar mount edilebileceği
ro read only,sadece okunabilir.
rw read and write,okuma ve yazma yapılabilir.
suid setuid ve segid özelliklerinin kullanılabilmesi
sync okuma ve yazmanın aynı anda yapılması
user başka kullanıcıların(root harici) dosya sistemini mount edebilmesi
dump; 0 veya 1 olur, dump aracının çalıştırıldığına belirtilen dosya sisteminin dump’ını alıp almayacağını belirtir.
fsck; Dosya sistemi üzerinde fsck(dosya sistemi kontrol aracı) yapılacak ise bunun öncelik sıralaması ne olacağına dairdir.Genelde “/” dosya sisteminin değeri 1 diğerlerinin ki sırayla 2,3,4 şeklinde devam eder.Ama diğer dosya sistemleri zaten ext3,ext4 tipinde ise bunların fsck değeri 0 olmalıdır çünkü bu dosya sistemleri zaten sistem açılırken otomatik olarak fsck yaparlar.
[root@artemis ~]# cat /etc/fstab
#device mountpoint fs options dump fsck
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sdb5 swap swap defaults 0 0
/etc/mtab dosyası; Bu dosyada sistemde şu an var olan mount edilmiş dosya sistemleri tutulur. /etc/fstab dosyasından farkı umount edilmiş dosya sistemlerini tutmamasıdır.
[root@artemis ~]# cat /etc/mtab
/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/sda1 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
none /proc/fs/vmblock/mountPoint vmblock rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
df komutu; (df- disk free) Sisteme mount edilmiş dosya sistemlerinin fiziki olarak kullandıkları boş ve dolu alan oranlarını gösterir.
[root@artemis ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6983168 3151392 3471328 48% /
/dev/sda1 101086 25130 70737 27% /boot
tmpfs 257452 0 257452 0% /dev/shm
[root@artemis ~]#
[root@artemis ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G 3.1G 3.4G 48% /
/dev/sda1 99M 25M 70M 27% /boot
tmpfs 252M 0 252M 0% /dev/shm
du komutu ; (du-disk usage) Bir dosyanın,dizinin,dosya sisteminin(FS’in) disk üstünde kapladığı alanı bulmak için kullanılan komuttur. Mesela sistemimizde var olan /boot FS’inin disk üstünde kapladığı alana bakmak istersek aşağıdaki gibi bir komut kullanabiliriz.
[root@artemis ~]# du -sm /boot
20 /boot
[root@artemis boot]# du -s *|sort –n — > Herhangi bir dizin altındaki dosya ve dizinleri boyut ve isime göre sıralamak
12 lost+found
70 config-2.6.18-238.12.1.el5
70 config-2.6.18-238.19.1.el5
71 config-2.6.18-238.el5
81 message
111 symvers-2.6.18-238.12.1.el5.gz
111 symvers-2.6.18-238.19.1.el5.gz
112 symvers-2.6.18-238.el5.gz
258 grub
963 System.map-2.6.18-238.12.1.el5
963 System.map-2.6.18-238.19.1.el5
963 System.map-2.6.18-238.el5
1854 vmlinuz-2.6.18-238.12.1.el5
1854 vmlinuz-2.6.18-238.el5
1855 vmlinuz-2.6.18-238.19.1.el5
3371 initrd-2.6.18-238.12.1.el5.img
3371 initrd-2.6.18-238.19.1.el5.img
3405 initrd-2.6.18-238.el5.img
Df ve du komutlarına seçenek olarak –h human readable biçimi verebilirsiniz,kullanışlıdır veya –k kilobyte için,-m megabyte için kullanabilirsiniz. Mesela yukarıdaki örneği –h seçeneği ile çalıştırırsak bize daha okunaklı bir cevap verecektir ;
[root@artemis boot]# du -sh *|sort -n
1.9M vmlinuz-2.6.18-238.12.1.el5
1.9M vmlinuz-2.6.18-238.19.1.el5
1.9M vmlinuz-2.6.18-238.el5
3.3M initrd-2.6.18-238.12.1.el5.img
3.3M initrd-2.6.18-238.19.1.el5.img
3.4M initrd-2.6.18-238.el5.img
12K lost+found
70K config-2.6.18-238.12.1.el5
70K config-2.6.18-238.19.1.el5
71K config-2.6.18-238.el5
81K message
111K symvers-2.6.18-238.12.1.el5.gz
111K symvers-2.6.18-238.19.1.el5.gz
112K symvers-2.6.18-238.el5.gz
258K grub
963K System.map-2.6.18-238.12.1.el5
963K System.map-2.6.18-238.19.1.el5
963K System.map-2.6.18-238.el5
Umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere