mount Komutu: Linux’ta Disk ve Dosya Sistemi Bağlama Rehberi

Bir sistemde disk bağlamayı bilmek, sıradan bir kullanıcıyı gerçek bir sysadmin’e ayıran temel becerilerden biridir. mount komutu ilk bakışta basit görünse de altında ciddi bir derinlik barındırıyor. Yeni bir disk eklediğinizde, NFS paylaşımı kurduğunuzda ya da bir ISO dosyasını açmanız gerektiğinde hep bu komutla yüz yüze geliyorsunuz. Bu yazıda mount komutunu hem teorik hem de pratik açıdan ele alacağız.

mount Komutu Nedir ve Neden Önemlidir?

Linux’ta her şey bir dosya sistemi hiyerarşisinde yaşar. Windows’taki gibi C:, D:, E: gibi ayrı sürücü harfleri yoktur. Bunun yerine tüm depolama birimleri, / kök dizinine bağlanır. İşte mount komutu, fiziksel ya da sanal bir depolama birimini bu hiyerarşiye dahil etmenizi sağlar.

Bir diski sisteme bağladığınızda, o diskin içindeki dosya sistemini belirli bir dizin üzerinden erişilebilir hale getirirsiniz. Bu dizine bağlama noktası (mount point) denir. Diski çıkarmak istediğinizde de umount komutu devreye girer.

Günlük hayatta mount komutunu şu senaryolarda kullanırsınız:

  • Sunucuya yeni bir disk eklediğinizde
  • USB sürücü veya harici disk bağladığınızda
  • NFS, CIFS/Samba paylaşımlarını sisteme eklerken
  • ISO dosyalarını mount etmek istediğinizde
  • Bozuk bir sistemi kurtarmaya çalışırken farklı bir diskten önyükleme yapıp o sistemi mount ettiğinizde
  • tmpfs veya ramfs gibi bellek tabanlı dosya sistemleri oluştururken

Temel Kullanım

mount komutunun en basit sözdizimi şu şekildedir:

mount [seçenekler] <kaynak> <hedef>

Örneğin /dev/sdb1 bölümünü /mnt/data dizinine bağlamak için:

mount /dev/sdb1 /mnt/data

Bu kadar. Ama tabii işler her zaman bu kadar basit gitmiyor. Önce bağlama noktasının mevcut olması gerekiyor:

mkdir -p /mnt/data
mount /dev/sdb1 /mnt/data

Mevcut mount edilmiş dosya sistemlerini görmek için de mount komutunu argümansız çalıştırabilirsiniz:

mount

Ama bu çıktı oldukça kalabalık olur. Daha temiz bir görünüm için findmnt komutunu öneririm:

findmnt

Ya da sadece belirli bir noktaya bakmak istiyorsanız:

findmnt /mnt/data

Önemli Parametreler

-t: Dosya sistemi tipini belirtir. ext4, xfs, ntfs, vfat, nfs gibi değerler alır.

-o: Mount seçeneklerini belirtir. ro, rw, noexec, nosuid, nodev gibi değerleri virgülle ayırarak kullanabilirsiniz.

-a: /etc/fstab dosyasındaki tüm girişleri mount eder.

-r: Salt okunur (read-only) olarak mount eder. -o ro ile aynı işlevi görür.

-w: Yazılabilir (read-write) olarak mount eder. Varsayılan davranış budur.

-n: Mount işlemini /etc/mtab dosyasına kaydetmez. Genellikle kurtarma senaryolarında kullanılır.

-v: Ayrıntılı çıktı verir.

-l: Mount noktalarını etiketleriyle birlikte listeler.

–bind: Bir dizini başka bir yere bind-mount eder.

–rbind: Bind-mount işlemini alt dizinlere de uygular.

-L: Disk etiketi ile mount eder.

-U: UUID ile mount eder.

Dosya Sistemi Tipini Belirtmek

Çoğu durumda mount komutu dosya sistemini otomatik algılar. Ama bazen elle belirtmeniz gerekebilir:

# ext4 dosya sistemini mount etmek
mount -t ext4 /dev/sdb1 /mnt/data

# NTFS diski mount etmek (Windows diskler için)
mount -t ntfs-3g /dev/sdc1 /mnt/windows

# FAT32 USB sürücü mount etmek
mount -t vfat /dev/sdd1 /mnt/usb

NTFS diskleri için ntfs-3g paketinin kurulu olması gerekir. Ubuntu/Debian üzerinde:

apt install ntfs-3g

Mount Seçenekleri ile Güvenlik ve Performans

-o parametresiyle çeşitli seçenekleri birleştirebilirsiniz. Bu seçenekler hem güvenlik hem de performans açısından kritik öneme sahiptir.

Güvenlik seçenekleri:

  • ro: Salt okunur bağlar, disk üzerinde değişiklik yapılamaz
  • noexec: Bu bölümdeki dosyalar çalıştırılamaz, web sunucusu dizinleri için ideal
  • nosuid: SUID/SGID bit’leri yok sayılır
  • nodev: Özel aygıt dosyaları işleme alınmaz
  • noatime: Erişim zamanı (access time) güncellenmez, disk I/O azalır

Performans seçenekleri:

  • async: Yazma işlemleri asenkron yapılır, daha hızlı ama daha az güvenli
  • sync: Tüm yazma işlemleri eşzamanlı gerçekleşir, yavaş ama güvenli
  • relatime: Erişim zamanını yalnızca değiştirilme zamanından eski olduğunda günceller
  • lazytime: Zaman damgası güncellemelerini erteleyerek önbellekte tutar

Örnek olarak, bir web sunucusunda kullanıcı tarafından yüklenen dosyaların bulunduğu bir bölümü güvenli şekilde mount etmek isteyelim:

mount -o noexec,nosuid,nodev /dev/sdb1 /var/www/uploads

Bu sayede birisi zararlı bir betik yüklese bile çalıştıramaz.

ISO Dosyalarını Mount Etmek

ISO dosyaları, CD/DVD imajlarıdır ve loop aygıtı aracılığıyla mount edilirler. Bir ISO’yu fiziksel medya gerekmeksizin doğrudan sisteme bağlayabilirsiniz:

mount -o loop /home/admin/ubuntu-22.04.iso /mnt/iso

Ya da açıkça belirterek:

mount -t iso9660 -o loop /home/admin/ubuntu-22.04.iso /mnt/iso

Bu özellikle paket deposu olarak yerel bir ISO kullanmak istediğinizde çok işe yarar. Sunucunun internete erişimi olmadığı kapalı ağ ortamlarında (air-gapped systems) bu yöntemi sıklıkla kullanıyoruz.

NFS Paylaşımlarını Mount Etmek

Ağ üzerindeki NFS paylaşımlarını mount etmek, özellikle çok sunuculu ortamlarda çok yaygın bir işlemdir:

# NFS istemci paketlerini kur
apt install nfs-common   # Debian/Ubuntu
yum install nfs-utils    # RHEL/CentOS

# NFS paylaşımını mount et
mount -t nfs 192.168.1.100:/srv/shared /mnt/nfs

# Performans seçenekleriyle
mount -t nfs -o rw,hard,intr,timeo=14,rsize=32768,wsize=32768 192.168.1.100:/srv/shared /mnt/nfs

hard: Sunucu yanıt vermezse istemci süresiz bekler, üretim ortamları için önerilir.

intr: Kullanıcının Ctrl+C ile bekleyen işlemi kesebilmesine izin verir.

timeo: Yeniden deneme öncesi bekleme süresi (0.1 saniye cinsinden).

rsize/wsize: Okuma ve yazma bloğu boyutları.

/etc/fstab ile Kalıcı Mount

mount komutunun yaptığı bağlamalar geçicidir. Sistem yeniden başlatıldığında kaybolur. Kalıcı hale getirmek için /etc/fstab dosyasına girdi eklemeniz gerekir.

fstab dosyasının formatı şu şekildedir:

<kaynak>  <bağlama-noktası>  <dosya-sistemi-tipi>  <seçenekler>  <dump>  <fsck-sırası>

Örnek bir fstab girişi:

# /etc/fstab dosyasını düzenle
nano /etc/fstab
# Yerel ext4 disk
/dev/sdb1    /mnt/data    ext4    defaults,noatime    0    2

# UUID ile (önerilen yöntem)
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890    /mnt/data    ext4    defaults,noatime    0    2

# NFS paylaşımı
192.168.1.100:/srv/shared    /mnt/nfs    nfs    rw,hard,intr    0    0

# ISO dosyası
/opt/repos/centos8.iso    /mnt/iso    iso9660    loop,ro    0    0

# tmpfs (RAM disk)
tmpfs    /tmp    tmpfs    defaults,size=2G,noatime    0    0

dump değeri genellikle 0 olur. Yedekleme aracına dump’ın bu dosya sistemini yedekleyip yedeklemeyeceğini söyler.

fsck sırası: Sistem açılışında fsck kontrolünün sırası. Kök dosya sistemi için 1, diğerleri için 2, kontrol edilmemesi için 0.

Disk UUID’sini öğrenmek için:

blkid /dev/sdb1
# veya
lsblk -f

fstab’ı düzenledikten sonra test etmek için:

# Belirli bir noktayı test et
mount /mnt/data

# Tüm fstab girişlerini test et (sistemi yeniden başlatmadan)
mount -a

Eğer fstab’da hata varsa mount -a size hemen söyler. Sistemi yeniden başlatmadan önce bu testi yapmayı alışkanlık haline getirin. Yanlış bir fstab girişi yüzünden sistemin açılmaması ve bunun sonucunda konsoldan ya da rescue moddan sisteme girip düzeltmek zorunda kalmak oldukça sinir bozucu bir durumdur.

Bind Mount Kullanımı

Bind mount, bir dizini başka bir konuma “yansıtmanıza” yarar. Sanal ortam izolasyonu, chroot kafesleri ve container’larda sıklıkla kullanılır:

# /var/log dizinini /mnt/chroot/var/log olarak bind-mount et
mount --bind /var/log /mnt/chroot/var/log

# Alt dizinleri de dahil et
mount --rbind /proc /mnt/chroot/proc

Gerçek bir senaryo: Bir sistemi chroot ile kurtarırken:

# Kurtarma modunda bozuk sistemi mount et
mount /dev/sda1 /mnt/recover

# Gerekli sanal dosya sistemlerini bind-mount et
mount --bind /dev /mnt/recover/dev
mount --bind /proc /mnt/recover/proc
mount --bind /sys /mnt/recover/sys

# Artık chroot yapabilirsiniz
chroot /mnt/recover

tmpfs ile RAM Disk Oluşturmak

tmpfs, verilerini RAM’de tutan özel bir dosya sistemidir. Geçici veriler, önbellekler ya da hızlı I/O gerektiren işlemler için idealdir:

# 1 GB boyutunda tmpfs oluştur
mount -t tmpfs -o size=1G tmpfs /mnt/ramdisk

# Derleyici çıktıları için geçici alan (derleme hızını ciddi artırır)
mount -t tmpfs -o size=4G,uid=1000,gid=1000,mode=755 tmpfs /home/developer/build

Büyük yazılım projelerinde derleme (build) dizinini tmpfs’e taşımak, derleme süresini önemli ölçüde kısaltır. Özellikle SSD olmayan sunucularda bunu göz önünde bulundurun.

Disk Dolu Olduğunda ve Sorun Giderme

Meşgul Bir Diski Unmount Edememe

umount /mnt/data
# umount: /mnt/data: target is busy

Bu hata, o dizini kullanan bir süreç olduğunda çıkar. Kim kullanıyor?

fuser -m /mnt/data
# veya daha ayrıntılı
lsof /mnt/data

Süreçleri öldürüp tekrar deneyin ya da zorla unmount edin (dikkatli olun):

umount -l /mnt/data    # lazy unmount, referanslar bitince bağı kopar
umount -f /mnt/data    # zorla unmount (NFS için)

Salt Okunur Olarak Yeniden Mount

Disk hatası ya da bakım sırasında bir dosya sistemini yeniden başlatmadan salt okunur moda almak:

mount -o remount,ro /mnt/data

Tekrar yazılabilir yapmak için:

mount -o remount,rw /mnt/data

Bu teknik, veritabanı yedekleme öncesi tutarlı snapshot almak için de kullanılabilir.

Mount Durumunu Kontrol Etmek

# Tüm mount noktaları
cat /proc/mounts

# Disk kullanımı ile birlikte
df -hT

# Daha ayrıntılı görünüm
findmnt --df

Systemd ile Mount Yönetimi

Modern Linux dağıtımlarında systemd, mount işlemlerini de yönetebilir. fstab yerine .mount unit dosyaları kullanabilirsiniz. Bu özellikle otomatik mount (automount) senaryolarında işe yarar:

# /etc/systemd/system/mnt-data.mount dosyasını oluştur
cat > /etc/systemd/system/mnt-data.mount << 'EOF'
[Unit]
Description=Data Disk Mount
After=network.target

[Mount]
What=/dev/sdb1
Where=/mnt/data
Type=ext4
Options=defaults,noatime

[Install]
WantedBy=multi-user.target
EOF

# Servisi etkinleştir ve başlat
systemctl daemon-reload
systemctl enable mnt-data.mount
systemctl start mnt-data.mount
systemctl status mnt-data.mount

Automount ile birleştirirseniz, dizine ilk erişildiğinde disk otomatik olarak bağlanır ve belirli bir süre kullanılmazsa otomatik olarak bağlantısı kesilir. Güç tasarrufu açısından harici diskler için çok kullanışlıdır.

Gerçek Dünya: Yeni Disk Ekleme Senaryosu

Diyelim ki bir sunucuya yeni bir veri diski eklediniz ve bunu /var/lib/mysql için kullanmak istiyorsunuz. İşte adım adım süreç:

# 1. Yeni diski tespit et
lsblk
# sdb olarak göründüğünü varsayalım

# 2. Diski biçimlendir
fdisk /dev/sdb
# n -> p -> 1 -> Enter -> Enter -> w

# 3. Dosya sistemi oluştur
mkfs.ext4 /dev/sdb1

# 4. UUID'yi al
blkid /dev/sdb1

# 5. Bağlama noktası oluştur
mkdir -p /mnt/mysql_new

# 6. Geçici olarak mount et ve test et
mount /dev/sdb1 /mnt/mysql_new
df -h /mnt/mysql_new

# 7. MySQL'i durdur, verileri taşı
systemctl stop mysql
rsync -av /var/lib/mysql/ /mnt/mysql_new/

# 8. fstab'a ekle
echo "UUID=<yukarıdan-aldığınız-uuid>  /var/lib/mysql  ext4  defaults,noatime  0  2" >> /etc/fstab

# 9. Eski dizini kaldır, yeni mount noktasını yerleştir
umount /mnt/mysql_new
mount /dev/sdb1 /var/lib/mysql

# 10. İzinleri düzelt
chown -R mysql:mysql /var/lib/mysql

# 11. MySQL'i başlat
systemctl start mysql

Sonuç

mount komutu, Linux sistem yönetiminin temel taşlarından biridir. Basit bir disk bağlama işleminden NFS paylaşımlarına, ISO mount etmekten bind-mount ile chroot ortamı kurmaya kadar pek çok senaryoda karşınıza çıkacak. Bu yazıda ele aldığımız konuları özetlersek:

  • Temel mount/umount işlemleri ve parametreler
  • Farklı dosya sistemi türleri için mount yöntemleri
  • /etc/fstab ile kalıcı mount yapılandırması
  • Güvenlik ve performans seçenekleri
  • Bind mount ve tmpfs kullanımı
  • Systemd mount unit dosyaları
  • Sorun giderme teknikleri

Pratikte en çok hata yapılan nokta, fstab’ı test etmeden sistemi yeniden başlatmaktır. Her zaman mount -a ile test edin. Ayrıca UUID kullanmayı alışkanlık haline getirin; disk adları (/dev/sdb gibi) yeniden başlatmadan sonra değişebilir ama UUID her zaman sabittir.

Mount komutunu gerçekten özümsemek için en iyi yol, bir sanal makine üzerinde bolca pratik yapmaktır. Sanal diskleri ekleyip çıkarmak, farklı senaryolar denemek, kasıtlı olarak hatalı fstab girişi yazıp kurtarmak, bu komutla aranızı güçlü tutar. Ve güçlü bir sysadmin olmak da tam olarak bu tür pratik deneyimlerden geçiyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir