Panelden sanal sunucunuzun diskini 50 GB'tan 100 GB'a çıkardınız, sunucuya girdiniz ve df -h hâlâ eski boyutu gösteriyor. Bu, canlı sistemde disk genişletme işinde herkesin karşılaştığı ilk şaşkınlıktır ve sebebi basittir: disk büyümek tek bir işlem değil, üst üste binmiş üç ya da dört katmanın ayrı ayrı büyütülmesidir. Hipervizör diski büyütür, ama bölüm tablosu eski sınırı bilir; bölümü büyütseniz bile LVM fiziksel birimi eski boyutta kalır; onu da büyütseniz dosya sistemi hâlâ kendi eski sınırını kullanır.
Bu rehberde zinciri baştan sona, sunucuyu kapatmadan ve servisleri durdurmadan geçeceğiz. Sanal diski büyüttükten sonra çekirdeğe yeni boyutu nasıl fark ettireceğinizi, bölümü growpart veya parted ile nasıl uzatacağınızı, LVM varsa pvresize ve lvextend adımlarını, son olarak da ext4 ve XFS için dosya sistemi genişletmeyi anlatacağım. Ayrıca GPT yedek tablosu, LUKS şifreli birimler ve bölüm büyütmeden ilerlemenin daha güvenli alternatifi gibi, sonradan başınızı ağrıtacak ayrıntılara da değineceğim.
Genişletme Zincirinin Dört Halkası#
İşe başlamadan önce hangi katmanda olduğunuzu bilmeniz gerekir, çünkü her kurulumda dört halkanın hepsi bulunmaz. Zincir şudur:
- Blok aygıtı — hipervizörün sunduğu sanal disk (
/dev/sda,/dev/vda). - Bölüm — disk üzerindeki bölüm (
/dev/sda1,/dev/sda3). Bazı bulut imajlarında bölüm hiç yoktur. - LVM — varsa fiziksel birim ve mantıksal birim katmanı.
- Dosya sistemi — ext4, XFS ya da başka bir dosya sistemi.
Mevcut yapıyı tek komutla görebilirsiniz:
# Aygıt, bölüm, LVM ve bağlama noktalarını ağaç halinde göster
lsblk -f
# Dosya sistemi tipini ve doluluğu doğrula
df -hT
Tipik bir LVM'li kurulumda lsblk çıktısı şuna benzer:
NAME FSTYPE SIZE MOUNTPOINT
sda 100G
├─sda1 ext4 1G /boot
└─sda2 LVM2_member 49G
└─vg0-root ext4 49G /
Burada dikkat edin: disk 100 GB göründüğü hâlde sda2 hâlâ 49 GB. Yani hipervizör işini yapmış, geri kalan üç halka sizi bekliyor. LVM katmanının kavramlarına hiç bakmadıysanız LVM snapshot alma ve birim genişletme yazısı PV, VG ve LV ayrımını netleştirir; bu rehberin üçüncü adımı oradaki bilgiyi varsayar.
| Katman | Genişletme komutu | Kesinti gerekir mi |
|---|---|---|
| Blok aygıtı | Panelden büyütme + rescan | Hayır |
| Bölüm | growpart / parted resizepart | Hayır |
| LVM PV | pvresize | Hayır |
| LVM LV | lvextend | Hayır |
| ext4 | resize2fs | Hayır |
| XFS | xfs_growfs | Hayır |
Adım 1: Yeni Boyutu Çekirdeğe Fark Ettirmek#
Sanal diski panelden büyüttükten sonra çekirdek bunu her zaman kendiliğinden görmez. Önce gerçekten görüp görmediğini kontrol edin:
# Çekirdek diski kaç bayt olarak biliyor
lsblk -b -d -o NAME,SIZE /dev/sda
# Son çekirdek mesajlarında boyut değişimi var mı
dmesg | tail -20
Yeni boyut görünmüyorsa diski yeniden taratın. SCSI ve SAS tabanlı sanal disklerde (/dev/sda gibi) klasik yöntem şudur:
# Tek bir diski yeniden tara
echo 1 > /sys/block/sda/device/rescan
# Tüm SCSI kanallarını tara (disk henüz hiç görünmüyorsa)
for h in /sys/class/scsi_host/host*/scan; do echo "- - -" > "$h"; done
VirtIO tabanlı disklerde (/dev/vda) durum sürücüye ve çekirdek sürümüne göre değişir; güncel çekirdekler boyut değişimini genellikle otomatik alır, almadığında ise güvenilir tek yol yeniden başlatmadır. Bu, canlı genişletmenin tek gerçek kesinti riskidir ve hangi sanallaştırmayı kullandığınıza bağlıdır. Yeniden başlatmayı göze alamıyorsanız, aşağıdaki "yeni disk ekleme" yöntemini tercih edin; orada mevcut diske hiç dokunmazsınız.
Adım 2: Bölümü Uzatmak#
Çekirdek diski yeni boyutuyla gördükten sonra sıra bölümde. En güvenli araç cloud-guest-utils paketinden gelen growpart'tır; hesaplamayı kendisi yapar ve bölümü diskin sonuna kadar uzatır:
# Paket kurulu değilse
apt install -y cloud-guest-utils # Debian / Ubuntu
# dnf install -y cloud-utils-growpart # RHEL / AlmaLinux
# /dev/sda diskinin 2 numaralı bölümünü sonuna kadar uzat
growpart /dev/sda 2
# Değişikliği doğrula
lsblk /dev/sda
growpart yoksa parted ile de yapılır. Komut adı yanıltıcı olabilir ama resizepart bölümü büyütür; veriye dokunmaz, yalnızca bölüm tablosundaki bitiş sektörünü değiştirir:
# Etkileşimsiz biçimde 2 numaralı bölümü diskin sonuna kadar uzat
parted -s /dev/sda resizepart 2 100%
# Çekirdeğe yeni bölüm tablosunu okut
partprobe /dev/sda
GPT bölüm tablosu kullanan bir diskte önemli bir ayrıntı var: GPT'nin yedek başlığı diskin en sonunda durur. Disk büyüdüğünde bu yedek başlık artık sonda olmadığı için araçlar uyarı verir. parted bunu düzeltmeyi teklif eder; komut satırından halletmek isterseniz:
# GPT yedek başlığını diskin yeni sonuna taşı
sgdisk -e /dev/sda
Bölüm tablosu kavramlarına aşina değilseniz disk bölümleme, fdisk ve parted yazısı MBR ve GPT farkını, sektör hizalamasını ve bu araçların davranışını ayrıntılı anlatıyor.
Adım 3: LVM Katmanını Genişletmek#
Bölüm bir LVM fiziksel birimiyse, LVM'in de yeni alanı görmesi gerekir. Bu tek komuttur ve kesinti gerektirmez:
# Fiziksel birimi yeni bölüm boyutuna uzat
pvresize /dev/sda2
# Birim grubunda boş alan oluştuğunu doğrula (VFree sütunu)
vgs
# Tüm boş alanı kök mantıksal birime ver ve dosya sistemini de büyüt
lvextend -r -l +100%FREE /dev/vg0/root
lvextend komutundaki -r bayrağı dördüncü adımı da otomatik yapar: dosya sistemi tipini kendisi tespit eder ve doğru aracı çağırır. Eğer bu bayrağı kullanmazsanız bir sonraki bölümdeki komutları elle çalıştırmanız gerekir.
Diskiniz LUKS ile şifreliyse araya bir halka daha girer. Sıra şöyle olur: bölümü büyüt, sonra şifreli konteyneri büyüt, sonra LVM veya dosya sistemi:
# Şifreli konteyneri yeni bölüm boyutuna uzat (aygıt eşlemesi adıyla)
cryptsetup resize sda2_crypt
Adım 4: Dosya Sistemini Uzatmak#
Son halka dosya sistemidir ve komut tipe göre değişir. İkisi de bağlıyken çalışır; ayırmanıza gerek yoktur.
# ext2 / ext3 / ext4 için — aygıt yolu verilir
resize2fs /dev/vg0/root
# XFS için — BAĞLAMA NOKTASI verilir, aygıt değil
xfs_growfs /
# Sonucu doğrula
df -hT /
Bu ayrım sık karıştırılır: resize2fs aygıt bekler, xfs_growfs bağlama noktası bekler. XFS'e aygıt yolu verirseniz komut çalışmaz ve hata mesajı ilk bakışta anlaşılır olmayabilir.
Bir diğer önemli fark küçültmedir. ext4 küçültülebilir ama yalnızca dosya sistemi ayrılmışken; XFS ise hiçbir koşulda küçültülemez. Yani XFS ile ilerlerken verdiğiniz boyut kararı tek yönlüdür. Bu, bulut sunucularda özellikle önemlidir çünkü çoğu sağlayıcıda sanal diski küçültmek de mümkün değildir; büyütürken ihtiyacın biraz üstünü hedefleyin ama aşırıya kaçmayın.
Bölüm Büyütmeden İlerlemek: Yeni Disk Eklemek#
Mevcut diskin bölüm tablosuna hiç dokunmadan alan eklemenin çok daha düşük riskli bir yolu var: sunucuya ikinci bir sanal disk ekleyip onu birim grubuna dahil etmek. Bu yöntemde ne bölüm tablosu değişir, ne GPT yedek başlığı taşınır, ne de yeniden başlatma riski doğar.
# Yeni diski LVM'e tanıt (bölüm açmaya gerek yok)
pvcreate /dev/sdb
# Mevcut birim grubuna ekle
vgextend vg0 /dev/sdb
# Alanı istediğiniz mantıksal birime aktar
lvextend -r -l +100%FREE /dev/vg0/root
LVM kullanmıyorsanız da yeni diski ayrı bir dizine bağlayıp şişen veriyi oraya taşıyabilirsiniz; örneğin /var/lib/docker ya da /var/www dizinini yeni diske almak, kök bölümü rahatlatmanın klasik yoludur. Bağlama noktasını kalıcı hale getirirken /etc/fstab girdisini UUID ile yazın; ayrıntılar için disk bağlama, mount ve fstab yazısına bakabilirsiniz. Zaten dolmuş bir diskte acil müdahale gerekiyorsa, genişletmeden önce yer açmanın yolları için disk dolu, no space left çözümü yazısı işinizi görür.
Genişletmeden Önce ve Sonra Kontrol Listesi#
Bu işlemler kesintisiz olsa da bölüm tablosuna dokunuyorsunuz; disiplinli davranmakta fayda var. İzlediğim sıra şudur:
- Yedek al. Bölüm tablosuna dokunan her işlemden önce en azından güncel bir anlık görüntü veya yedek olsun.
- Bölüm tablosunu kaydet.
sfdisk -d /dev/sda > /root/sda-partition-table.txtçıktısı, işler ters giderse tabloyu geri yazmanızı sağlar. - Sıralamayı doğrula. Uzatacağınız bölüm diskin son bölümü mü? Değilse bölümü büyütemezsiniz; arada başka bir bölüm varsa yeni disk ekleme yöntemine geçin.
- Adım adım ilerle. Her adımdan sonra
lsblkvedf -hTile sonucu doğrulayın; hepsini tek seferde çalıştırıp sonuca bakmayın. - fstab'ı kontrol et. Yeni bir bağlama noktası eklediyseniz
mount -akomutunu çalıştırıp hata olmadığını görün; hatalı bir fstab satırı sunucuyu bir sonraki açılışta kurtarma moduna düşürür.
Alanın nereye gittiğini anlamadan büyütmek çoğu zaman sorunu erteler; hangi dizinin şiştiğini bulmak için disk kullanımı df, du ve ncdu yazısındaki yöntemleri genişletmeden önce uygulamanızı tavsiye ederim.
Sık Yapılan Hatalar ve Tuzaklar#
Dosya sistemi adımını unutmak. En yaygın hata bu. Bölüm ve LVM büyümüştür, lsblk doğru boyutu gösterir ama df -h eski değeri yazar. Çünkü dosya sistemi hâlâ kendi eski süperblok bilgisiyle çalışmaktadır. Çözüm resize2fs veya xfs_growfs.
XFS'i küçültmeye çalışmak. Böyle bir özellik yok. Küçültmek zorundaysanız yeni ve küçük bir birim oluşturup veriyi kopyalamanız gerekir.
Ortadaki bölümü büyütmeye çalışmak. Bölüm ancak diskin sonundaysa ve arkasında boş alan varsa uzatılabilir. Arada takas (swap) bölümü varsa onu kapatıp silmek ya da yeni disk eklemek gerekir.
GPT yedek başlığını görmezden gelmek. Disk büyüdükten sonra yedek başlık yanlış yerde kalır. Bazı araçlar sadece uyarır, bazıları işlemi reddeder. sgdisk -e ile düzeltin.
Rescan yerine doğrudan yeniden başlatmak. Çoğu durumda gerek yoktur ve üretim sunucusunu kapatmak gereksiz risktir. Önce rescan deneyin.
Snapshot varken genişletmek. Aktif bir LVM snapshot'ı varken alt katmanları değiştirmek işleri karmaşıklaştırır. Genişletmeden önce snapshot'ları temizleyin.
Sıkça Sorulan Sorular#
Disk genişletme sırasında sunucu kapanır mı#
Normal koşullarda hayır. Bölüm uzatma, LVM genişletme ve dosya sistemi büyütme adımlarının hepsi sistem çalışırken ve dosya sistemi bağlıyken yapılabilir. Tek riskli nokta, hipervizörde büyüttüğünüz diskin yeni boyutunu çekirdeğin görmemesidir; SCSI disklerde bu rescan ile çözülür, bazı VirtIO yapılandırmalarında ise yeniden başlatma gerekebilir. Bunu göze alamıyorsanız mevcut diski büyütmek yerine ikinci bir disk ekleyin.
df hâlâ eski boyutu gösteriyor, ne yapmalıyım#
Neredeyse her zaman dosya sistemi adımı eksiktir. Önce lsblk ile bölümün ve varsa mantıksal birimin gerçekten büyüdüğünü doğrulayın. Büyümüşse ext4 için resize2fs /dev/vg0/root, XFS için xfs_growfs / komutunu çalıştırın. lsblk de eski boyutu gösteriyorsa sorun daha aşağıdadır: bölümü uzatmayı ya da diski yeniden taratmayı atlamışsınızdır.
Diski küçültebilir miyim#
Pratikte hayır. XFS küçültmeyi hiç desteklemez, ext4 destekler ama dosya sistemini ayırmanızı gerektirir ve sıralama hatası veri kaybıdır. Bunun üstüne çoğu sanallaştırma platformu ve bulut sağlayıcısı sanal diski küçültmeye izin vermez. Doğru yaklaşım, küçültmek yerine yeni ve uygun boyutlu bir birim oluşturup veriyi taşımak, ardından eski birimi kaldırmaktır.
growpart yerine fdisk kullanabilir miyim#
Kullanabilirsiniz ama daha risklidir. Klasik yöntem bölümü silip aynı başlangıç sektöründen daha büyük olarak yeniden oluşturmaktır; başlangıç sektörünü bir tek sektör bile kaydırırsanız dosya sistemi bulunamaz hale gelir. growpart ve parted resizepart bu hesabı sizin yerinize yaptığı için tercih edilir. fdisk ile ilerleyecekseniz önce mevcut tabloyu sfdisk -d ile kaydedin.
Bölüm diskin sonunda değilse ne yapmalıyım#
Bölüm ancak arkasında boş alan varsa uzatılabilir. Arkada takas bölümü gibi başka bir bölüm varsa iki seçeneğiniz var: o bölümü kapatıp silerek yer açmak ya da bölüm tablosuna hiç dokunmadan ikinci bir disk ekleyip LVM birim grubuna dahil etmek. İkinci yöntem belirgin biçimde daha güvenlidir ve üretim sunucularında tercih edilen yoldur.
İşlem sırasında elektrik giderse veri kaybolur mu#
Riski küçümsememek gerekir. Bölüm tablosu yazımı çok kısa sürer ve genellikle atomiktir, ancak dosya sistemi genişletme sırasında kesinti olması metadata'yı tutarsız bırakabilir. Bu yüzden işleme başlamadan önce yedek almak ve sfdisk -d ile bölüm tablosunun bir kopyasını saklamak temel disiplindir. Kritik sunucularda genişletmeyi bakım penceresinde ve güncel bir anlık görüntü varken yapın.
Kapanış#
Canlı disk genişletme, tek bir komut değil bir zincirdir ve zinciri baştan sona takip ettiğinizde neredeyse hiç sürpriz çıkarmaz. Aklınızda kalması gereken dört alışkanlık şu: her adımdan sonra lsblk ve df -hT ile sonucu doğrulayın; bölüm tablosuna dokunmadan önce sfdisk -d çıktısını ve bir yedeği saklayın; lvextend -r bayrağını kullanarak dosya sistemi adımını unutma riskini ortadan kaldırın; ve mümkün olduğunda mevcut bölümü uzatmak yerine yeni disk ekleyip LVM'e dahil etmeyi tercih edin, çünkü bu yol en az riskli olanıdır.
Disk boyutunu panelden büyütüp geri kalanını işletim sistemi tarafında tamamlayabileceğiniz esnek bir ortam istiyorsanız VDS ve bulut sunucu paketlerimiz bu akışa uygun; birden fazla fiziksel disk ve tam donanım kontrolü gerekiyorsa dedicated sunucu tarafına bakabilirsiniz. Genişletmeyi bakım penceresinde bizim yapmamızı isterseniz sunucu yönetimi hizmetimiz devreye girer; işleme başlamadan önce güncel bir kopya için yedekleme çözümlerimize göz atın.