Linux'ta disk bağlama: lsblk, bölümleme, mkfs, mount ve fstab
Linux'ta disk bağlamak, bir bölümün dosya sistemini dizin ağacındaki bir klasöre (örneğin /data) eklemek demektir. Yeni disk lsblk ile bulunur, fdisk veya parted ile bölümlenir, mkfs.ext4 ile biçimlendirilir, mount /dev/sdb1 /data ile bağlanır; yeniden başlatmadan sonra da bağlı kalması için bölümün UUID'si /etc/fstab dosyasına yazılır ve mount -a ile denetlenir.
Linux'ta sürücü harfleri yoktur: tüm depolama aygıtları / ile başlayan tek bir dizin ağacına eklenir. Linux'ta disk bağlamak, bir bölümün dosya sistemini boş bir dizine, yani bağlama noktasına “asmak” işlemidir. Yeni bir diskin yolu her zaman aynıdır: aygıtı bulmak (lsblk), bölümlemek (fdisk veya parted), dosya sistemi oluşturmak (mkfs), bağlamak (mount) ve /etc/fstab içine yazarak kalıcı hale getirmek. Her adımı anlatıyor, yerin nereye gittiğini df ve du ile nasıl bulacağınızı da gösteriyoruz.
Diskler ve bölümler Linux'ta nasıl çalışır
Çekirdek her diski /dev altında bir aygıt dosyası olarak temsil eder. Adlar bağlantı türüne göre değişir:
| Ad | Ne | Bölümler |
|---|---|---|
/dev/sda, /dev/sdb | SATA/SAS/USB diskler, birçok sanal disk | /dev/sda1, /dev/sda2 |
/dev/vda | KVM sanal makinelerindeki virtio diskler | /dev/vda1 |
/dev/nvme0n1 | NVMe SSD | /dev/nvme0n1p1 |
/dev/mapper/... | LVM mantıksal birimleri, şifreli birimler | — |
Disk bölümlere ayrılır, bölümde bir dosya sistemi (ext4, xfs, btrfs) oluşturulur ve bu dosya sistemi bir dizine bağlanır. Bölüm bağlanmadıkça dosyaları erişilemez, disk fiziksel olarak takılı olsa bile.
Diskleri görme: lsblk ve blkid
Disklerle çalışırken ilk komut lsblk'tir. Aygıt ağacını, boyutları ve bağlama noktalarını gösterir:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part /
sdb 8:16 0 100G 0 disk
Burada sdb, hiç bölümü ve bağlama noktası olmayan 100 GB'lık yeni bir disktir. Faydalı seçenekler:
lsblk -f— her bölümün dosya sistemi türünü, etiketini ve UUID'sini gösterir.lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL— yalnızca ihtiyacınız olan sütunlar.sudo blkid— tüm bölümler için UUID ve dosya sistemi türü.sudo fdisk -l— tüm disklerin bölüm tabloları ve sektörleriyle.
Disk sanal makineye sıcak eklendi ama lsblk onu görmüyorsa, çekirdekten veri yolunu yeniden taramasını isteyin: echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.
Disk bölümlendirme: fdisk ve parted
Bölümlendirmeden önce doğru aygıtı seçtiğinizden emin olun: sistem diskine bölüm tablosu yazmak verileri yok eder. lsblk çıktısında boyuta ve bağlama noktasının olmamasına bakın.
GPT mi MBR mi
Yeni diskler için GPT kullanın: 2 TB'tan büyük diskleri ve 128'e kadar bölümü destekler. MBR (dos) yalnızca BIOS ile önyükleme yapan eski sistemlerde, önyükleyici gerektirdiğinde kullanılır.
fdisk ile bölümlendirme
Modern fdisk hem GPT hem MBR'yi destekler. Çalışma etkileşimli modda yapılır:
$ sudo fdisk /dev/sdb
Command (m for help): g # boş bir GPT tablosu oluştur
Command (m for help): n # yeni bölüm
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter # tüm disk
Command (m for help): w # değişiklikleri yaz ve çık
w tuşuna basana kadar diske hiçbir şey yazılmaz; bu yüzden değişiklik yapmadan çıkmak için q kullanabilirsiniz.
parted ile tek satırda bölümlendirme
Betiklerde diyalog gerektirmeyen parted daha kullanışlıdır:
$ sudo parted -s /dev/sdb mklabel gpt
$ sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
Yüzde ile verilen sınırlar bölümün doğru hizalanmasını sağlar. Yeni bölüm görünmezse, çekirdeğin tabloyu yeniden okuması için sudo partprobe /dev/sdb çalıştırın.
Dosya sistemi oluşturma: mkfs
Bölüm, yalnızca bir blok aralığıdır. Dosya saklayabilmesi için üzerinde bir dosya sistemi oluşturulmalıdır:
$ sudo mkfs.ext4 -L data /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
...
Writing superblocks and filesystem accounting information: done
-L anahtarı etiket verir; bölümü daha sonra bu etiketle kolayca tanıyabilirsiniz. Hangisini seçmeli:
| Dosya sistemi | Komut | Ne zaman uygun |
|---|---|---|
| ext4 | mkfs.ext4 | varsayılan ve evrensel seçim, küçültülebilir |
| XFS | mkfs.xfs | büyük dosyalar ve birimler, RHEL'in standardı; yalnızca büyütülebilir |
| Btrfs | mkfs.btrfs | anlık görüntüler, sıkıştırma, alt birimler |
| vfat/exFAT | mkfs.vfat, mkfs.exfat | Windows ve macOS ile veri paylaşımı için bellekler |
mkfs, bölümde ne varsa siler. Boş bölümde komut onay istemez; bu yüzden aygıt adını bir kez daha kontrol edin.
Linux'ta mount ile disk bağlama
Bir dizin — bağlama noktası — oluşturun ve bölümü buraya bağlayın:
$ sudo mkdir -p /data
$ sudo mount /dev/sdb1 /data
$ df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 98G 24K 93G 1% /data
Dosya sistemi türünü mount kendisi algılar, ama mount -t xfs gibi açıkça da belirtebilirsiniz. /data dizininde bağlamadan önce dosyalar varsa, bağlama sonrası silinmezler; yalnızca yeni dosya sisteminin altında kalıp görünmez olurlar ve bağlama kaldırılınca geri gelirler.
Bağlama seçenekleri
Seçenekler -o ile virgülle ayrılarak verilir:
ro/rw— yalnızca okuma veya okuma ve yazma.noatime— her okumada erişim zamanını güncelleme; gereksiz yazmalar azalır.noexec— bu bölümden program çalıştırmayı yasaklar (/tmpve indirme dizinleri için faydalıdır).nosuid,nodev— SUID bitlerini ve aygıt dosyalarını yok sayar.remount— bağlamayı kaldırmadan seçenekleri değiştirir:sudo mount -o remount,ro /data.
Neyin hangi seçeneklerle bağlı olduğunu findmnt ile görmek kolaydır: findmnt /data veya findmnt -t ext4.
Bağlanan disk için izinler
Yeni ext4'ün kökü root'a aittir, bu yüzden normal kullanıcı oraya yazamaz. Bağlamadan sonra dizini ilgili kullanıcıya verin: sudo chown alice:alice /data. vfat ve exFAT'ta Unix izinleri yoktur; sahip, bağlarken uid=, gid= ve umask= seçenekleriyle belirlenir.
Diski ayırma: umount ve target is busy hatası
Bağlamayı kaldırmak için umount komutunu (sonunda n harfi olmadan) aygıt veya dizin adıyla kullanın:
$ sudo umount /data
umount: /data: target is busy.
Bu hata, bu dosya sistemindeki dosyaları bir sürecin tuttuğu ya da bu dosya sisteminde bir sürecin geçerli dizin olduğu anlamına gelir — çoğu zaman cd /data yaptığınız terminal. Suçluyu bulmak için:
$ sudo lsof +f -- /data
$ sudo fuser -vm /data
Süreci durdurun veya dizinden çıkıp tekrar deneyin. Son çare umount -l (lazy) seçeneğidir: dosya sistemi ağaçtan hemen ayrılır, ama gerçekten serbest kalması süreçler dosyaları kapatana kadar sürer.
Açılışta otomatik bağlama: /etc/fstab
mount komutu yeniden başlatmaya kadar geçerlidir. Diskin otomatik bağlanması için /etc/fstab dosyasına satır eklemeniz gerekir. Bölümü /dev/sdb1 adıyla değil UUID ile belirtin: diskler eklendikçe aygıt adları yer değiştirebilir, UUID ise sabittir.
$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."
Satırın biçimi altı alandan oluşur:
# <aygıt> <bağlama> <tür> <seçenekler> <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77 /data ext4 defaults,noatime 0 2
| Alan | Anlamı |
|---|---|
| aygıt | UUID=..., LABEL=... veya bir yol |
| bağlama | bağlanacak dizin (mevcut olmalı) |
| tür | ext4, xfs, swap, nfs vb. |
| seçenekler | defaults ve gerekli diğerleri, örneğin noatime, nofail |
| dump | neredeyse her zaman 0 |
| fsck | denetim sırası: kök için 1, diğerleri için 2, 0 — denetleme |
fstab'ı yeniden başlatmadan önce mutlaka denetleyin
/etc/fstab içindeki bir hata sunucuyu açılışta kurtarma moduna sokabilir; konsolu olmayan bulut makinesinde bu çok can sıkıcıdır. Düzenlemeden hemen sonra çalıştırın:
$ sudo findmnt --verify
$ sudo systemctl daemon-reload
$ sudo mount -a
$ findmnt /data
mount -a, fstab'daki henüz bağlanmamış her şeyi bağlar ve hatayı hemen gösterir. Çıkarılabilir ve ağ diskleri için nofail seçeneğini ekleyin: aygıt yoksa açılış onsuz devam eder. systemd'de fstab'daki her satır bir .mount birimine dönüşür — örneğin data.mount; durumu systemctl status data.mount ile görürsünüz.
Boş alanı görme: df
df bağlı dosya sistemlerinin doluluk oranını gösterir:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 37G 1.1G 98% /
/dev/sda1 974M 180M 727M 20% /boot
/dev/sdb1 98G 24K 93G 1% /data
-h— boyutları okunabilir birimlerde gösterir.-T— dosya sistemi türü sütunu ekler.-i— inode'ları gösterir: çok sayıda küçük dosya yüzünden boş gigabaytlar varken disk “bitebilir”.-x tmpfs -x devtmpfs— sanal dosya sistemlerini gizler.
Size neden Used + Avail'e eşit değil: ext4, sistemin dolu diskte de çalışabilmesi için yaklaşık %5 alanı root için ayırır. Veri diskinde bu rezervi azaltabilirsiniz: sudo tune2fs -m 1 /dev/sdb1.
Yer nereye gitti: du
df diskin dolu olduğunu söyler, ama neyin dolu olduğunu söylemez. Bunun için dizinlerdeki dosya boyutlarını toplayan du vardır:
$ sudo du -sh /var/log
4.2G /var/log
$ sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | head
37G /
21G /var
9.8G /home
3.1G /usr
-s— yalnızca dizinin toplamı,-a— her dosya ayrı.--max-depth=1(veya-d 1) — yalnızca bir iç seviye; en büyük dizinin içine daha derine inin.-x— başka dosya sistemlerine geçmez; aksi halde/data,/procve ağ diskleri de toplama girer.sort -rh— insan tarafından okunabilir boyutlara göre sıralama, en büyük en üstte.
Tek tek büyük dosyaları bulmak için find daha uygundur: sudo find / -xdev -type f -size +1G -exec ls -lh {} +.
df dolu gösterirken du göstermiyor
Klasik durum: çok büyük bir log silindi ama yer boşalmadı. Dosya dizinden silindi, ama bir süreç (örneğin web sunucusu) onu hâlâ açık tutuyor ve bloklar serbest kalmıyor. Bu tür dosyaları bulun:
$ sudo lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
nginx 812 www 5w REG 8,2 8589934592 0 13054 /var/log/nginx/access.log (deleted)
Süreci yeniden başlatın veya logları yeniden açmasını isteyin — yer geri gelir. Gelecekte aktif bir logu silmeden temizlemek için: sudo truncate -s 0 /var/log/nginx/access.log. Farkın ikinci nedeni, bağlama noktasının altında kalan dosyalardır: root bölümünde yer kaplarlar, ama dosya sistemi üstüne bağlıyken du onları göremez.
Sık görülen hatalar ve çözümleri
| Mesaj | Neden | Ne yapmalı |
|---|---|---|
mount point /data does not exist | dizin yok | sudo mkdir -p /data |
wrong fs type, bad option, bad superblock | bölümde dosya sistemi yok, tür yanlış veya sürücü kurulu değil | lsblk -f ile kontrol edin; exFAT/NTFS için exfatprogs, ntfs-3g paketlerini kurun |
only root can do that | sudo olmadan bağlama | sudo ile çalıştırın veya fstab'a user seçeneği ekleyin |
target is busy | dizini bir süreç kullanıyor | lsof/fuser, dizinden çıkın |
| açılış acil durum modunda | fstab hatası veya disk yok | root olarak girin, fstab'ı düzeltin, nofail ekleyin |
Adım adım senaryo: veri için yeni disk
lsblk— yeni diski bulun, örneğin/dev/sdb.sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%— bölümlendirin.sudo mkfs.ext4 -L data /dev/sdb1— dosya sistemini oluşturun.sudo mkdir -p /data— bağlama noktasını oluşturun.sudo blkid /dev/sdb1— UUID'yi öğrenin ve/etc/fstab'a satır ekleyin.sudo mount -a && df -h /data— bağlayın ve kontrol edin.sudo chown kullanıcı: /data— izinleri verin.
Hizmeti durdurmadan yer genişletmeniz veya birden fazla diski birleştirmeniz gerekirse, sıradan bölüm yerine LVM kullanılır: disk fiziksel birim olur, ondan mantıksal birimler kesilir ve bunlar lvextend -r ile büyütülür.
Özet
Linux'ta disk bağlama lsblk → bölümlendirme → mkfs → mount → /etc/fstab zincirinden oluşur. Bölümleri UUID ile belirtin, fstab'ı yeniden başlatmadan önce mount -a ile denetleyin ve isteğe bağlı diskler için nofail kullanın. Yer bittiğinde df -h hangi bölümün dolu olduğunu, du -xh --max-depth=1 | sort -rh ve lsof +L1 ise neyin yer kapladığını gösterir. Diskler, bölümler, SWAP, LVM ve RAID kursta uygulamalı olarak ele alınmaktadır.
Sık sorulan sorular
Linux'ta flash bellek nasıl bağlanır?
Önce lsblk ile bulun (genellikle /dev/sdb1), bir dizin oluşturun ve sudo mount /dev/sdb1 /mnt/usb komutunu çalıştırın. Masaüstü ortamlarında bellekler genellikle otomatik olarak /media/kullanıcı_adı veya /run/media altına bağlanır.
ISO imajı nasıl bağlanır?
sudo mount -o loop,ro image.iso /mnt/iso komutuyla: loop seçeneği dosyayı bir blok aygıtı gibi bağlar. Ayırmak için normal umount kullanılır.
Ağ paylaşımı fstab ile nasıl bağlanır?
NFS için satır şöyledir: server:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0; SMB için //server/share /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. _netdev seçeneği ağın açılmasını bekler.
UUID ile PARTUUID arasındaki fark nedir?
UUID dosya sistemine aittir ve yeniden mkfs yapıldığında değişir; PARTUUID GPT tablosundaki bölüme aittir ve yeniden biçimlendirmede korunur. fstab için genellikle UUID kullanılır.
Dosya sistemi hatalara karşı nasıl denetlenir?
Bölümü ayırın ve ext4 için sudo fsck -f /dev/sdb1, XFS için sudo xfs_repair /dev/sdb1 çalıştırın. Bağlı bir dosya sistemini yazma yetkisiyle denetlemek verileri bozabilir.
Bu konu “Linux: с нуля до уверенного администрирования” kursunda uygulamalı olarak ayrıntılı işleniyor.
Kursa git