Labaratuar içersinde bilgisayar donanımlarına erişim, durumları ile ilgili bilgi almak, bölümleme, dosya sistemleri, kurulum sırasında dosya sistemlerinin tanımları.

Linux101 - Ana Sayfa


Bölüm içersinde aşağıdaki konular işlenecektir:


Kullanım İpuçları:

Eğitim içersinde, komut satırı bilgileri aşağıdaki üç farklı şekilde belirtilmiştir.

  1. şunun gibi görünen komut betimleri şeklinde gösterilmler daha çok örnekler ve yazılması gereken komutları tanımlamak için kullanılır.

  2. Aşağıdaki gibi kutu içersinde gördüğünüz kodlar üzerine tıkladığınızda, kopyala yapıştır yapmanıza gerek kalmadan terminal içersinde çalıştırılacaktır:
    uname -a 
    
  3. Aşağıda gördüğünüz gibi bir pencere içersinde yazılmış olan kod betimleri sizin klavyeden yazmanız gereken kod betimleridir. Genellikle benzersiz bir ID veya başka bir değişken girmeniz gerekiyordur. Buradaki benzersiz veri eğitim sırasında kullandığınız ortam içersinden bulunabilir. <> içersinde bulunan maddeler sizin değiştirmeniz gereken verinin yerini göstermektedir.
    hostnamectl set <sunucu adı>
    

    4. Dosya sistemleri


Bir Bölümü Kullanıma Hazırlama (formatlama)

Bir bölüm oluşturulduktan sonra, onu kullanıma hazırlamanız gerekir. Bu işleme genellikle “dosya sistemi oluşturma” veya “bölümü biçimlendirme” adı verilir. Düşük seviyeli veri yapılarının diske yazılmasını içerir.

Tarla örneği verecek olursak, bölümleme işlemi tarlanın etrafını çitlerle çevirmek, biçimlendirme ise tarladaki ekilecek alanları sürmek işlemidir.   

Linux daha sonra, bölümdeki dosyalara erişmek ve depolamak için bu veri yapılarını okuyabilir ve değiştirebilir. Yaygın Linux dosya sistemleri hakkında bir şeyler bilmeli ve bunları oluşturmak için dosya sistemi oluşturma araçlarını nasıl kullanacağınızı bilmelisiniz. Linux işletim sistemi dosyaların birbirleri ile sürekli iletişim halinde olduğu bir ortamdır.


Yaygın Dosya Sistemi Türleri

Linux, hem Linux’ta yerel hem de diğer işletim sistemleri için tasarlanmış pek çok farklı dosya sistemini destekler. Bunlardan bazıları Linux altında neredeyse hiç çalışmaz ve güvenilir bir şekilde çalışsalar bile, genellikle Linux’un kendi yerel dosya sistemlerinde beklediği tüm özellikleri desteklemeler. Bu nedenle, bir Linux sistemi hazırlarken, çoğu veya tüm bölümler için bir veya daha fazla yerel dosya sistemini kullanılır.

Bilinen en popüler dosya sistemleri aşağıdaki gibidir:

Ext2fs İkinci Genişletilmiş Dosya Sistemi (ext2fs veya ext2), geleneksel Linux yerel dosya sistemidir. Linux için oluşturuldu ve 1990’ların sonlarında baskın Linux dosya sistemi olarak belirlendi. Ext2fs, güvenilir bir dosya sistemi olarak bilinir. O zamandan beri diğer dosya sistemleri tarafından gölgede bırakıldı, ancak yine de birçok yerde kullanılmaktadır. Ext2fs özellikle küçük /boot bölümleri olarak kullanılır, aynı zamanda küçük usb/sdcard ‘lar üzerinde dosya tutmak için tercih edilir. Bu kadar küçük bölümlerde, daha gelişmiş dosya sistemleri tarafından kullanılan günlük boyutu sorun yaratabilir, bu nedenle günlük tutmayan ext2fs daha iyi bir seçimdir. (Günlük tutma konusundan birazdan bahsediyoruz) Ext2 dosya sistemi türü kodu ext2’dir. IOT ve embedded cihazlarda çok sık kullanım alanı vardır.

Ext3fs Üçüncü Genişletilmiş Dosya Sistemi (ext3fs veya ext3) temelde bir günlük eklenmiş ext2fs’dir. Sonuç, ext2fs kadar güvenilir, ancak elektrik kesintilerinden ve sistem ökmelerinden çok daha hızlı kurtulan bir dosya sistemidir. Ext3 dosya sistemi türü kodu ext3’tür.

Ext4fs Dördüncü Genişletilmiş Dosya Sistemi (ext4fs veya ext4), bu dosya sistemi ailesi. Performansı artırmayı amaçlayan uzantıların yanı sıra çok büyük disklerle (16TiB’nin üzerindekiler, ext2fs ve ext3fs için sınır) veya çok büyük dosyalarla çalışma yeteneği ekler. Dosya sistemi türü kodu ext4’tür.

ReiserFS Bu dosya sistemi, Linux için bir günlük kaydı dosya sistemi olarak sıfırdan tasarlanmıştır. ReiserFS, dosyaların uçlarını birbirlerinin kullanılmayan alanlarına sıkıştırmak için çeşitli hileler kullandığından, çok sayıda küçük dosyayı (örneğin, yaklaşık 32KB’den küçük) işlemede özellikle iyidir. Bu dosya sistemini kullanmanızı tavsiye etmem, popülaritesini ve kullanım alanını yitirmiştir.

XFS Silicon Graphics (SGI), IRIX işletim sistemi için Extents File System (XFS) oluşturdu ve IBM gibi daha sonra kodu Linux’a bağışladı. JFS gibi, XFS de teknik olarak çok karmaşık bir dosya sistemidir. XFS, IRIX üzerinde sağlamlık, hız ve esneklikle ün kazanmıştır, ancak onu IRIX üzerinde bu kadar esnek kılan XFS özelliklerinden bazıları Linux altında pek desteklenmemektedir. Bu dosya sistemi için tür kodu olarak xfs kullanın.

Btrfs Bu dosya sistemi (“butter eff ess” veya “bee tree eff ess” olarak telaffuz edilir), Sun’ın Zettabyte Dosya Sisteminden (ZFS) esinlenen özelliklere sahip gelişmiş bir dosya sistemidir. Ext4fs, JFS ve XFS gibi, Btrfs de hızlı bir performans sergiliyor ve çok büyük diskleri ve dosyaları idare edebiliyor. 3.6.0 çekirdek itibariyle, Btrfs deneysel olarak kabul edilir; ancak, gelişmiş özellikleri onu mevcut popüler dosya sistemlerinin olası bir halefi yapar.

JFS IBM, AIX işletim sistemi için Günlüklü Dosya Sistemini (JFS) geliştirdi ve daha sonra OS/2’de(artık olmayan işletim sistemi) yeniden uyguladı. OS/2 sürümü daha sonra Linux’a bağışlandı. JFS, AIX veya OS/2’ye aşina iseniz veya bu bu dosya sistemini kullanabilirsiniz. Günlük tutma yöntemi özellikle ilgi çekici olabilecek teknik olarak gelişmiş bir dosya sistemidir. Bu dosya sisteminin tür kodu jfs’dir.

Uygulamada, çoğu yönetici birincil dosya sistemleri olarak ext3fs, ext4fs veya XFS’i seçer; ancak son zamanlarda btrfs kullanımı da görmeye başladım. Birde işlemediğimiz ama ilginç dosya sistemleri vardır, en ilginç ve güzel olanı ZFS ‘tir. Dosya sistemine meraklı olanların ZFS incelemesini özellikle tavsiye ederim. Her dosya sistemi ile ilgili değerler ve sorunlar hakkındaki somut verilere ulaşmak zordur ve var olsalar bile, dosya sistemi performansı pek çok başka faktörle etkileşime girdiğinde farklı sonuçlar üretir.

Konumuz olmayan ama bilmemiz gereken dosya sistemleri

Linux yerel dosya sistemlerine ek olarak, zaman zaman aşağıdakiler gibi başka dosya sistemleriyle de karşılaşabilirsiniz:

FAT File Allocation Table Dosya Ayırma Tablosu (FAT) dosya sistemi çok eski ve ilkeldir ancak her yerde bulunur. DOS ve Windows 98 tarafından desteklenen tek sabit disk dosya sistemidir. Bu nedenle, her işletim sistemi FAT üzerinden veri okur/yazar. Bu FAT dosya sistemini çıkarılabilir disklerde veri alışverişi için mükemmel bir dosya sistemi yapar. FAT’ın iki ana ortogonal varyantı vardır: Dosya sistemi adlandırıldıktan sonra FAT veri yapısının boyutunda değişiklik gösterir (12, 16 veya 32 bit işaretçiler) ve uzun dosya adlarını destekleyen varyantlara sahiptir. Linux, FAT boyutunu otomatik olarak algılar. Kullanım alanı oldukça azalmıştır, mümkünse kullanmamanızı tavsiye ederim. exFat isminde bir dosya sistemi daha vardır, daha büyük dosya sistemi kapasitesine sahiptir, MAC-Linux-Windows ortamınız var ise ve harici disk kullanıyorsanız, bu dosya sistemi işinize yarayacaktır.

NTFS Yeni Teknoloji Dosya Sistemi (NTFS) Windows NT/200x/XP/Vista/7/10 için tercih edilen dosya sistemidir. Ne yazık ki, Linux’un NTFS desteği halen istenen seviyede değildir. 2.6.x çekirdek serisinden itibaren Linux, NTFS’yi güvenilir bir şekilde okuyabilir ve mevcut dosyaların üzerine yazabilir, ancak Linux çekirdeği yeni dosyaları bir NTFS bölümüne yazamaz. NTFS-3G isimli yeni adaptör ile oldukça verimli okuma yazma yapabilirsiniz, fakat production bir ortam için sizlere NTFS kullanmanızı tavsiye etmem.

HFS ve HFS+ Apple, MacOS ile Hiyerarşik Dosya Sistemini (HFS) uzun süredir kullanmaktadır ve Linux HFS+ üzerine okuma/yazma desteği yoktur. Bu nedenle Mac kullanıcılarıyla dosya alışverişi yaparken exFAT kullanmak daha mantıklıdır. Apple, HFS+ (Genişletilmiş HFS) ile büyük sabit diskleri ve birçok Unix benzeri özelliği daha iyi desteklemek için HFS’yi genişletmiştir.

ISO-9660 CD-ROM’lar için standart dosya sistemi uzun süredir ISO-9660’tır. Bu dosya sistemi çeşitli düzeylerde gelir. Seviye 1, yalnızca 8.3 dosya adını desteklemesi açısından orijinal FAT’a benzer. Benzer şekilde Joliet, Windows için uygulandığı şekliyle uzun dosya adları için destek sağlar. Bir disk Rock Ridge veya Joliet uzantıları içeriyorsa, Linux bunları otomatik olarak algılar.


Bir Dosya Sistemi Oluşturmak

Linux içersinde oluşturmak istediğiniz Linux yerel dosya sistemleri dahil birçok farklı dosya sistemi araçlar(programlar) vardır. Tipik olarak, bu araçların mkfs.[dosyasistemi-kısa-adı] biçiminde program adları vardır, burada dosya-sistemi-adı ext4,ext3,xfs olabilir.

Bu araçlar, mkfs adı verilen bir komut ile de kullanılabilir, dosya sistemi türü kodunu mkfs’ye ‘-t’ seçeneğini vererek iletirsiniz, örn:

mkfs.ext4 veya mkfs -t ext4 /dev/vdc1
mkfs.xfs veya mkfs -t xfs /dev/vdc1
mkfs.btrfs veya mkfs -t btrfs /dev/vdc1

Bu komut /dev/vdc1 üzerinde bir ext3 dosya sistemi yaratır. Dosya sistemine, diskin hızına ve bölümün boyutuna bağlı olarak, bu işlem bir saniyeden birkaç saniyeye kadar sürebilir. Çoğu dosya sistemi oluşturma aracı, bazıları bir dosya sistemi oluşturmak için gereken süreyi büyük ölçüde artırabilen ek seçenekleri destekler. Her bir blok kontrol edilerek atılan fisk formatı en uzun sürenidir, -c seçeneği birkaç dosya sistemi tarafından desteklenir. Bu seçeneği kullanırken dikkat etmeniz gerekir. blok kontrolü - bölümdeki her sektör, verileri güvenilir bir şekilde tutabileceğinden emin olmak için kontrol edilir. Eğer bir diskinizde kötü bloklar var ise lütfen o diskten biran önce kurtulun. Unutmayın kullanılmış diskler hassas veri içerebilir o yüzden kullanılmış disklerinizi çöpe kesinlikle atmayın. Ben eski disklerinizi silmenizi ve parçalamanızı tavsiye ederim.

Aynı örnekten devam edecek olursak /dev/vdc1 isminde bir partition yaratmıştık, şimdi yeni diskimize ext4 format atalım.

root@ops.nucleuss ~ # fdisk -l /dev/vdc
Disk /dev/vdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xffc8c0e5

Device     Boot Start      End  Sectors Size Id Type
/dev/vdc1        2048 41943039 41940992  20G 83 Linux
root@ops.nucleuss ~ # mkfs.ext4 /dev/vdc1
mke2fs 1.45.4 (23-Sep-2019)
Discarding device blocks: done
Creating filesystem with 5242624 4k blocks and 1310720 inodes
Filesystem UUID: 57d86323-1840-444f-9de8-1a0d901727e1
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

root@ops.nucleuss ~ # mkdir /srv/data02
root@ops.nucleuss ~ # mount /dev/vdc1 /srv/data02
root@ops.nucleuss ~ # mount
......
/dev/vdc1 on /srv/data02 type ext4 (rw,relatime)

/dev/vdc1 isimli diskinizin /srv/data02 altında ext4 dosya sistemi ile bağlantığını görebilirsiniz.

Gelin bu işlemi laboratuvar altında tekrar edelim. 10 MB bir disk oluşturalım ve linux altında önce bir bölüm yaratalım, sonra dosya sistemi ve en sonunda mount edip üzerine veri yazalım.

bu işlem için bir program bilmemiz gerekiyor dd


dd Programı

Bazen bir dosya sistemini çok düşük seviyede arşivlemek istersiniz. Örneğin, sabit diskinizde saklayabileceğiniz veya Linux’un anlayamayacağı bir dosya sistemini yedeklemek istersiniz. Veya yukarıdaki örnekte olduğu gibi boş bir dosya yaratmak ve bunun içerine bir dosya sistemi oluşturmak istersiniz. Bunu yapmak için dd programını kullanabilirsiniz. Bu program, düşük seviyeli bir kopyalama programıdır ve ona girdi if için aygıt dosyasını verdiğinizde, o bölümün içeriğini belirttiğiniz çıktı dosyasına/aygıtına kopyalar. Bu çıktı dosyası, bir disk bağlantısı(/dev/vdc1) tanımlayıcı, bir teyp aygıtı veya normal bir dosya olabilir. Girdi ve çıktı dosyaları if=dosya ve of=dosya seçenekleriyle belirtilir:

Backup için teyp ünitesine çıktı alırken

dd if=/dev/vdc1/ of=/dev/st5

Burada /dev/vdc1 disk bölümünü /dev/st0 ‘a (bir SCSI teyp sürücüsü) yedeklenir. Sonuçta yapılan yedekleme, if= ve of= seçeneklerinin yer değitirmesi ile geri yüklenebilir.

dd if=/dev/st5/ of=/dev/vdc1

Dd yardımcı programı, tüm bölümlerin tam yedeklerini oluşturmak için iyi bir yol olabilir, ancak genel yedekleme aracı olarak kullanmanızı tavsiye etmem.

Bir dosya yaratmak için ise girdi kısmına /dev/zero vermemiz çıktı olarak ise bir dosya adı vermemiz gerekir, ayrıca her bir blok büyüklüğünü tanımlamamız gerekir.

dd if=/dev/zero of=/tmp/dosyasistemi.img bs=1024 count=10240

burada bs parametresi yani her seferine kaç byte yazacağı bilgisi , count ise kaç tane bu blok veriden kopyalanacağı bilgisini verir. 1024 byte x 10 daha tanımladığımızda 10 MB’lık bir dosya oluşur.

bundan sonraki süreçte /tmp/dosyasistemi.img dosyası oluşturalım ve üzerine bir dosya sistemi kurarak sunucumuza bağlayalım.

bir klasöre ihtiyaç duyacağız /srv/disk1 , dosyasistemi.img isimli dosyayı oluşturup, ext4 dosya sistemi ile formatlayacağız ve /srv/disk1 klasörüne bağlayacağız.

mkdir -p /srv/disk1
dd if=/dev/zero of=/tmp/dosyasistemi.img bs=1024 count=10240
mkfs.ext4 /tmp/dosyasistemi.img
mount /tmp/dosyasistemi.img /srv/disk1

Yekiler yüzünden, Size verdiğimiz platform üzerinde yukarıdaki testi yapamazssınız!!

şuanda yeni bir dosya sistemi ile birlikte bir disk yarattık. bu disk içersine girip dosyalar yaratabilirsiniz, bu klasörü şifreler ve istediğiniz yere taşıyabilirsiniz.

Bu yöntem genellikle takas alanı (SWAP) kapasitesini arttırmak için kullanılan bir yöntemdir. Fakat çok farklı kullanımlarını da gördüm. Cluster sistemleri için yaratılmış dosyalardan, sanallaştırma için yaratılan imajlara kadar bir çok kullanım alanı vardır.


Takas Alanı(SWAP) Oluşturma

Bazı bölümler dosya barındırmaz. Linux, işletim sisteminin bellek uzantısı olarak değerlendirdiği bir bölüm olan bir takas bölümü kullanabilir. Windows üzerinde aynı şekilde PAGEFILE mevcuttur. Linux, takas alanını tanımlamak için 0x82 MBR bölüm türü kodunu kullanır, ancak diğer bölümlerde olduğu gibi, bu kod çoğunlukla diğer işletim sistemlerinin Linux takas bölümlerine erişmeye çalışmasını engellemek için belirlenmiştir.

Linux üzerinde takas alanı olarak hangi bölümlerin kullanılacağını tanımlamak için /etc/fstab kullanır. işletim sisteminde free -m komutu ile MB birimiyle bağlanmış bulunan takas bilgisi size gelir, aşağıda 4GB takas alanı olan bir sunucu görüyorsunuz.

~$ free -m
              total        used        free      shared  buff/cache   available
Mem:         257840      138794       39478          67       79567      116744
Swap:          4095           7        4088

Takas alanı kendi başına bir dosya sistemini barındırmasa ve bu şekilde monte edilmemiştir. Takas alanı aşağıdakine benzer bir hazırlık gerektirir. Öncelikle mkswap ile bir dosya sisteminin oluşturulması, sonrasında swapon komutu ile bu bu alanın aktive edilmesi gerekir.

mkswap /dev/vdd
swapon /dev/vdd


Blümler ile ilgili farklı format seçenekleri

Bölüm Biçim türü Örnek Komut Notlar
/dev/sda6 ext4 mkfs -t ext4 -L veriler/dev/sda6 İsmini veriler. Veya mkfs.ext4 komutu ile tanımlayın
/dev/sdb5 xfs mkfs -t xfs -i size=4096 /dev/sdb5 daha büyük inode’lara sahip olmasını söyleyen (normal 256’dır)
/dev/sda8 ReiserFS mkfs -t reiserfs /dev/sda8 Veya mkreiserfs komutunu kullanabilirsiniz
/dev/sdc FAT32 mkfs -t vfat /dev/sdc Veya mkfs.vfat komutunu kullanabilirsiniz
/dev/sda6 swap mkswap /dev/sda6 takas alanı olarak kullanılacak

Dosya Sisteminin Sağlığını Koruma

Dosya sistemleri çeşitli şekillerde “hasta” olabilir. Çok fazla veriyle aşırı yüklenebilirler, sisteminize uygun olmayan şekilde ayarlanabilirler veya buggy sürücüler, buggy yardımcı programlar veya donanım hataları nedeniyle bozulabilirler. Neyse ki Linux, dosya sistemlerinizin durumunu takip etmenize, performanslarını ayarlamanıza ve düzeltmenize yardımcı olabilecek çeşitli yardımcı programlar sağlar.

ext2/ext3/ext4 dosya sistemleri için
dumpe2fs

Xfs dosya sistemi için
xfs_info


Dosya Sistemlerini Kontrol Etme

Bir dosya sistemini ayarlamak, büyük olasılıkla arada bir gerçekleştireceğiniz bir görevdir -

örneğin, bir kurulumda büyük değişiklikler yaparken. Başka bir görev çok daha yaygındır: bir dosya sistemini hatalar için kontrol etmek. Hatalar, elektrik kesintileri ve mekanik sorunların tümü, bir dosya sistemindeki veri yapılarının bozulmasına neden olabilir.

Sonuçlar bazen belirsizdir, ancak işaretlenmezlerse ciddi veri kaybına neden olabilirler. Bu nedenle Linux, bir dosya sisteminin bütünlüğünü doğrulamak ve mevcut olabilecek sorunları düzeltmek için araçlar içerir.

Bu amaçla kullanacağınız ana araca fsck denir. Bu program aslında e2fsck (fsck.ext2, fsck.ext3 ve fsck.ext4 olarak da bilinir) veya XFS’nin xfs_check ve xfs_repair gibi diğer araçların ön uçudur. Fsck için sözdizimi aşağıdaki gibidir:

fsck [-sACVRTNP] [-t fstype] [-] [fsck-seçenekleri] dosya sistemleri

Tüm Dosyaları Kontrol Et -A seçeneği, fsck’nin / etc / fstab içinde işaretlenmek üzere işaretlenmiş tüm dosya sistemlerini kontrol etmesine neden olur. Bu seçenek normalde sistem başlatma komut dosyalarında kullanılır. İlerlemeyi Göster -C seçeneği, kontrol işleminin bir metin modu ilerleme göstergesini görüntüler.

Çoğu dosya sistemi denetim programı bu özelliği desteklemez, ancak e2fsck destekler. Ayrıntılı Çıktı Göster -V seçeneği, kontrol sürecinin ayrıntılı çıktısını üretir. Eylem Yok -N seçeneği fsck’ye normalde ne yapacağını gerçekten yapmadan göstermesini söyler. Dosya Sistemi Türünü Ayarlayın Normalde, fsck dosya sistemi türünü otomatik olarak belirler.

Yazıyı -t fstype fl ag ile zorlayabilirsiniz. -A ile birlikte kullanıldığında, bu, programın, diğerleri kontrol edilmek üzere işaretlenmiş olsa bile, yalnızca belirtilen dosya sistemi türlerini kontrol etmesine neden olur. Fstype’ın önüne hayır koyulursa, belirtilen tür dışındaki tüm dosya sistemleri kontrol edilir.


Disk Kullanımının İzlenmesi

Disklerle ilgili yaygın bir sorun, doldurabilmeleridir. Bu sorunu önlemek için, dosyalarınızın ne kadar alan kapladığını size söyleyecek araçlara ihtiyacınız var. Bu, disk kullanımını sırasıyla bölümlere ve dizine göre özetleyen df ve du programlarının görevidir.


Dosya sistemi kontrol ve yapılandırma komutları

df, du, mount, umount, free, /etc/fstab


du Disk Usage - disk kullanımı

du dizinlerin ve dosyaların kullanılan alanı hakkında bilgi verir. Ortak anahtarlar şunlardır:

parametre açıklaması
-h baskı boyutları 1024’ün katları (ör. 100M)
-c genel toplamı gösterir
–max-deep 2 sadece 2 dizini gösterir
-s Yalnızca özeti gösterir, tüm dizinleri tek tek göstermez
du /usr/ -s -h

Çıktı size /usr dizini altındaki toplam boyutu gösterir. Ben çoğunlukla * ile kullanırım, aşağıdaki gibi.

du -hs /usr/*

gördüğünüz gibi parametreleri birlikte de verebilirsiniz.


df Disk Free - Disk Boşluğu ne kadar?

df Disk Free komutu, dosya sistemlerinin boş ve kullanılan alanını bulmak için kullanılır.

inode dosyalar hakkındaki bilgileri içerir. Sahibi kimdir, en son ne zaman kullanıldığı veya düzenlendiğini, boyutu, bir dizin olup olmadığı ve eğer varsa erişim hakları gibi bilgiler. Inode numarası belirli bir dosya sistemi içinde benzersizdir ve ayrıca dosya seri numarası olarak da bilinir.

df kullanımı oldukça kolaydır, aşağıda kullanımını görebilirsiniz.

df -Th

buradaki komut -i parametresi size boş olan inode sayısını verir.

df -i

Yukarıda -T anahtarı df’yi dosya sistemi türlerini gösterecek hale ve -h sayıları insan tarafından okunabilir hale getirir (1000’in katlarında).

Inode çıktısı size boş ve kullanımda olan Inode sayılarını verir, yeni bir dosya oluşturmak için bir Inode ihtiyacınız olur. Yeni bir bölüm yarattığınızda size tam bir alan verir yani 1TB gibi bir alan, sonrasında bölüme format attığınızda size kullanılabilir alan olarak 980GB verir. Burada yok olan miktar disk üzerindeki dosya sistemi için kullanılacak inode'lar için ayrılmıştır.

Dosya sistemi için Diğer araçlar

dosya sistemi komut kullanım
ext tune2fs Ext2 ve ext3 parametrelerini gösterin veya ayarlayın ya da günlük kaydı seçeneklerini ayarlayın
ext dumpe2fs Bir ext2 veya ext3 dosya sistemi için süper blok ve blok grubu tanımlayıcı bilgilerini yazdırır.
ext debugfs Etkileşimli bir dosya sistemi hata ayıklayıcısıdır. Bir ext2 veya ext3file sisteminin durumunu incelemek veya değiştirmek için kullanın.
reiserfs reiserfstune parametreleri gösterme ve ayarlama
reiserfs hata ayıklayıcılar Bir ext2 veya ext3 dosya sistemi için süper blok ve blok grubu tanımlayıcı bilgilerini yazdırır.
XFS xfs_info bilgi görüntüleme
XFS xfs_growfs dosya sistemini genişlet
XFS xfs_admin XFS dosya sistemlerindeki parametreleri değiştirme
XFS xfs_repair sorunları onarmak
XFS xfs_db dosya sistemini denetler ve hatalarını ayıklar

Dosya sistemi bağlama ve disk yapılandırma tablosu


Dosya sistemi bağlama/ayırma (mount/umount)

Linux’ta disk takma, aslında sistemdeki bölümlenmiş ve biçimlendirilmiş bir sabit diske erişme işlemidir. Bir sabit diskte depolanan veriler ne olursa olsun, yalnızca o sabit diski Linux İşletim Sistemine taktıktan sonra erişilebilir veya kullanılabilir.

Windows sisteminin USB yuvasına bir harici disk takıldığında bildiğimiz gibi, harici disk otomatik olarak Windows ana klasörüne erişime açık olacaktır. Bunun nedeni Windows işletim sisteminde has PnP seçenekleridir.

Ancak Linux’ta sisteme bir sabit disk yerleştirmek veya bağlamak bu diske erişmek için yeterli değildir. Erişmeden önce, sabit diskin bölümlere ayrılması, biçimlendirilmesi ve ardından sisteme takılması gerekir. Ancak sabit disk, Linux sisteminin tekli veya çoklu klasörlerinden herhangi birine bağlanabilir.

Harici bir diskiniz olsun ve linux sunucunuz üzerine bağlamanız gereksin, sabit diskin montaj konumu konusunda herhangi bir kısıtlamanız yoktur. Yani kendi oluşturduğunuz /srv/mountme ismindeki dizine de bağlayabilirsiniz /home/senol/disklerim altına da.

Bir Linux dosya sistemindeki tüm dosyalar ‘/’ köklü büyük bir ağaç şeklinde düzenlenmiştir. Bu dosyalar, bölüm tablonuza göre çeşitli cihazlara yayılabilir, başlangıçta ana dizininiz bu ağaca bağlanır (yani eklenir) ‘ / ‘, diğerleri GUI arayüzü (varsa) veya mount komutu kullanılarak manuel olarak monte edilebilir.

mount komutu, bir aygıtta bulunan dosya sistemini ‘/‘ köklü büyük ağaç yapısına (Linux dosya sistemi) bağlamak için kullanılır. Tersine, bu cihazları Ağaçtan ayırmak için başka bir umount komutu kullanılabilir.

örnek kullanım:

$ mount -t dosya_sistemi Donanım BağlanılacakKlasör

Linux üzerinde CD-Rom bağlamak,

$ mount /dev/cdrom /mnt

/mnt klasörü temporary(geçici) mount işlemleri için kullanılabilir

yukarıdaki komut ile cdrom donanımınızı /mnt klasörü altına bağlarsınız, ben yıllar içersinde /srv dizini altında klasör yaratmayı ve mount ettiğim harici donanımları ve operasyonel donanımları buraya bağlamayı tercih ediyorum. Operasyonel ve kullanım açısından bu tip bir standartlaşma size çok faydalı olacaktır.

iso dosyasını yerel bir klasöre bağlamak

$ mount -o loop ubuntu20-10.iso /srv/cdrom/ubuntu

Bağlı bir diskin bağlantısını sonlandırmak

$ umount /srv/cdrom/ubuntu


/etc/fstab Filesystem table Dosya sistemleri tablosu

/etc/fstab içinde bulunan fstab dosyası, dosya sistemleri ve genellikle önyükleme sırasında kullanılan (ancak bunlarla sınırlı olmayan) bağlama noktaları arasındaki ilişkiyi içeren dosyadır. Şimdi bir örneğe bakalım:

#<DeviceName> <mountPoint>   <type>  <options>       <dump>  <pass>
UUID=f95103a7-93ac-47b1-bda0-feef8030c157       /                       xfs     defaults        0 0
UUID=2207935a-e1aa-48a1-961c-ec931f97be12       /srv/data01     xfs     defaults 0 0
cat /etc/fstab

blkid lsblk Benzersiz Blok isimleri, Device yerine

Universally unique identifier veya UUID çok kullanışlı bir donanım mahlası sağlar. Bu mahlas, bölümü tanımlamak için birkaç farklı yerde kullanılır. En yaygın kullanımı /etc/fstab üzerindedir.

Dosya Sistemlerinizin UUID’sini Nasıl Bulunur?
Bölümlerinizin UUID’sini bulmak için blkid komutunu gösterildiği gibi kullanabilirsiniz.

Önce sunucumuz üzerindeki diskleri listelememiz gerekiyor. lsblk ile bağlı bulunan diskleri ve disk formatlarını listeliyoruz.

lsblk

Şimdi ise istediğimiz disk için UUID nedir, onu öğreniyoruz.

blkid | grep sda1

UUID değiştirme
tune2fs ile -U random parametresiyle /dev/sda3 diski üzerine yeni bir UUID generate edip, çıktıyı /dev/sda3 yazıyoruz.

umount /dev/sda3
tune2fs /dev/sda3 -U random /dev/sda3 
blkid | grep sda3

Yetkiler yüzünden, Size verdiğimiz platform üzerinde yukarıdaki test gibi testler çalışmayacaktır!!

DeviceName-Blok cihazı
(veya UUID) ilk alanda belirtilir. Bir blok aygıt (/dev/sdXX), Evrensel Benzersiz Kimlik (bu durumda olduğu gibi), bir Etiket (önek: LABEL =) veya hatta remote: / shared gibi bir ağ yolu olabilir.
mountPoint-Bağlama noktası
aygıtın bağlanacağı yoldur(/mnt gibi). Bir aygıtın dizin içeriğini başka bir dizine eklemek gibi düşünün. Bu örnekte yol /home, ikinci önemli satırdan önce boştur, ancak ondan sonra doldurulur.
type-Dosya sistemi türü
üçüncü alanlardır ve birinci alanda belirtilen aygıt / yolda bulunan dosya sistemine bağlı olarak uyarlanması gerekir.
options-Seçenekler
mount komutuna geçirilen dördüncü alanda belirtilir. her bir dosya sistemi için farklı parametreler vardır.
dump-Dök
beşinci alandır. Dump, dosya sistemlerini yedeklemek için kullanılan eski bir programdır, günümüzde çoğu dağıtımda varsayılan olarak yüklenmemektedir. Bu alan 0 (döküm yapmayın) veya 1 (döküm çalıştırma) olabilir.
pass-gecis
altıncı alandır. Bu alan, önyükleme sırasında dosya sisteminin (mümkünse) kontrol edilip edilmeyeceğini belirtir. İzin verilen değerler 0, 1, 2’dir. 0, önyükleme sırasında fsck çalıştırılmayacağı, 1 ve 2’nin fsck gerçekleştireceği anlamına gelir. Değer 1, yalnızca kök dizine ayrılmalıdır.

Örnek parametre kullanımı,
Mount edilebilecek bir disk ortamınız var ise aşağıdaki gibi dosya sistemi -t ext4 tanımlayarak bağlayabilirsiniz.

mount -t ext4 /dev/sda2 /srv/data01

Parametre vererek bağlı bulunan bir bölümü tekrar farklı parametreler ile bağlayabilirsiniz.

mount -o remount,ro /dev/sda2

Yekiler yüzünden, Size verdiğimiz platform üzerinde yukarıdaki testi yapamazssınız!!


5. Paket Yönetim Sistemleri (RPM ve deb)

Paket yöneticisi veya paket yönetim sistemi, bir bilgisayarın işletim sistemi için bilgisayar programlarını tutarlı bir şekilde yükleme, yükseltme, yapılandırma ve kaldırma sürecini otomatikleştiren bir yazılım araçları koleksiyonudur. Windows üzerindeki Program Ekle kaldır ve AppStore’lar bunların bilindik popüler örnekleridir.

Bir paket yöneticisi, arşiv dosyalarındaki paketler, yazılım dağıtımları ve verilerle ilgilenir. Paketler, yazılımın adı, amacının açıklaması, sürüm numarası, satıcı, sağlama toplamı (tercihen bir kriptografik paketleme işlevi) ve yazılımın düzgün çalışması için gerekli olan bağımlılıkların listesi gibi meta verileri içerir.

Kurulumun ardından, meta veriler yerel bir paket veritabanında saklanır. Paket yöneticileri, yazılım uyumsuzluklarını ve eksik önkoşulları önlemek için genellikle bir yazılım bağımlılıkları ve sürüm bilgileri veritabanı tutarlar. Yazılım havuzları, ikili depo yöneticileri ve uygulama depoları ile yakın çalışırlar.

Paket yöneticileri, manuel yükleme ve güncelleme ihtiyacını ortadan kaldırmak için tasarlanmıştır. Bu, işletim sistemleri tipik olarak yüzlerce hatta onbinlerce farklı yazılım paketinden oluşan büyük kuruluşlar için çok yararlıdır.

20-25 Sene öncesinde çok temel paketler dışında Dağıtımlar içersinde oldukça az yazılım paketi hazır gelirdi, bunları sizin derleyip(compile) kullanmanız gerekirdi.

Bu yüzden eskiden make, gcc ve install gibi komutlar çok sıklıkla sizin bağımlılık sorunlarıyla karşılaşmanıza sebep olurdu. Son yıllarda neredeyse tüm açık kaynak kod yazılımlar mutlaka bir dağıtım tarafından sağlanıyor.

Aşağıda şuanki tüm linux paket yöneticileri ve karşılaştırmalı şekilde aynı komutları görebilirsiniz.

işletim sistemi paket formatı paketleme programı paket yöneticisi(ileri seviye)
Suse/opensuse .rpm rpm zypper
Centos/Redhat/Fedora .rpm rpm yum/dnf
Debian Türevleri .deb dpkg apt-get/aptitude/apt

Komutlar her bir paket yöneticisi için özel olsa da, çoğu paket yöneticisi benzer işlevler sunduğundan büyük ölçüde birbirine çevrilebilir.

İşlem zypper apt dnf(yum)
Paket kur zypper in Paket apt install Paket yum install Paket
Paket sil zypper rm -RU Paket apt remove Paket dnf remove --nodeps Paket
Paket sil(alt paketlerle) zypper rm -u --force-resolution Paket apt autoremove Paket dnf remove Paket
Yazılım kütüğünü güncelle zypper ref apt update yum check-update
Güncell. Paket. listele zypper lu apt list --upgradable yum check-update
Sil(bağlı paketler ve konfigler) zypper rm -u apt autoremove dnf erase Paket
Bağıl paketi olmayanları listele (orphan) zypper pa --orphaned --unneeded   package-cleanup --quiet --leaves --exclude-bin
herşeyi güncelle zypper up apt upgrade yum update

Paket yönetim sistemleri nasıl çalışır?

Belirli bir paket, paylaşılan bir kitaplık veya başka bir paket gibi belirli bir kaynak gerektiriyorsa, bir bağımlılığı olduğunu düşünebilirsiniz. Tüm modern paket yönetim sistemleri, bir paket kurulduğunda tüm bağımlılıklarının da kurulmasını sağlamak için bazı bağımlılık çözümleme yöntemleri ve veritabanları kullanır.


Paketleme Sistemleri**

Modern bir Linux sistemine kurulan yazılımların neredeyse tamamı İnternette bulunacaktır. Dağıtım satıcısı tarafından merkezi depolar aracılığıyla sağlanabilir (her biri dağıtım için özel olarak oluşturulmuş, test edilmiş ve bakımı yapılmış binlerce paket içerebilir) veya manuel olarak indirilip kurulabilen kaynak kodunda mevcut olabilir.

Farklı dağıtım aileleri farklı paketleme sistemleri kullandığından (Debian: *.deb / CentOS: *.rpm / openSUSE: *.rpm), bir dağıtım için çalışan bir paket başka bir dağıtımla uyumlu olmayacaktır.

Kurduğunuz Linux işletim sistemi üzerine bir programı 3 şekilde kurabilirsiniz,

  1. Compile ederek, kaynak koda, derleyiciye ve kütüphanelere ihtiyacınız vardır(maceralı bir yol)
  2. Paket programı (dpkg veya rpm), Debian kullanıyorsunuz ve bağımlılığı olmayan bir abc.deb dosyasını kurmak istiyorsunuz, neden olmasın
  3. zypper/apt/yum ile paketin bir repository üzerinden yüklenmesi apache, mysql, php kuracaksınız, repo üzerinden örn. apt search mysql ile arayıp bulun ve kurun programınızı, en temiz kurulum şeklidir.

Paketleme programı örnekleri (rpm/dpkg)

dpkg ve rpm için en çok kullanılan komut satırı kombinasyonları.

yeni bir paket kurmak
$ dpkg -i paketadi.deb
$ rpm -i paketadi.rpm

Kurulu bir paketi güncellemek
$ dpkg -i paketadi.deb
$ rpm -U paketadi.rpm

Kurulu tüm paketleri listelemeen sık kullanacağınız komut!

dpkg -l

$ rpm -qa

Mesela sunucunuz üzerinde mysql programı çalışıyor fakat nasıl kurulduğunu bilmiyorsunuz,

$ dpkg -l | grep mysql
$ rpm -qa | grep mysql

size kurulu paketin nereden geldiğini söyleyecektir.

ben size üstteki grep’li kullanımı tavsiye ederim fakat paketleme programı da size program adını biliyorsanız aynı sonucu getirir.
mysql isimli programı aramak için aşağıdaki şekilde arama yapabilirsiniz.

$ dpkg –status mysql
$ rpm -q mysql

Dosya ile hangi paketin kurulduğu bilgisi
$ dpkg –search program_dosyası_adi
$ rpm -qf program_dosyasi_adi

örn.
$ rpm -qf /usr/share/vim/menu.vim
vim-….


Paket Yöneticileri Kullanım örnekleri(apt/yum)

Paket aramak
Önce aptitude/apt paketini kuruyoruz, bu paket yeni ubuntu/debian sürümlerinde varsayılan olarak kurulmaktadır

apt-get update&&apt-get install -y aptitude

$ aptitude update
$ aptitude search Paketadı

(paket isimlerinde arama yapmak için)
$ yum search Paketadı

(açıklamalar içinde arama yapmak için)
$ yum search all Paketadı

Örnek olarak sadece programın uzun adının bir kısmını bilelim “Midnight Commander”, burada “Midnight” ile bir arama yaparsak programı bulabiliriz.

yum search all xxx yaptığınızda tüm açıklamalarda arama yaptığınız için kolaylıkla aradığımız yazılımı bulabildik.

apt üzerinde local search yapmak için aşağıdaki komut yazılmalıdır.

apt search ^mc$

apt regular expression destekler, yani burada ^ karakteri bağlangıç için ilk harfin m olması gerektiğini ve $ ile biten son harfin c olması gerektiğini söylüyor. aynı şekilde mysql-server paketini aramak isterseniz apt search ^mysql-server$ yazmanız gerekir.

veya grep kullanarak aramanızı daraltmanız mümkündür.

aptitude search mc|grep Midnight

Repository üzerinden paket yüklemek.

Bir paketi kurarken, paket yöneticisi tüm bağımlılıkları çözdükten sonra kurulumu onaylamanız istenebilir. Güncellemeyi(update) veya yenilemeyi çalıştırmanın (kullanılan paket yöneticisine göre) kesinlikle gerekli olmadığını, ancak kurulu paketleri güncel tutmanın güvenlik ve bağımlılık nedenleriyle iyi bir sistem yöneticisi uygulaması olduğunu unutmayın.

Öncelikler aptitude yazılımını kuralım, yeni ubuntu sürümlerinde varsayılan paket yöneticisi olarak apt/aptitude gelmektedir.

apt-get update && apt-get install aptitude -y

$ aptitude update && aptitude install Paket_Adı
$ yum update && yum install Paket_Adı
$ zypper refresh && zypper install Paket_Adı

Yukarıda verdiğimiz örnekten hareketle mc “Midnight Commander” paketini kuralım. Burada kullandığımız -y parametresi bize onaylatmasına gerek kalmadan kurması içindir.

apt install mc -y
mc

exit yazarak entera basarsanız MC arayüzünden çıkabilirsiniz. Midnight Commander özellikle efsanevi Norton Commander programını kullanmış olan kişiler için vazgeçilmezdir. Norton Commander anısına yazılmıştır, arayüz üzerinden onlarca işlemi kolaylıkla yapabilirsiniz.


Repository üzerinden paket silmek

remove seçeneği paketi kaldırır, ancak yapılandırma dosyalarını olduğu gibi bırakır, oysa temizleme purge, programın tüm izlerini sisteminizden siler.

$ aptitude remove Paket_Adı
$ aptitude purge Paket_Adı

$ yum erase Paket_Adı

Paket yönetim yazılımları mutlaka sizin onayınızı isteyeceklerdir. -y veya -a gibi onay parametreleri verebilirsiniz, silme işlemleri için otomatik parametre vermemenizi tavsiye etmem.

Burada henüz yeni kurmuş olduğumuz mc “Midnight Commander” yazılımını nasıl sileceğimizi gösteriyoruz.

apt purge mc

onaylamanızı isteyecektir, sonrasında bağlı bulunan bazı paketleri silmediği bilgisini verir ve isterseniz apt autoremove ile kurulmuş fakat fonksiyonel olmayan paketleri silebileceğiniz bilgisi verilir.

apt autoremove -y

Paket Hakkında bilgi verme

mc isimli program “Midnight Commander”, hakkında bilgi edinmek için aşağıdaki şeklide show ve info parametreleri kullanılır.

apt show mc

Centos üzerinde aynı sonucu aşağıdaki komut kullanımı ile alabilirsiniz.

$ yum info mc


Paket yöneticisi dosyaları

Debian türevi işletim sistemleri için /etc/apt/sources.list dosyası paketlerin güncelleneceği repository bilgisini içerir. Ayrıca kaynakların listesini /etc/apt/sources.list.d/ klasörü altındaki dosylarda tutar.

Centos için /etc/yum.repos.d/ dizini altında bulunan .repo dosyları mevcuttur ve bu dosyalar üzerinden reposity tanımları yapılır.

Yeni kurulmuş bir sistemde Paket yönetimi configurasyonu, kurulum sırasında sorulan sorulara göre yapılandırılır. Yani Almanya veya Türkiye de olmanıza göre size bir repository tanımlanır vs.

Paket yöneticisi ile sistemi güncellemek

Paket yöneticileri aynı zamanda kurulu bulunan tüm paketleri güncelleyebilirler, hatta işletim sistemi bir üst sürüme taşıyabilirler(debian tabanlı makinelerde).

Centos için:
$ yum update -y

Debian tabanlı işletim sistemleri için:

apt-get update&&apt-get upgrade -y

veya

apt-get update && apt-get install aptitude -y && aptitude upgrade -y

Sunucularınızda güvenlik güncelleştirmelerini otomatik yükleyecek ayarları yapmanızı herzaman tavsiye ederim. Güvenlik güncelleştirmeleri genellikle oldukça küçük paketler ile yapılır fakat etkileri çok büyük olabilir.
Debian türevi işletim sistemleri için otomatik güvenlik güncelleştirmesi ayarları.
Centos /Rhel için
Debian /Ubuntu için


Sonraki bölüm - Kütüphaneler

Linux101 - Başlangıç