Linux sistemlerinde, dosya sistemleri veya depolama cihazları belirli dizinlere bağlanarak (mount) sistemde kullanılabilir hale getirilir. Bağlama işlemi, Linux’un temel işleyişini sağlamak için oldukça önemlidir, çünkü cihazlar, sabit disk bölümleri, USB sürücüler, ağ paylaşımları ve ISO dosyaları gibi kaynaklara erişim sağlamak bu işlemle mümkün olur. Bu rehberde, Linux sisteminde dosya sistemlerini bağlamayı, detaylı komutları ve çeşitli kullanım örneklerini adım adım inceleyeceğiz.
1. Dosya Sistemleri ve Bağlama (Mount) Nedir?
Linux işletim sisteminde, her şey bir dosya olarak kabul edilir; bu sadece belgeleri veya dizinleri değil, aynı zamanda cihazları ve hatta işlemleri de içerir. Dolayısıyla, sabit diskler, USB sürücüler veya ağdaki uzak paylaşımlar, öncelikle bağlama işlemiyle bir dizine erişim sağlanarak kullanılabilir hale getirilir. Bağlama işlemi yapılmadan, bu cihazlara doğrudan erişim sağlanamaz.
Bir dosya sistemini bağlamak, genellikle iki temel adımı içerir:
- Bağlama noktasının belirlenmesi veya oluşturulması.
mount
komutu ile dosya sisteminin belirli bir dizine bağlanması.
Bağlama işlemi, genellikle sistem açılışında otomatik olarak gerçekleştirilir, ancak kullanıcı gerektiğinde belirli cihazları manuel olarak bağlayabilir.
2. Mevcut Bağlanmış Dosya Sistemlerini Görüntüleme
Linux sisteminde, mevcut olarak bağlanmış tüm dosya sistemlerini görüntülemek için mount
komutunu tek başına kullanabilirsiniz. Bu komut, hangi cihazların hangi noktalara bağlı olduğunu ve bu bağlantıların nasıl yapılandırıldığını gösterir:
$ mount
Bu komutun çıktısı genellikle şu şekildedir:
/dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro)
/dev/sdb1 on /data type ext4 (rw,noatime)
/dev/sdc1 on /backup type ext4 (ro,relatime)
Her satırdaki bilgiler şu şekildedir:
- (1) Bağlanan cihaz veya dosya sisteminin adı (örneğin
/dev/sda1
). - (2) Bağlantı noktası, yani cihazın bağlandığı dizin (örneğin
/
veya/data
). - (3) Dosya sistemi türü (örneğin
ext4
). - (4) Bağlama seçenekleri; burada
rw
,ro
,noatime
gibi seçenekler dosya sisteminin okuma-yazma veya salt okunur olup olmadığını belirtir.
Alternatif olarak, df -h
komutunu kullanarak da bağlanmış dosya sistemlerinin bir listesini daha okunabilir bir formatta görebilirsiniz:
$ df -h
Bu komut, kullanılan alan, boş alan ve bağlanma noktalarını gösterir.
3. Dosya Sistemi Bağlama
Bir dosya sistemini bağlama işleminde dikkat edilmesi gereken adımlar ve seçenekler vardır. Örneğin, bir USB sürücüsü veya ağ paylaşımı bağlamak için farklı yöntemler gerekebilir.
3.1. Basit Bir Cihaz Bağlama
Bir cihazı bağlamak için şu adımları izleyin:
- Bağlama Noktası Oluşturma: Öncelikle cihazın bağlanacağı bir dizin oluşturmalısınız. Örneğin:
sudo mkdir /mnt/mydisk
- Bağlama İşlemi: Şimdi cihazı
mount
komutu ile oluşturduğunuz dizine bağlayabilirsiniz. Örneğin:
sudo mount /dev/sdb1 /mnt/mydisk
- Bağlantıyı Kontrol Etme: Bağlantının başarılı olup olmadığını kontrol etmek için:
mount | grep mydisk
3.2. ISO Dosyalarını Bağlama
ISO dosyaları, optik disklerin (CD/DVD) dijital bir kopyası olarak saklanır ve sistemde “loop” cihazı kullanılarak bağlanabilir. Bu dosyalar çoğunlukla salt okunur (read-only) olarak bağlanır.
ISO dosyasını bağlamak için:
- Bağlama Noktası Oluşturma: Öncelikle bir dizin oluşturun:
sudo mkdir /mnt/iso
- ISO Dosyasını Bağlama: ISO dosyasını bu dizine bağlayın:
sudo mount -o loop /path/to/your.iso /mnt/iso
- Bağlantıyı Kontrol Etme: Bağlanmış ISO dosyasını görmek için:
mount | grep /mnt/iso
3.3. USB Sürücüleri Bağlama
USB cihazları, çıkarılabilir olması nedeniyle özellikle sık kullanılan depolama cihazlarıdır. Sisteme bir USB takıldığında, genellikle /dev/sdX
biçiminde bir cihaz adı atanır. Cihazın bağlanması için öncelikle lsblk
komutu ile cihaz adını öğrenebilirsiniz:
lsblk
Cihaz adını öğrendikten sonra:
- Bağlama Noktası Oluşturma: Örneğin:
sudo mkdir /mnt/usbdrive
- USB’yi Bağlama: USB cihazını bağlayın:
sudo mount /dev/sdb1 /mnt/usbdrive
- Kullanım: Artık
/mnt/usbdrive
dizini üzerinden USB içeriğine erişebilirsiniz.
3.4. Ağ Paylaşımlarını Bağlama
Ağ üzerindeki dosya paylaşımlarına erişmek için NFS
veya CIFS
gibi protokoller kullanılır. Aşağıda bu protokolleri kullanarak bağlantı kurma işlemlerini inceleyeceğiz.
3.4.1. NFS Paylaşımını Bağlama
NFS (Network File System), ağdaki paylaşımlara erişmek için kullanılan bir dosya sistemi protokolüdür. NFS kullanarak bir dizini bağlamak için:
- Bağlama Noktası Oluşturma: Örneğin:
sudo mkdir /mnt/nfsshare
- NFS Paylaşımını Bağlama: NFS sunucusundaki bir dizini bağlamak için:
sudo mount -t nfs 192.168.1.100:/shared/folder /mnt/nfsshare
3.4.2. Samba Paylaşımını Bağlama (CIFS)
Samba, Linux ve Windows sistemleri arasında dosya paylaşımını sağlar. CIFS (Common Internet File System) protokolü kullanarak Samba paylaşımlarına bağlanabiliriz.
- Bağlama Noktası Oluşturma: Örneğin:
sudo mkdir /mnt/sambashare
- Samba Paylaşımını Bağlama: CIFS protokolü ile bir Windows paylaşımını bağlamak için:
sudo mount -t cifs //192.168.1.10/shared /mnt/sambashare -o username=yourusername,password=yourpassword
4. Bağlama Seçenekleri
mount
komutu birçok ek seçeneğe sahiptir. Bunlardan bazıları şunlardır:
-o rw
: Dosya sistemini okuma-yazma olarak bağlar.-o ro
: Dosya sistemini salt okunur olarak bağlar.-o loop
: Bir dosya imajını, örneğin bir ISO dosyasını bağlamak için kullanılır.-o noatime
: Dosya sisteminde dosyaların son erişim zamanlarını kaydetmeyi devre dışı bırakır ve disk erişim performansını artırabilir.
5. /etc/fstab Dosyasını Kullanarak Otomatik Bağlama
Sistem açıldığında bazı dosya sistemlerinin otomatik olarak bağlanmasını sağlamak için /etc/fstab
dosyası kullanılır. Bu dosyada her satır, bir dosya sisteminin hangi dizine nasıl bağlanacağını tanımlar. Örneğin, /dev/sdb1
cihazını /data
dizinine otomatik bağlamak için /etc/fstab
dosyasına şu satırı ekleyebilirsiniz:
/dev/sdb1 /data ext4 defaults 0 0
Bu yapılandırma dosyasını düzenledikten sonra mount -a
komutunu kullanarak tüm dosya sistemlerini tekrar bağlayabilirsiniz.
6. Dosya Sistemini Bağlantıdan Çıkarma
Bağlanmış bir dosya sistemini bağlantıdan çıkarmak için umount
komutu kullanılır. Bu işlem, dosya sistemini güvenli bir şekilde bağlantıdan çıkarır.
Örneğin, /mnt/mydisk
bağlama noktasını çıkarmak için:
sudo umount /mnt/mydisk
Alternatif olarak, cihaz adı ile de bağlantıyı kaldırabilirsiniz:
sudo umount /dev/sdb1
Sonuç
Linux sistemlerinde dosya sistemlerini bağlama işlemi, sistemin günlük kullanımında önemli bir yer tutar. USB sürücülerden ağ paylaşımlarına, ISO dosyalarından sabit disk bölümlerine kadar birçok kaynağı sisteme erişilebilir hale getiren bu süreç, özellikle sistem yöneticileri ve ileri seviye kullanıcılar için bilinmesi gereken temel bir konudur.
Linux’ta Bağlantı Noktası Kontrolü: Mount Edilmiş Dizini Tespit Etme ve Otomatik Bağlama
Linux sistemlerde, bir dizinin “mount” edilip edilmediğini belirlemek birçok durumda oldukça önemlidir. Bu rehberde, mount
, mountpoint
, findmnt
komutlarını ve /proc/mounts
dosyasını kullanarak bir dizinin mount durumunu nasıl kontrol edebileceğimizi ele alacağız. Örnek olarak /mnt/backup
dizininin mount durumunu kontrol edecek ve eğer mount edilmemişse otomatik olarak mount edeceğiz.
İçeriğimizde ayrıca, bu işlemleri otomatikleştiren küçük bir Bash betiği oluşturacağız. Bu betik, belirli bir dizinin mount edilip edilmediğini kontrol edecek ve gerektiğinde bu dizini otomatik olarak bağlayacaktır. Adım adım açıklamalarla, hem manuel hem de script tabanlı yöntemleri inceleyeceğiz.
1. mount
Komutunu Kullanarak Mount Durumunu Kontrol Etme
mount
komutu, mevcut durumda mount edilmiş tüm dosya sistemlerini listelemek için kullanılır. Bu listeyi belirli bir dizin için filtreleyebiliriz. Örneğin, /mnt/backup
dizininin mount durumunu kontrol etmek için aşağıdaki komut kullanılabilir:
$ mount | awk '{if ($3 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}'
Bu komut, /mnt/backup
dizini bağlıysa 0
koduyla, bağlı değilse -1
hata koduyla sonuç döner. Ancak bu yöntemin dezavantajı, dizin adında boşluklar olması durumunda düzgün çalışmamasıdır.
Örnek olarak, /mnt/backup
dizinini mount etme işlemi:
$ {
if mount | awk '{if ($3 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}'; then
echo "/mnt/backup zaten bağlı"
else
mount /dev/sdc1 /mnt/backup
fi
}
Bu işlemi daha taşınabilir hale getirmek için bir fonksiyon oluşturabiliriz:
$ is_mounted() {
mount | awk -v DIR="$1" '{if ($3 == DIR) { exit 0}} ENDFILE{exit -1}'
}
Artık bu fonksiyonu kullanarak mount durumunu kontrol edebiliriz:
$ {
if is_mounted "/mnt/backup"; then
echo "/mnt/backup zaten bağlı"
else
mount /dev/sdc1 /mnt/backup
fi
}
Tek satırda daha pratik bir çözüm olarak:
$ mount | awk '{if ($3 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}' || mount /dev/sdc1 /mnt/backup
2. mountpoint
Komutu ile Kontrol Etme
mountpoint
komutu, bir dizinin mount edilip edilmediğini kontrol etmenin en basit yollarından biridir. Bu komut doğrudan dizin ismini alır ve mount durumunu ekrana yazdırır.
$ mountpoint /mnt/backup
Aynı işlemi sessiz modda gerçekleştirmek için:
$ {
if mountpoint -q /mnt/backup; then
echo "/mnt/backup zaten bağlı"
else
mount /dev/sdc1 /mnt/backup
fi
}
Bu yöntemi de bir fonksiyon haline getirebiliriz:
$ is_mounted() {
mountpoint -q "$1"
}
Ve tek satır halinde kullanabiliriz:
$ mountpoint -q /mnt/backup || mount /dev/sdc1 /mnt/backup
3. findmnt
Komutu ile Kontrol Etme
findmnt
komutu, belirli bir dizinin mount durumu hakkında bilgi almak için etkili bir yoldur. Bu komut, belirli bir dizini parametre olarak alır ve sadece o dizinle ilgili bilgileri ekrana getirir.
$ findmnt /mnt/backup
Bu komutu bir if-else
yapısında kullanabiliriz:
$ {
if findmnt /mnt/backup >/dev/null; then
echo "/mnt/backup zaten bağlı"
else
mount /dev/sdc1 /mnt/backup
fi
}
Bir fonksiyon olarak da kullanabiliriz:
$ is_mounted() {
findmnt "$1" >/dev/null
}
Ve tek satır halinde:
$ findmnt /mnt/backup >/dev/null || mount /dev/sdc1 /mnt/backup
4. /proc/mounts
Dosyasını Okuyarak Kontrol Etme
Linux sistemlerde, mount edilmiş dosya sistemleri /proc/mounts
dosyasında listelenir. Bu dosyayı awk
ile okuyarak, belirli bir dizinin mount edilip edilmediğini kontrol edebiliriz:
$ awk '{if ($2 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}' < /proc/mounts
if-else
örneğini tekrar yapalım:
$ {
if awk '{if ($2 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}' < /proc/mounts; then
echo "/mnt/backup zaten bağlı"
else
mount /dev/sdc1 /mnt/backup
fi
}
Bu kodu fonksiyon haline getirebiliriz:
$ is_mounted() {
awk -v DIR="$1" '{if ($2 == DIR) { exit 0}} ENDFILE{exit -1}' < /proc/mounts
}
Ve tek satır alternatifleri:
$ awk '{if ($2 == "/mnt/backup") { exit 0}} ENDFILE{exit -1}' < /proc/mounts || mount /dev/sdc1 /mnt/backup
Sonuç
Bu rehberde, bir dizinin mount edilip edilmediğini kontrol etmek için çeşitli yöntemleri inceledik ve Bash üzerinde kullanabileceğiniz fonksiyonlar oluşturduk. mount
, mountpoint
, findmnt
ve /proc/mounts
dosyasını kullanarak mount kontrolü yapmanın avantajlarını ve sınırlamalarını gösterdik. Artık bir dizinin mount durumu üzerinde tam kontrol sağlayabilir ve ihtiyacınız doğrultusunda otomatik bağlama işlemleri gerçekleştirebilirsiniz.