Linux’ta Disk Bölümleme – Partitioning/Swap Rehberi
PARTİTİONİNG
Bir diske bir ubuntu ve bir windows barındırmasını sağlamayı düşünelim.
Windows filesystem olarak ntfs kullanıyor fakat ubuntu ‘filesystem’ olarak ext4 kullanıyor
Hem windows hem ubuntu aynı anda kullanıma açamayız çünkü dosya sistemleri farklılık gösterdiği için tek bir disk üzerinde 2 farklı işletim sistemine sahip olamayız.
Ancak bu soruna bir çözüm üretilebilir. Basitçe bu diski ikiye bölüp ssd diskini 1tb-1tb ayırıp ayrı ayrı kurabiliriz.
Diski ayırıp farklı işletim sistemlerinin barınmasına olanak sağlayan ve ingilizcede ‘partitioning’ olarak bilinen bu yöntemi, farklı dosya sistemlerine sahip verileri disk üzerinde sağlıklı şekilde erişilmesine yardımcı olur.
Bir Linux sunucusunda partition’ları görebilmemiz için hangi komutu kullanırız?
Burada görülen sda 1-2-3 bloklarına “block devices” ismini veriyoruz.
Bu yapıda, partition işlemi ile sanal üç adet block storage oluşturulmuş. sda burada diski, sda1, sda2 ve sda3 ise “part” olarak isimlendirilen bölümleri temsil eder.
Bu durumda sda, bir virtual (sanal) disk ve üç adet partition barındırır.
Burada s harfi “serial” kelimesinden gelir. Eğer SSD bir SATA portuna bağlıysa — buna “Serial ATA” denir — anakart üzerinde böyle bağlı olan cihazlar s ile başlar.
Eğer NVMe storage devices olsaydı, burada partition kısımlarında NVMe isimlerini görürdük.
Linux’ta her şeyin bir dosyadan ibaret olduğunu duymuşsunuzdur.
Dolayısıyla yukarıda verilen partitionlar ve storage cihazlarımız da birer dosyadır.
Dosya sistemimizde lsblk
komutu ile listelediğimiz tüm storage ve partitionlara aşağıdaki dizine giderek ulaşabiliriz.
/dev dizini Linux üzerinde disk partition’ların barındığı dizindir.
Şimdi gelin sda yerine ikinci bir storage device oluşturalım ve ismine /dev/sdb yazalım.
Bu işlemi yapmamız için yardımcı komut olarak CFDİSK komutunu kullanacağız. Eski linux admin ‘fdisk’ komutunu daha çok kullanırdı fakat yılların verdiği yeniliklerle beraber disk partition’larını daha iyi yapılandıran cfdisk yardımcı komutu daha çok kullanılır hale geldi
sudo cfdisk /dev/sdb
Diskteki her bir veri, bir yığın 1 ve 0’lardan ibarettir. Bu nedenle işletim sisteminin bu partitionların nerede başladığını ve nerede bittiğini anlaması için onlara bir “label” (etiket) veriyoruz ve partition yaratırken bir label atıyoruz.
GPT partition table’ını seçiyoruz. Başka bir label olarak MBR (DOS) vardı; ancak bu, eski tip disklerde kullanılıyor. Son 10 yıldır GPT partition table güncel ve yeni olduğu için onunla devam ediyoruz.
“New” butonuna basarak devam ediyoruz.
Partition boyutunu 8 GB olarak seçebiliriz. Kalan 2 GB boş alan için yine aynı şekilde “New” butonuna basarak ikinci partitionumuzu oluşturabiliriz. Diğer 8 GB’ı 4-4 ayırıp bırakabiliriz.
Son hali şu şekilde olacaktır.
Yukarıdaki ekran görüntüsünde, aşağıda “Type” butonunu görüyor olacaksınız.
“Type” ile partition içindeki filesystem’in ne olduğunu seçebiliyoruz. Örneğin, 2 GB’lık sdb3’ü “swap” olarak seçebiliriz. Eğer boot partition olmasını istiyorsak, EFI seçmeliyiz.
son adım olarak her şeyin doğru olduğunu eminsek, write butonu ile devam edip sdb storage device’ında partitionlarımızı istediğimiz şekilde oluşturmayı tamamlayabiliriz.
SWAP NEDİR VE NEDEN SWAP MEMORY’E İHTİYAÇ DUYARIZ
Swap Linux işletim sistemlerinde fiziksel diski parçalara ayırıp partition haline getirirken boot ve işletim sistemi parçalarını ayırdıktan sonra 2-3 gb’lık bir parça olarakta eklenir.
Swap , bilgisayarın memory’si , yetersiz kaldığında , RAM üzerinde kaynak yiyen programın verisini kendisine aktararak , RAM üzerinde geçici bir boş alan yaratır.
Örneğin video editor programı çalışırken 2GB ram kaynağını tüketiyor ve 4 gb ram’i olan cihazınızın tüm alanını kapsıyor. Çünkü bir tarafta ses editörünüzde açık olduğu için. Bu durumda RAM tamamen dolu iken gidip tarayıcı üzerinde chrome’da gezinebiliyorsunuz. Bunun nedeni video editor programınızın tükettiği 2GB kullanım alanı geçici bir süreliğine swap’ tarafına aktarıldığı içindir.
Swap kullanımının sistemde olup olmadığını nasıl kontrol ederiz?
swapon —show
bir çıktı almıyorsanız swap area’nız yoktur…
Örneğin gelin beraber ubuntu üzerinde /dev/vda ve dev/vdb isimli depolama aygıtlarında ‘vdb3’ isimli partitionu için swap olarak ayırmayı deneyelim.
vdb3 partitionu swap olarak ayıralım çünkü zaten 2gb lık partition swap olarak ayarlanması için hazılamıştım ve bunu yukarı satırlarda bahsettiğim cfdisk yardımcı komutu kullanarak yapmıştım.
sudo mkswap /dev/vdb3
Setting up swapspace version 1, size = 2 GiB (2146410496 bytes)
no label, UUID=a39c80a1-a0c6-4ba2-a4a3-8a82058d8859
sudo swapon /dev/vdb3
swapon —show
Eğer swap olarak kullanmayı artık istemezsekte:
sudo swapoff /dev/vdb3 >> komutunu kullanabiliriz
Buraya kadar her şey normal. Swap olarak ayarladığımız vdb3 partition’u swap olarak görevine başladı. Ancak bir problem var: Bu ayar sadece sistem yeniden başlatılana kadar geçerli olacak. Reboot olduğunda tekrar eski haline dönüyor. Oluşturduğumuz swap memory birimini, sistem her reboot olduğunda kalıcı olması için işlem sağlayalım.
Swap Partition kalıcı hale getirmek
Her boot ettiğimizde filesystem’in kalıcı olarak erişilebilir olması için ilk önce mount etmeliyiz.
Mounting, basitçe filesystem’i uygun bir dizine bağlamaktır. Bağlanan partition, boot sırasında devreye girip yeniden başlatıldıktan sonra bile atanan görevi tanır.
sudo mount /dev/vdb3 /mnt/
Test etmek için aşağıdaki komut ile artik filesystem icerisinde dosya veya dizin olusturabiliyoruz.
sudo touch /mnt/testfile
Sistem yeniden başlatıldığında, hangi dosya sisteminin nereye mount olacağını otomatik olarak tarayan bir yapılandırma konfigürasyon dizin yolu vardır. Komut ile mount işlemini tek tek yapmadan, aşağıdaki dizine gidip bunları tanımlayabiliriz. Aslında en başta gerçek bir sistemde olması gereken işlemi şimdi yapacağız. Çünkü gerçek bir senaryoda mount komutu sadece test amaçlı yapılıyor herhangi bir kalıcığı olmadığı için.
Linux işletim sisteminin yeniden başlatıldığında hangi dosya sistemlerini otomatik olarak bağlaması gerektiğini söyleyen için dosya dizin yolu /etc/fstab .
/etc/fstab dosyası, Linux ve Unix tabanlı sistemlerde dosya sistemlerinin otomatik olarak nasıl bağlanacağını (mount etmesini) tanımlayan bir yapılandırma dosyasıdır. Bu dosyada her bir satır, bir dosya sisteminin nasıl bağlanacağını belirtir ve her satırda genellikle altı tane alan (field) vardır. Bu alanların son iki değeri (beşinci ve altıncı alan), sistemin bu dosya sistemini başlatma ve kontrol etme sırasını belirler. Şimdi bu dosyaya vim editörümüz ile erişelim. Aşağıdaki ekran görüntüsünde yazılan değerleri yazabiliriz.
sudo vim /etc/fstab
/dev/vdb3 none swap defaults 0 0
/dev/vdb3
: Bu, swap partition’ının bulunduğu cihazı belirtir. Burada, vdb3 adlı disk bölümüne işaret ediyor. Yani bu swap bölümü, vdb3 cihazında yer alıyor.
none
: Bu alan, dosya sisteminin bağlanacağı(mount edileceği) dizini belirtir. Swap partition’ları bir dosya sistemine sahip olmadığı için buraya “none” yazılır. Yani burada swap için herhangi bir dizin bağlantısı yok.
swap
: Bu, bölüme uygulanan dosya sistemini belirtir. Burada, bu bölümün bir swap bölümü olduğunu belirtir.
defaults
: Bu, swap partition’ının mount edilmesi için kullanılan varsayılan ayarları belirtir. Yani swap için standart mount seçenekleri kullanılır.
0
: Bu, bölümün fsck (file system check) sırasında kontrol edilip edilmeyeceğini belirler. 0
, bu bölümün kontrol edilmemesini belirtir.
0
: Bu, bölümün sıralama numarasını belirtir. 0
, bu bölümün boot sırasında sıralama önceliği olmadığını gösterir.
Başka bir örnek olması açısından bir de gelin ilk adımda lsblk komutu ile gördüğümüz 4GB vdb1 part’ını xfs dosya sistemi olarak tanıtıp /etc/fstab içerisinde backup olarak tanımlayalım.
Burada /dev/vdb1 partitionu kullanilarak /etc/fstab icerisinde /mybackups dizinine mount edip dosya sistemi tipini xfs seciyoruz. İkinci bir isletim sistemi oldugunu varsaydigimiz icin 0 2 kullaniyoruz. Aynı işlemi vdb2 içinde yapıyoruz ve ona dosya sistemi olarak ext4 değeri verelim. Editörden çıkıp aşağıdaki sistem reload komutunu verdikten sonra sistemi reboot ederek /etc/fstab dosyasında oluşturduğumuz partitionları tekrar lsblk komutu ile görebiliriz. Mount listesine erişmek için findmnt veya blkid komutu ile yardım alabiliriz.
sudo systemctl daemon-reload
reboot
lsblk -f
findmnt -t xfs,ext4
blkid
FİLESYSTEM OLUŞTURMAK
Daha önce bahsettiğimiz gibi, Diski bölümlere ayırıp partitionları oluşturduğumuzda, Partition üzerinde dosya ve klasörlerimizi depolamak icin, ilgili partition’a filesystem(dosya sistemi) oluşturmak gerekir.
Örneğin, her kullandığınız bir işletim sisteminin ve linux dağıtımlarının bir dosya sistemi var. Ubuntu ext4 kullanirken , red hat xfs filesystem tipini kullanir ve gelecek zamanda gelen güncelleştirmelere göre bu değişkenlik gösterebilir.
Partitionlar üzerinde dosya sistemi tiplerini değiştirmek için aşağıdaki komutu kullanabiliriz.
man mkds.xfs >> komutu ile terminal üzerinde dökümana bakabilirsiniz
sudo mkfs.xfs /dev/sdb1
VEYA
sudo mkfs.ext4 /dev/sdb1
sdb1 partition’u üzerinde dosya sistemi oluşturmak için mkfs komutu kullanarak xfs veya ext4 dosya sistemi tipine çevirebiliriz. Daha sofistike örnek komut vererek, filesystem’in inode boyutunu , bu dosya sistemine label vererek cinsini atayabiliriz.
sudo mkfs.xfs -i size=512 -L “BackupVolume” /dev/sdb1
-i size=512
: Bu parametre, inode boyutunu 512 byte olarak ayarlar. Inode, dosya sisteminde her dosyanın metadata (dosya izinleri, sahiplik bilgileri gibi) bilgisini tutan yapılardır. Varsayılan inode boyutu genellikle 256 byte’tır, ancak burada 512 byte olarak ayarlanıyor.
-L "BackupVolume"
: Bu, dosya sistemine bir etiket (label) verir. Etiket, dosya sisteminin adıdır ve burada "BackupVolume"
olarak ayarlanmıştır. Dosya sistemine daha kolay erişmek veya tanımlamak için kullanılabilir.
mevcut bir XFS dosya sistemine etiket (label) eklemek veya etiketini değiştirmek için:
sudo xfs_admin -L “FirstFS” /dev/sdb1
Özetle mkfs komutunu terminal üzerinde gerçek senaryolarda test amaçlı tek seferliğine, partitionlar için filesystem tipi atayabilirsiniz. Ancak mount komutu gibi buda reboot edilen sistemde geçici olarak kalır. Dolayısıyla tüm bu işlemlerin kalıcı olarak devam edilmesi /etc/fstab dizininde yazılan konfigürasyon değerleri ile olmaktadır.