Bir sunucuda disk dolduğunda ya da yeni bir depolama alanı eklemeniz gerektiğinde iki yöntem var: klasik bölümlendirme ve LVM. İkisi de aynı işi görür, ama LVM sistemi kapatmadan alan büyütmeye izin verir; klasik bölümlendirme ise daha basit ve öngörülebilir kalır. Bir veritabanı sunucusunda disk kullanımı %90'ı geçtiğinde panikle yeni disk eklemekle, önceden LVM kurulmuş bir sistemde tek komutla alan büyütmek arasındaki fark, gece yarısı acil müdahaleyle planlı bakım arasındaki farka benzer.
Bu yazıda ikisini de gerçek komutlarla ele alıyorum; örnekler hem yeni bir disk ekleme senaryosunu hem de mevcut bir bölümü büyütme senaryosunu kapsıyor.
Diskleri ve Bölümleri Görmek
Sisteme bağlı diskleri ve mevcut bölümleri listelemenin en hızlı yolu lsblk komutudur:
lsblk
lsblk -f
-f bayrağı dosya sistemi türünü ve UUID'yi de gösterir; bir bölümün ext4 mü yoksa xfs mi olduğunu, ya da hiç biçimlendirilmemiş olduğunu buradan görürsünüz. lsblk çıktısındaki ağaç yapısı, hangi bölümün hangi diske ait olduğunu ve varsa hangi LVM hacim grubuna bağlı olduğunu tek bakışta gösterir. sda, sda1, sda2 gibi girintili satırlar fiziksel diski ve üzerindeki bölümleri temsil eder.
Daha ayrıntılı bölüm tablosu bilgisi için fdisk ya da GPT diskler için parted kullanılır:
sudo fdisk -l /dev/sda
sudo parted /dev/sda print
MBR bölümleme dört birincil bölümle sınırlıdır, GPT ise bu sınırı kaldırır ve 2 TB üzeri diskleri destekler; yeni kurulan sistemlerin çoğu artık GPT kullanır. fdisk -l çıktısı diskin toplam sektör sayısını, sektör boyutunu ve mevcut bölüm tablosunu (Device, Boot, Start, End, Sectors, Size, Type sütunları) listeler. Bir bölümün nereden nereye uzandığını byte cinsinden görmek istediğinizde bu çıktı gerekir.
Disk kullanım oranını dosya sistemi düzeyinde görmek için:
df -h
df -h bağlı (mounted) her dosya sisteminin toplam, kullanılan ve boş alanını insan tarafından okunabilir birimde gösterir. df boş görünse bile disk doluyorsa sorun genelde inode tükenmesidir; bunu kontrol etmek için df -i kullanılır. Milyonlarca küçük dosya (örneğin bir mail sunucusunda biriken spam ya da bir önbellek dizini) inode limitini df -h'ın gösterdiğinden çok daha önce tüketebilir. Bu durumda diskte boş alan görünse bile yeni dosya oluşturma "No space left on device" hatasıyla başarısız olur.
Yeni Bir Diski Bölümlere Ayırmak
Yeni takılan boş bir diski (örneğin /dev/sdb) kullanılabilir hale getirmenin ilk adımı bölümlendirmedir. parted ile komut satırından tek seferde bölüm oluşturmak mümkündür:

sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%
İlk komut GPT bölüm tablosu oluşturur, ikinci komut diskin tamamını kaplayan tek bir birincil bölüm açar. 0% 100% ifadesi diskin başından sonuna kadar tüm alanı kullanır; belirli bir boyut ayırmak isterseniz 0% 50GB gibi somut değerler de verebilirsiniz. Etkileşimli çalışmayı tercih edenler için fdisk daha tanıdık bir arayüz sunar:
sudo fdisk /dev/sdb
Bu komut sizi n (yeni bölüm), p (birincil), bölüm numarası ve boyut soran bir menüye sokar. w ile değişiklikleri diske yazarsınız, q ise kaydetmeden çıkar. Boyutu belirtirken +20G gibi göreli bir değer de girebilirsiniz; bu, diskin başından itibaren tam 20 GB'lık bir bölüm ayırır. Boş bırakırsanız fdisk kalan tüm alanı kullanır. w komutunu çalıştırmadan önce p (print) yazıp bölüm tablosunu bir kez daha gözden geçirmek, yanlış diskte işlem yapmadığınızı doğrulamanın basit bir yoludur.
Bölüm oluşturulduktan sonra dosya sistemiyle biçimlendirmeniz gerekir, aksi halde bölüm kullanılamaz:
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
ext4 genel amaçlı kullanımda öntanımlı tercihtir; xfs ise büyük dosyalar ve yüksek G/Ç yükü olan sunucularda (veritabanı, medya depolama) daha iyi performans gösterir. mkfs.ext4 çalıştırıldığında terminal size dosya sistemi bloğu boyutunu, inode sayısını ve journal ayarlarını gösteren birkaç satır çıktı verir; bu işlem disk boyutuna bağlı olarak birkaç saniyeden birkaç dakikaya kadar sürer.
Biçimlendirilen bölümü kullanmak için bir dizine bağlamanız (mount) gerekir:
sudo mkdir /mnt/veri
sudo mount /dev/sdb1 /mnt/veri
Bu bağlama geçicidir, yeniden başlatınca kaybolur; kalıcı hale getirmek için /etc/fstab dosyasına satır eklenir. Bağlama işleminden hemen sonra df -h /mnt/veri çalıştırıp bölümün beklediğiniz boyutta göründüğünü doğrulamak, ilerideki bir yanlış anlaşılmayı önler.
Kalıcı Bağlama: /etc/fstab
/etc/fstab, sistem açılışında hangi bölümün nereye bağlanacağını tanımlayan dosyadır. Elle düzenlemeden önce bölümün UUID'sini almak daha güvenlidir, çünkü aygıt adları (/dev/sdb1) donanım değişikliğinde kayabilir. Bir disk çıkarılıp takıldığında ya da yeni bir disk eklendiğinde /dev/sdb bir sonraki açılışta /dev/sdc olarak görünebilir, ama UUID hep aynı kalır:

sudo blkid /dev/sdb1
Çıktıdaki UUID'yi /etc/fstab'a şu formatta eklersiniz:
UUID=1a2b3c4d-5e6f-7890-abcd-ef1234567890 /mnt/veri ext4 defaults 0 2
Sütunlar sırasıyla aygıtı, bağlama noktasını, dosya sistemi türünü, bağlama seçeneklerini, dump yedekleme bayrağını ve fsck tarama sırasını belirtir. Bağlama seçenekleri alanına defaults yerine noatime eklemek, her dosya okumasında erişim zaman damgasını güncellemeyi kapatır ve yoğun G/Ç yapan sunucularda küçük bir performans kazancı sağlar. Son sütundaki 2 değeri, kök dosya sistemi dışındaki bölümlerin açılışta ikinci sırada denetleneceğini belirtir.
/etc/fstab'da hata yaparsanız sistem açılışta kurtarma moduna düşebilir. Bu yüzden değişiklikten sonra yeniden başlatmadan önce test etmek kritiktir:
sudo mount -a
Bu komut fstab'daki tüm girişleri hemen dener ve hata varsa yeniden başlatmadan önce terminalde gösterir; sessizce geçerse dosya doğru yazılmış demektir. Hatalı bir UUID ya da yazım hatası varsa mount -a "mount point does not exist" ya da "wrong fs type" gibi net bir hata mesajı verir. Bu, reboot sonrası kurtarma moduyla uğraşmaktan çok daha az stresli bir yoldur.
LVM Nedir ve Neden Kullanılır?
Klasik bölümlendirmenin en büyük kısıtı, bir bölümü sonradan büyütmenin zor olmasıdır; disk dolduğunda genelde yeni bir disk eklemek ya da veriyi taşımak gerekir. LVM (Logical Volume Manager) bu sorunu bir soyutlama katmanıyla çözer: fiziksel diskler mantıksal birimlere dönüştürülür ve bu birimler ihtiyaç oldukça büyütülüp küçültülebilir.
LVM üç katmandan oluşur:
- Physical Volume (PV): LVM'e dahil edilen fiziksel disk ya da bölümdür.
- Volume Group (VG): Birden fazla PV'nin birleştirildiği ortak havuzdur.
- Logical Volume (LV): VG'den ayrılan ve gerçek dosya sisteminin üzerine kurulduğu esnek birimdir.
Bu katmanlı yapı sayesinde, bir VG'ye yeni bir disk eklediğinizde o alanı mevcut bir LV'ye anında ekleyebilirsiniz; klasik bölümlendirmede bu işlem diski yeniden bölümlendirmeyi gerektirirdi. Sunucularda kök dosya sistemini büyütme ihtiyacı sık karşılaşılan bir durum olduğu için, birçok dağıtımın kurulum sihirbazı artık öntanımlı olarak LVM önerir; Ubuntu Server kurulumunda "Use LVM" seçeneği varsayılan olarak işaretli gelir.
Birden fazla fiziksel diski tek bir VG altında birleştirmek de mümkündür; örneğin iki adet 1 TB disk, tek bir 2 TB'lık mantıksal birim olarak kullanılabilir. Bu esneklik, klasik bölümlendirmede RAID gibi ayrı bir katman kurmadan elde edilemeyecek bir avantaj sağlar.
LVM Kurulumu: PV, VG, LV Oluşturmak
Yeni bir diski LVM'e dahil etmenin ilk adımı onu fiziksel birim olarak işaretlemektir:

sudo pvcreate /dev/sdc
sudo pvdisplay
Ardından bu PV'yi bir hacim grubuna eklersiniz; grup henüz yoksa oluşturulur:
sudo vgcreate veri_grubu /dev/sdc
sudo vgdisplay
Hacim grubundan istediğiniz boyutta bir mantıksal birim ayırırsınız:
sudo lvcreate -L 50G -n veri_lv veri_grubu
sudo mkfs.ext4 /dev/veri_grubu/veri_lv
sudo mount /dev/veri_grubu/veri_lv /mnt/veri
-L 50G birimin boyutunu belirler; grubun tüm alanını kullanmak isterseniz -l 100%FREE bayrağı da mevcuttur. Komutların baş harfleri katman katman ilerler: pv* fiziksel birim, vg* hacim grubu, lv* mantıksal birim komutlarıdır. Bu düzeni bilmek hangi komutu ne zaman kullanacağınızı hatırlamayı kolaylaştırır. vgdisplay çıktısındaki "Free PE / Size" satırı, o hacim grubunda henüz hiçbir LV'ye ayrılmamış ne kadar alan kaldığını gösterir; yeni bir LV oluşturmadan önce bu değere bakmak, -l 100%FREE kullanırken sürpriz yaşamamanızı sağlar.
LVM'in Asıl Gücü: Canlı Genişletme
LVM'in klasik bölümlendirmeye üstünlüğü asıl burada ortaya çıkar: disk dolmaya başladığında sistemi durdurmadan mantıksal birimi büyütebilirsiniz. Önce hacim grubuna yeni bir fiziksel disk eklenir:
sudo pvcreate /dev/sdd
sudo vgextend veri_grubu /dev/sdd
Ardından mantıksal birim büyütülür ve dosya sistemi bu yeni boyuta genişletilir:
sudo lvextend -L +20G /dev/veri_grubu/veri_lv
sudo resize2fs /dev/veri_grubu/veri_lv
lvextend yalnızca LVM katmanındaki boyutu büyütür. Dosya sisteminin bunu fark etmesi için resize2fs (ext4 için) ya da xfs_growfs (xfs için) çalıştırmanız gerekir; aksi halde ekstra alan görünür ama kullanılamaz. Bu adımı atlayan biri, lvextend sonrası df -h çalıştırıp bölümün hâlâ eski boyutta göründüğünü görünce komutun çalışmadığını düşünüp gereksiz yere tekrar dener; oysa sorun yalnızca dosya sistemi büyütmesinin unutulmuş olmasıdır.
Bu iki komutu tek satırda birleştirmek de mümkündür:
sudo lvextend -L +20G -r /dev/veri_grubu/veri_lv
-r bayrağı resize2fs'i otomatik tetikler ve ayrı komut çalıştırmayı gereksiz kılar; günlük kullanımda önerilen yöntem budur, çünkü iki ayrı komutu unutma riskini ortadan kaldırır. Küçültme işlemi (lvreduce) çok daha risklidir. ext4'te önce dosya sistemi küçültülmeli, sonra mantıksal birim küçültülmelidir; sıra ters çevrilirse veri kaybı olur.
xfs dosya sistemleri küçültmeyi desteklemez, bu yüzden xfs kullanan bir LV'yi yalnızca büyütebilirsiniz. Bir xfs bölümünü küçültmeniz gerekiyorsa tek yol, yeni ve daha küçük bir LV oluşturup veriyi rsync ile taşımaktır; xfs kullanmayı planlıyorsanız başlangıç boyutunu temkinli seçmek ileride zaman kazandırır.
LVM anlık görüntü (snapshot) özelliği de sunar; büyük bir güncelleme öncesi lvcreate -s ile geri dönülebilir bir kontrol noktası almak, yedekleme stratejisinin ucuz ve hızlı bir tamamlayıcısıdır. Resmî belgeler için Red Hat'in LVM yönetim kılavuzu ve man lvm sayfası ayrıntılı komut referansı sağlar.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.