Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
Linux'da Disk Genişletme İşlemi

Linux'da Disk Genişletme İşlemi

İçindekiler

Sanallaştırma katmanında diski büyütmek beş saniyelik iştir: sanal diske 100 GB eklersiniz ve iş bitmiş görünür. Ama sunucuya girip df -h yazdığınızda hiçbir şeyin değişmediğini görürsünüz — disk büyümüştür, bölüm büyümemiştir; bölüm büyüse bile dosya sistemi hâlâ eski boyuttadır. Alan ancak üç katmanın üçü de büyütüldüğünde kullanılabilir hâle gelir.

Bu yazıda KVM üstünde çalışan bir Ubuntu 22.04 sanal makinesinde bu üç katmanı iki farklı yöntemle büyüteceğiz. Hipervizör tarafındaki disk büyütme adımı sanallaştırma ortamınıza göre değişir; KVM için Tecmint’in rehberine bakabilirsiniz.

Aşağıdaki çıktılar bir test makinesine aittir; UUID’ler, boyutlar ve aygıt adları sizin sisteminizde farklı olacaktır. Komutlar gerçektir. Bölüm tablosuyla oynamadan önce yedek alın — bu adımların hiçbiri geri alınabilir değildir.

Neden İki Yol Var: Bitişik Alan Kuralı ve LVM

Bölüm büyütmenin tek bir yolu olmamasının sebebi, klasik bölüm tablosunun katı bir kuralı olmasıdır: bir bölüm ancak hemen arkasındaki alan boşsa büyüyebilir. Buna contiguous allocation denir. vda3‘ün arkasında vda4 başlıyorsa vda3 büyütülemez — diskin başka bir yerinde 100 GB boş alan olması hiçbir şeyi değiştirmez, çünkü bir bölüm diskte tek parça hâlinde durmak zorundadır.

LVM bu kuralı ortadan kaldırmaz, üstüne bir katman koyar. Üç kavramı vardır:

  • Physical Volume (PV) — LVM’ye verilen bir bölüm ya da disk (/dev/vda3, /dev/vda4).
  • Volume Group (VG) — bir veya daha fazla PV’nin oluşturduğu havuz.
  • Logical Volume (LV) — havuzdan kesilen, üzerine dosya sistemi kurduğunuz mantıksal bölüm.

Havuz birden fazla PV’den beslenebildiği için, diskin neresinde olursa olsun yeni bir bölüm açıp VG’ye eklemek yeterlidir; vda3 ile vda4‘ün yan yana olması gerekmez. Yazının iki yöntemi tam olarak bu iki durumdan doğar: bitişik boş alan yoksa yeni PV eklersiniz (Yöntem 1), varsa mevcut bölümün sınırını ileri taşırsınız (Yöntem 2).

Yöntem 1: Yeni Bölüm Açıp Volume Group’a Eklemek

Bu yöntemde diskteki boş alandan yeni bir bölüm (vda4) oluşturur, onu fiziksel hacim yapar ve mevcut volume group’a ekleriz. vda3 ile vda4 fiziksel olarak yan yana olmak zorunda değildir — LVM’nin sağladığı esneklik tam olarak budur.

Başlangıç durumu: disk 120G, ama işletim sistemi yalnızca 18.2G’lik vda3 bölümünü kullanıyor. Kalan ~100G ayrılmamış durumda.

murat@ubuntu:~$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0 111.9M  1 loop /snap/lxd/24322
loop1                       7:1    0  63.4M  1 loop /snap/core20/1974
loop2                       7:2    0  53.3M  1 loop /snap/snapd/19457
loop3                       7:3    0  38.8M  1 loop /snap/snapd/21759
loop4                       7:4    0  63.7M  1 loop /snap/core20/2434
loop5                       7:5    0    87M  1 loop /snap/lxd/29351
sr0                        11:0    1  1024M  0 rom
vda                       252:0    0   120G  0 disk
├─vda1                    252:1    0     1M  0 part
├─vda2                    252:2    0   1.8G  0 part /boot
└─vda3                    252:3    0  18.2G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  18.2G  0 lvm  /

Partition Table Güncelleme
Öncelikle, vda diskindeki boş alanı yeni bir bölüm olarak ayırmamız gerekiyor. Bunun için fdisk aracını kullanacağız:

sudo fdisk /dev/vda

fdisk açıldıktan sonra aşağıdaki adımları izleyin:

  • p tuşuna basarak mevcut bölümleri listeleyin.
  • n tuşuna basarak yeni bir bölüm oluşturun.
  • Bölüm tipi olarak primary seçin (genellikle varsayılan).
  • Yeni alanı kullanarak bölümü tamamlayın.
  • w tuşuna basarak değişiklikleri yazdırın ve çıkın.

LVM’e Yeni Bölümü Eklemek
Yeni bölümü LVM yapısına dahil etmek için yeni partisyonu fiziksel hacim (PV) olarak ayarlamanız gerekecek.

sudo pvcreate /dev/vda4

sudo pvdisplay
--- NEW Physical volume ---
PV Name               /dev/vda4
VG Name
PV Size               <100.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               kgERpe-hsm9-MQd2-K3Zu-t8cA-SmM2-oVZqQs

VG Name alanının boş ve Allocatable değerinin NO olması normaldir: bölüm henüz bir volume group’a ait değildir, dolayısıyla ondan alan dağıtılamaz.

Yeni PV’yi VG’ye Eklemek
Yeni PV’yi mevcut volume group (VG) ubuntu-vg içerisine ekleyin:

sudo vgextend ubuntu-vg /dev/vda4
# Volume group "ubuntu-vg" successfully extended

sudo vgdisplay
--- Volume group ---
VG Name               ubuntu-vg
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                2
Act PV                2
VG Size               <118.22 GiB
PE Size               4.00 MiB
Total PE              30264
Alloc PE / Size       4665 / 18.22 GiB
Free  PE / Size       25599 / <100.00 GiB
VG UUID               UvV3Vf-dDCF-VvVb-Olof-4Vxu-fEGt-H1FjdL

Doğrulanacak iki satır var: Cur PV 1’den 2’ye çıkmış olmalı (VG artık iki bölümden besleniyor) ve Free PE / Size yeni eklenen alanı göstermeli. Cur PV hâlâ 1 ise vgextend çalışmamıştır, sonraki adımlar da boşa gider.

Logical Volume (LV) Boyutunu Artırma
Şimdi ubuntu-lv adlı logical volume’ün boyutunu artırabilirsiniz. Tüm kullanılabilir alanı eklemek için şu komutu kullanın:

sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

Size of logical volume ubuntu-vg/ubuntu-lv changed from 18.22 GiB (4665 extents) to <118.22 GiB (30264 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Dosya Sistemini Genişletme
Son olarak, ubuntu-lv üzerinde kullanılan dosya sistemini genişletmeniz gerekiyor. Bu adım atlanırsa df -h çıktısı hiç değişmez — LVM katmanı büyümüş, dosya sistemi eski boyutunda kalmıştır.

Dosya sisteminizin türünü önce doğrulayın, komut ona göre değişir:

df -T /                                          # Type sütunu ext4 mü xfs mi?

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv          # ext4 / ext3 / ext2 için
sudo xfs_growfs /                                # XFS için — aygıt değil, bağlama noktası verilir

XFS ayrımı önemlidir: RHEL, Rocky, AlmaLinux ve CentOS 7+ kurulumlarında kök dosya sistemi varsayılan olarak XFS’tir ve resize2fs orada Bad magic number in super-block hatası verir. Ayrıca XFS küçültülemez, yalnızca büyütülebilir.

Yöntem 2: Mevcut Bölümü Büyütmek (cfdisk + pvresize)

Bu yöntemde yeni bölüm açmayız; boş alan zaten vda3‘ün hemen arkasında olduğu için mevcut bölümün sınırını ileri taşırız. Bitişik boş alan varsa daha temiz sonuç verir — VG tek PV üzerinde kalır.

Disk alanını genişletme
Bölümü büyütmek için cfdisk aracını kullanacağız:

sudo cfdisk /dev/vda

cfdisk açıldıktan sonra aşağıdaki adımları izleyin:

  • /dev/vda3 satırını seçip Resize seçeneğine gelin ve ENTER’a basın. Boş alanı doğrudan bölümün üstüne ekler.
  • Write seçeneğini seçin ve yes yazarak ENTER’a basın.
  • Quit ile çıkın.

cfdisk‘in Resize seçeneğini kullanmanın sebebi şudur: bölümü silip yeniden oluşturarak da büyütebilirsiniz, ama bunu yaparken başlangıç sektörünü birebir aynı vermek zorundasınız. Bir sektör kayarsa üzerindeki LVM meta verisi bulunamaz ve bölüm okunamaz hâle gelir. Resize başlangıcı hiç ellemez.

Artık vda3 bölümü 118.2G oldu:

murat@ubuntu:~$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  38.8M  1 loop /snap/snapd/21759
loop1                       7:1    0  63.4M  1 loop /snap/core20/1974
loop2                       7:2    0    87M  1 loop /snap/lxd/29351
loop3                       7:3    0  63.7M  1 loop /snap/core20/2434
loop4                       7:4    0 111.9M  1 loop /snap/lxd/24322
loop5                       7:5    0  53.3M  1 loop /snap/snapd/19457
sr0                        11:0    1  1024M  0 rom
vda                       252:0    0   120G  0 disk
├─vda1                    252:1    0     1M  0 part
├─vda2                    252:2    0   1.8G  0 part /boot
└─vda3                    252:3    0 118.2G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  18.2G  0 lvm  /

Dikkat edin: bölüm 118.2G’ye çıktı ama LVM hacmi hâlâ 18.2G. Bölümün büyümesi kendiliğinden LVM’ye yansımaz.

Bölüm Tablosunu ve LVM’yi Yeniden Tarayın

LVM’ye altındaki bölümün büyüdüğünü pvresize ile bildirmeniz gerekir:

sudo pvresize /dev/vda3

Komut Device /dev/vda3 not found ya da eski boyutu verirse, çekirdek yeni bölüm tablosunu henüz okumamış demektir. Bölüm bağlı olduğu için (kök dosya sistemi üzerinde) tablo çalışırken yeniden okunamayabilir; önce partprobe deneyin, olmazsa sistemi yeniden başlatın:

sudo partprobe /dev/vda
sudo pvresize /dev/vda3

vgdisplay ile baktığımızda boş alana 100 GB geldiğini göreceğiz; şimdi bu alanı hacme dahil etme işi kaldı.

murat@ubuntu:~$ sudo vgdisplay
--- Volume group ---
VG Name               ubuntu-vg
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  4
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                1
Act PV                1
VG Size               118.22 GiB
PE Size               4.00 MiB
Total PE              30265
Alloc PE / Size       4665 / 18.22 GiB
Free  PE / Size       25600 / 100.00 GiB
VG UUID               6fWVCi-MLdn-QYau-d5xk-CnET-0xZO-eJvl5N

Cur PV burada 1: yeni bölüm açmadığımız için VG hâlâ tek fiziksel hacim üzerinde duruyor, yalnızca o hacim büyüdü. Birinci yöntemde bu değer 2 idi — iki yöntem arasındaki fark tam olarak burada görünür.

Logical Volume’u Genişletme

Mevcut logical volume ubuntu-lv‘yi tüm boş alanı kullanacak şekilde genişletmek için şu komutu çalıştırın:

murat@ubuntu:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 18.22 GiB (4665 extents) to 118.22 GiB (30265 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

murat@ubuntu:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 7
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 13106176 (4k) blocks long.

on-line resizing required satırı, dosya sisteminin bağlıyken büyütüldüğünü söyler; ext4 ve XFS bunu destekler, sistemi kapatmanız gerekmez.

Doğrulama

Üç katmanın üçünün de büyüdüğünü tek tek görün — yalnızca lsblk‘a bakmak yetmez, çünkü dosya sistemi büyümeden de bölüm ve LV büyük görünür:

lsblk                                  # bölüm ve LV boyutu
sudo pvs; sudo vgs; sudo lvs           # LVM katmanı
df -h /                                # asıl cevap: kullanılabilir alan gerçekten arttı mı?

df -h çıktısındaki Size değeri hâlâ eskiyse dosya sistemi genişletme adımı (resize2fs / xfs_growfs) çalışmamıştır.

Sonuç

  • Disk genişletme tek işlem değil, üç katmanlı bir zincirdir: sanal disk → bölüm → LVM → dosya sistemi. Zincirin son halkası atlandığında lsblk büyük görünür ama df -h değişmez; en sık yapılan hata budur.
  • Bitişik boş alan varsa mevcut bölümü büyütmek daha temizdir (cfdisk + pvresize); yoksa yeni bölüm açıp vgextend ile VG’ye eklemek işi görür. LVM’nin sağladığı esneklik, bu ikinci yolun mümkün olmasıdır.
  • Dosya sistemi komutu türe göre değişir. ext4’te resize2fs <aygıt>, XFS’te xfs_growfs <bağlama noktası>. RHEL ailesinde varsayılan XFS’tir ve XFS küçültülemez — büyütmeden önce boyut kararını doğru verin.

Depolama tarafında devam etmek için: Veri merkezinde BT yedekliliği — ağ, depolama, küme.

Paylaş :

İlgili Yazılar

Kabukta İlk Adımlar: Komutlar ve Temel Seçenekler

Kabukta İlk Adımlar: Komutlar ve Temel Seçenekler

GNU/Linux işletim sisteminde kabuk (shell) kullanarak temel komutları ve komutlarda kullanılan temel seçenekleri öğrenmeye başlayacağız. Kabuk, kullanıcıların işletim sistemiyle etkileşim kurmasını sağlayan arayüzdür ve komut satırını kullanarak birçok işlemi gerçekleştirebiliriz. Haydi, kabukta ilk adımlarımıza başlayalım ve komutların temel seçeneklerini öğrenelim. Diğer konuları ‘GNU/Linux Öğrenme Yolculuğu’ bu adresten ulaşabilirsiniz.

Linux'da Yeni Kullanıcılar Oluşturma ve Silme

Linux'da Yeni Kullanıcılar Oluşturma ve Silme

Linux’ta kullanıcı oluşturmanın iki komutu vardır ve ikisi aynı şeyi yapmaz: useradd size hiçbir şey sormaz ve varsayılanlarla yetinir — çoğu dağıtımda ev dizini bile açmaz, parola belirlenmediği için hesap kilitli kalır. adduser ise soru sorar ve işi tamamlar. Yanlış olanı seçtiğinizde hata almazsınız; kullanıcının oturum açamadığını bir hafta sonra fark edersiniz.

Linux'da Dosya İçeriğini Görüntüleme: Less, Tail, Head Komutları

Linux'da Dosya İçeriğini Görüntüleme: Less, Tail, Head Komutları

Bir sunucuda sorun ararken ilk yaptığınız şey bir log dosyasına bakmaktır. Ama o dosya 2 GB ise ve siz cat yazdıysanız, terminaliniz dakikalarca akar ve aradığınız satır çoktan yukarı kaymıştır. Dosyanın tamamını okumakla bir kısmını okumak farklı komutların işidir.