Mount Noktalarının gizemi
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ı |
Giriş
Önce mount edilmiş dosya sistemlerini anlatacağım. Daha sonra biraz daha ileri gideceğiz. Eğer Linux konusunda uzman olduğunuzu düşünüyorsanız okumaya biraz daha aşağıdan başlayabilirsiniz.
Nasıl çalışır ?
windows altında bugün bile yeni bir sürücü eklemek isim karmaşası nedeniyle bir problemdir. D: hangisidi ? E: neydi ? Bununla birlikte programlar da pek çok sorun yaşıyor.
Uniz altında bu tip bir problemi asla yaşamazsınız. Çünkü tüm fiziksel diskler bir dizin yapısıyla sisteme eklenmiştir. Bunu "mount" ya da "df" yazarak görebilirsiniz :
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 9070728 4701180 3908768 55% / /dev/hda3 24950428 683412 22999584 3% /home none 257236 0 257236 0% /dev/shm
# mount /dev/hda1 on / type ext3 (rw) none on /proc type proc (rw) none on /dev/shm type tmpfs (rw) /dev/hda3 on /home type ext3 (rw)
Burada iki disk bölümlendirmemiz var, biri /home dışında herşeyi içeriyor. Bu "/" bölümüdür ve fiziksel olarak hda1 diskindedir. hda1 birinci ide disk (hda) üzerindeki ilk bölüm (1). 3. bölüm (hda3) aynıd disk üzerinde /home olarak mount edilmiştir. Bundan dolayı eğer /home'a giderseniz hda3 üzerindeki dosyalara erişmiş olursunuz. Bu şimdi D: miydi yoksa E: miydi gibi bir derdiniz yok. Bu yalnızca bir dizin ağacı ve heryaman aynı.
Fstab parametreleri
Örneklerde göreceğiniz gibi fstab dosyasının her bir satırında 6 tane bölüm var.
1. /dev/hda9 Bu sizin sisteminizdeki disk ve partisyona göre değişiklik gösterebilir. Bağlanacak olan diski ve partisyonu gösterir.
2. /mnt/dizin/ İsteğinize göre farklı bir dizin de yazabilirsiniz. Ama bu dizinin oluşturulduğuna dikkat etmelisiniz. Diski nereye mount edeceğinizi gösterir. Mounttan sonra o diskteki dosyaları bu dizinin altında gösterirsiniz.
3. Diskin format tipine göre değişiklik gösterir: vfat, ntfs, cdrfs(cd`ler için)
4. Bu bölümde ise istediğiniz opsiyonu seçebilirsiniz. Seçenekleri aşağıda bulabilirsiniz:
auto or noauto
Öntanımlı olarak auto gelir. Auto seçeneği ile diskin açılışta otomatik bağlanmasını sağlarsınız. noauto seçeneği ile disk otomatik bağlanmaz. Kullanıcı, diske erişmeden önce mount etmesi gerekir. noauto seçeneği taşınabilir medyalar için iyi bir seçenektir.
users
bir kullanıcının diski mount ve unmount( umount) etmesine izin vermek için kullanılır.
uid=userid
Sistem verilen id`deki kullanıcılara umask ile ilgili yetki verir.
gid=groupid
Sistem bu kez verilen id`deki gruba yetki verir.
user/nouser
Öntanımlı olarak nouser şeklinde gelir. user diskin kullanıcı tarafından mount edilebileceğini, nouser ise sadece root`un mount edebileceğini belirtir.
ro/rw
Öntanımlı olan rw`dir. rw diskin yazılabilir ve okunabilir, ro ise sadece okunabilir olmasını sağlar.
exec/noexec
Öntanımlı olan exec`dir. exec ile çalıştırılabilir ikili dosyalara izin verirsiniz. noexec ile çalıştırılabilir ikili dosyalara izin vermezsiniz.
sync/async
Kopyalama ile ilgilidir. Öntanımlı olan sync`dir. sync ile kopyalama işlemi bittikten sonra yazmayı sağlarsınız. async ise kopyalama ve yazmayı aynı anda yapar.
defaults
Yukarıdaki liste ile işiniz olmayacaksa sadece bunu yazar ve hepsinin öntanımlılarını alırsınız(rw, suid, dev,exec,auto, nouser, and async)
umast=007
bu 3 rakamı değiştirebilirsiniz. Bu 3 rakamın birincisi diskin sahibinin haklarını, ikincisi bir grubun haklarını 3sü ise diğerlerinin(herkesin) haklarını belirler. Aynı chmod gibidir. 4=okumak 2=yazmak 1=çalıştırmak 0=yetkisiz.
Örnek:
Sahibinin herşeyi yapması=(okuma+yazma+çalıştırma)=4+2+1=7 Grubun sadece okuması=(okuma)=4 Diğerlerinin sadece okuması=(okuma)=4 umask=744 gibi…
5. Bu bölümde ise yedekleme ile ilgilidir. Yedeklemenin olması isteniyorsa 1 istenmiyorsa 0 yazmak kafidir.
6. Bu bölümde diskin işleyişi ile ilgilidir. Değerleri ve sounçlarına bakacak olursak;
0= Dosya sistemi hiç kontrol edilmez. 1= root dosya sistemi olarak kullanılır. 2= Diğer dosya sistemleri şeklinde kullanılır.
Bir sonraki sistem başlangıcında bölümler kendiliğinden bağlanmış olacaklardır.
Dosya Sistemi meşgul problemi
Linux dosya sistemi yazma ve okuma işlemini tamponlar. Eğer usb sürüm 1.1 diskiniz varsa ve büyük dosyalar kullanıyorsanız buna dikkat etmelisiniz. İlk anda erişim yavaştır ama sonra aynı dosyayı ikinci kullanışınız oldukça hızlı olacaktır ve disk üzerindeki ışık yanmayacaktır.
Disk yapısı gereği bir diski kullanımdayken silemezsiniz. Öncelikle unmount yapmalısınız. Normal dahili diskler için bu problem olmaz ama cdrom ve USB diskler için problem olabilir.
Eğer usb mount noktanız /mnt/usb ise ve "cd /mnt/usb" yapmışsanız bash bu dosya sistemini kullanacaktır. Eğer başkabşr kabuk pencerinden bu alanı umount etmek isterseniz şimdi "file system busy" mesajını alırsınız ve umount işlemi gerçekleşmez. "cd" yaparak /mnt/usb alanını terketmek umount için yeterli olacaktır. Bu problem bazen unuttuğunuz bir uygulama bu alanı kullandığında karşınıza çıkar bu yüzden hangi programın bu alanı kullandığını bulmak bazen zor olabilir.
Bunu bilgisayarınıza sorun !
# fuser -m -u /mnt/usb /mnt/usb: 1347c(root) 1348c(guido) 1349c(guido)
Bu komutla ilgili alanı kimin ya da neyin kullandığını bulabilirsiniz.Şimdi "ps auxw" ile işlemi bulur ve bunu kill ile ortadan kaldırabilirsiniz. Artık sistem umount edilmeye hazırdır. Ya da doğrudan süreci öldürmek istiyorsak:
# fuser -km /mnt/usb
komutunu kullanabiliriz.
Ama windows bunu yapabiliyor !?
Neden yapnızca usb kablosunu çekmiyorsunuz ? Eski dos/win3.1 bilgisayarları kapanırdı. Kapatma gerekmeksizin.Bu aralar bazı arkadaşlarım güç kesilmeden önce Linux'u kapatmak gerektiğinden dolyaı şikayet ediyorlardı.Sonra win95 geldi ve bu şikayatler gitti çünkü herkes önce bilgisayarı kapattı.
Linux da bunu yapabiliyor!
Linux için de çözümler var elbette. Mandrake Linuxda supermount denilen bir özellik var örneğin. Bu özellik tam olarak bunu sağlıyor ve aynı sonucu (ya da problemi) alıyorsunuz. Ancak bunu tavsiye etmiyorum çünkü bazı durumlarda dosya kaybetme riski var.
En iyisi mtools kullanmak (http://mtools.linux.lu/). mtools disket sürücüleri denetleyen bir komut dizisidir. usb-sticks ... temelde FAT dosyasistemiyle silinebilen bir ortam ve dosyasistemini mount etmeniz gerekmiyor.
İşte ipucu:
1. /etc/mtools.conf dosyasını düzenleyin ve bu satırı ekleyin :
drive u: file="/dev/sda1" # or sda4; some usb-stick have partition
# 4 created as factory default.
2. Şimdi /dev/sda1 mount etmeyin. Bu komut yeterli:
mdir u:
usb aygıtının mount edildiğini göreceksiniz.
mcopy * u:
tüm dosyaları bu şekilde usb aygıtına aktarabilirsiniz.
mcopy u:\* .
bununla usb aygıtındaki tüm dosları bulunduğunuz dizineaktarabilirsiniz (önde \ işaretinin olmasına dikkat edin).
Kullanımı çok kolay.
Herkese mount yetkisi vermek
Normalde mount edebilmek için root kullanıcısı olmalısınız. Ancak cd-rom ya da usb için için normal kullanıcılara mount yetkisi verebilirsiniz. Tek yapmanız gereken /etc/fstab dosyasını aşağıdaki gibi düzenlemek :
# dev mount point fs type flags /dev/sda1 /mnt/usb auto noauto,user 0 0
Bu satır sda1'in(scsi diskin ilk bölümü, usb diskler de scsi diskler gibi algılanır) açılışta otomatik olarak mount edilmeyeceği ve her kullanıcıya mount/unmount etme yetkisinin verildiği anlamına geliyor. Doysa sistemi tipi de otomatik olarak veriliyor. Böylelikle hani dosya sistemi kullanıyorsanız mount işlemi bunu otomatik olarak algılıyor.
Dizüstü bilgisayarlar ve nfs
Ağ dosya sistemi NFS eğer farklı kullanıcıların dosyalarını ydeklerini belli bir merkezde toplamak isterseniz oldukça faydalıdır. Tek yapmanız gereken kullanıcı alanlarını merkezi sunucudan mountlamak ve kullanıcıların ağ üzerinden alanlarına erişebilmelerini sağlamak. Aynı yapılandırma ve aynı dosyalara heryerden erişim olanağı, bu oldukça iyi.
Peki dizüstü kullanıcıları ne yapacak ?
Öncelikle eğer ağ üzerinde değilseniz kullanıcı alanınıza erişemezsiniz. Bir çözüm tüm dosyaları dizüstüne kopyalamaktır (rsync). Ancak bu yöntem ile düzenli olarak kopyalama yapmalısınız ayrıca çoğunlukla alanınızdaki tüm dosyalar gerekli değildir. Benim önerim ikinci bir kullanıcı alanı tanımlamaktır. Bu alanda yalnızca yapılandırmanız ve siz yolculuğa öıktığınızda size gerekecek dosyalar bulunuyor.
Dosya sistemini boş olmayan bir alana (nfs de dahil herhangi dosyasistemi/disk ) mount ettiğinizde bu dizinde bulunan dosyalar görünmez olur ve mount ettiğiniz dosya sistemini görürsünüz.
İşte çözüm : home dizini için bir bir mount noktası oluşturun ve bilgisayar ağiletişimde iken buraya otomatik mount yapın. Bununla birlikte birşeyi mount etmeden önce kullanıcı için ağiletişimin olmadığı durumdaki alanı için bir link oluşturun :
/home/guido -> ../home_nonet/guido
Guido kullanıcısı ağ üzerinde iken linten dolayı normal kullanıcı alanını görecek. Ağda değilken ise /home_nonet/guido alanını kullanıcı alanı olarak görecek (/home/guido).
Çok güzel bir çözüm.
Sonuç
Donanım için farklı katmanlar yaratmak Unix'in herzaman hedeflerinden birisi olmuştur. Dosya sistemi diskleri mount/umount yapmak ta bunun yollarından birisidir. Diğer güncel işletim sistemlerine göre oldukça eski olmasına rağmen Unix bu konuda en gelişmiş dosya sistemidir.
Kaynak
http://www.tldp.org/linuxfocus/Turkce/September2004/article349.shtml
