XFS ve LVM ile Kesintisiz Disk Genişletme
Bir sanal diski büyütmek, üzerindeki dosya sistemini kendiliğinden büyütmez. XFS bir LVM mantıksal birimi üzerinde çalışıyorsa yeni alanın sırasıyla disk, varsa bölüm, fiziksel birim (PV), birim grubu (VG), mantıksal birim (LV) ve dosya sistemine ulaşması gerekir. Önce lsblk, pvs, vgs, lvs ve findmnt ile hangi katmanda boş alan bulunduğunu belirleyin; yalnızca eksik katmanı genişletin.
Bu rehber, standart kalın tahsisli bir LVM LV üzerinde bağlı XFS dosya sistemini büyütme akışını anlatır. RAID, multipath, thin pool, LUKS şifreleme ve küme depolaması farklı ara katmanlar içerir. Bu yapılarda aşağıdaki cihaz adlarını doğrudan kullanmayın. Örnekler bir laboratuvar düzenini açıklar; bu makale belirli bir müşteri sisteminde işlemin test edildiği iddiasını taşımaz.
Katmanları doğru okuyun
Örnek düzenimizde sanal disk /dev/sdb, diskin son bölümü /dev/sdb1, PV bu bölümün üzerinde, VG vg_data, LV lv_app ve XFS bağlama noktası /srv/app olsun:
/dev/sdb → /dev/sdb1 → PV → vg_data → lv_app → XFS → /srv/app
Bu isimler gerçek sisteminizden alınmış değerler değildir. Özellikle işletim sistemi diski ile veri diskini karıştırmak veri kaybına yol açabilir. /dev/mapper/ adları içindeki çift tireler LVM ad kaçışından kaynaklanabilir; isimleri tahmin etmek yerine lvs çıktısını kullanın.
| Katman | Kontrol | Aranan bilgi |
|---|---|---|
| Disk/bölüm | lsblk |
Yeni disk boyutu ve bölümün boyutu |
| PV | pvs |
Fiziksel birim boyutu ve kullanılabilir alan |
| VG | vgs |
LV'ye atanabilecek VFree |
| LV | lvs |
Hedef LV'nin boyutu ve türü |
| Dosya sistemi | findmnt, df |
XFS türü, doğru bağlama noktası ve kullanılabilir alan |
Değişiklik öncesi kayıt ve yedek
Önce uygulama verisinin geri yüklenebilir yedeğini alın. Hipervizör snapshot'ı tek başına veritabanı tutarlılığı veya bağımsız yedek garantisi değildir. LVM metadata yedeği de dosyaların yedeği değildir. Bu ayrım büyütme işleminin geri dönüşünü planlarken belirleyicidir.
Aşağıdaki komutlar envanter çıkarır; boyut değiştirmez:
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS
findmnt -T /srv/app -o SOURCE,FSTYPE,TARGET,OPTIONS
df -hT /srv/app
sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free
sudo lvs -a -o lv_name,vg_name,lv_size,segtype,devices
findmnt sonucu xfs değilse XFS adımına geçmeyin. lvs içinde thin, thin-pool, raid gibi türler varsa bu örneğin kapsamı dışındasınız. Çıktıları tarihli değişiklik kaydına ekleyin. Kullanılan LVM ve XFS araç sürümlerini lvm version ve xfs_growfs -V ile kaydedin; dağıtımın kendi sürüm belgelerini esas alın.
LVM metadata'sını ayrıca saklayabilirsiniz:
sudo vgcfgbackup vg_data
Bu komutun ürettiği kayıt, veri yedeğinin yerine geçmez. Dosya sisteminin içeriğini eski boyuta geri taşımaz.
Hangi adımlara ihtiyacınız var?
VG içinde yeterli VFree zaten varsa: Disk, bölüm ve PV adımlarını atlayın; doğrudan hedef LV'yi büyütün. Kullanılabilir kapasiteyi tekrar diske eklemeye çalışmak gereksizdir.
Disk büyüdü, PV'nin bulunduğu bölüm eski boyutta kaldıysa: Önce bölümü, ardından PV'yi büyütün. Bölümün arkasında bitişik boş alan bulunmalıdır.
PV doğrudan bütün diskin üzerindeyse: Ortada /dev/sdb1 gibi bir bölüm olmayabilir. Bölüm büyütme komutu kullanmayın; doğru disk cihazındaki PV için pvresize adımını değerlendirin.
Yeni ve ayrı bir disk eklendiyse: Bu, mevcut diski büyütmekten farklıdır. Yeni cihazda PV oluşturma ve VG'ye ekleme gerekir. Mevcut verili diskte pvcreate çalıştırmak bu rehberin hiçbir adımı değildir.
1. İşletim sisteminin yeni disk kapasitesini gördüğünü doğrulayın
Sanal diskin kapasitesini önce depolama veya hipervizör tarafında artırın. Ardından lsblk ile işletim sisteminin gördüğü disk boyutunu karşılaştırın. Eski boyut görünüyorsa bölüm veya LVM komutları yeni alanı oluşturamaz.
Diskin yeniden taranması cihaz türüne ve sanallaştırma platformuna bağlıdır. SCSI, NVMe ve multipath için tek bir evrensel yeniden tarama komutu yoktur. Platformun desteklediği yöntemi uygulayın; üretim sisteminde rastgele /sys yollarına yazmayın. Yeni disk boyutu doğrulanmadan devam etmeyin.
2. Yalnızca bölüm tabanlı PV için bölümü büyütün
Örneğimizde /dev/sdb1, /dev/sdb diskinin son bölümüdür. growpart kuruluysa önce değişiklik yapmayan önizlemeyi alın:
sudo growpart -N /dev/sdb 1
Önizlemede hedefin doğru bölüm olduğunu ve başlangıç sektörünün değişmediğini kontrol edin. Sonuç uygunsa:
sudo growpart /dev/sdb 1
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/sdb
Burada disk ile bölüm numarası ayrı argümanlardır. NVMe örneğinde disk /dev/nvme1n1, bölüm numarası 1 olur; komutun ilk argümanı /dev/nvme1n1p1 değildir. Bölümün sonrasında başka bir bölüm varsa bu örnekle ilerlemeyin. Bölümü silip yeniden oluşturmayı, başlangıç sektörünü taşımayı veya dosya sistemini yeniden biçimlendirmeyi çözüm olarak kullanmayın.
İşletim sistemi bölüm tablosunun güncellenmesini reddederse çıktıyı inceleyin. Kesintisiz büyütme her sistemde garanti değildir; desteklenen yeniden okuma veya bakım penceresi gerekebilir.
3. PV'nin yeni alanı görmesini sağlayın
Bölüm boyutu doğrulandıktan sonra PV'yi büyütün:
sudo pvresize /dev/sdb1
sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free
pvresize, bu örnekte PV'nin mevcut blok cihazı kapasitesini yeniden değerlendirir. VG içindeki boş alanın arttığını görmelisiniz. Artmadıysa yanlış PV, güncellenmemiş bölüm boyutu veya ek depolama katmanı olasılığını araştırın. --setphysicalvolumesize ile tahmini bir boyutu zorlamayın.
4. Hedef LV'ye kontrollü miktarda alan ekleyin
VG'de yeterli boşluk varsa örneğin 20 GiB ekleyin:
sudo lvextend -L +20G /dev/vg_data/lv_app
sudo lvs -o lv_name,vg_name,lv_size,segtype,devices
+20G, mevcut boyuta alan ekler; 20G ise hedef toplam boyutu ifade eder. Bu farkı gözden kaçırmayın. -l +100%FREE tüm boş extents'i hedef LV'ye ayırır; başka LV'ler, snapshot veya büyüme rezervi için alan bırakmaz. Bu nedenle kapasite planı olmadan tüm boşluğu tüketmek yerine açık bir artış miktarı kullanıyoruz.
Bu adımın ardından lvs yeni boyutu, df ise hâlâ eski dosya sistemi boyutunu gösterebilir. Bu beklenebilir: LV ve dosya sistemi farklı katmanlardır.
5. Bağlı XFS dosya sistemini büyütün
Doğru bağlama noktasını bir kez daha doğrulayıp XFS'yi genişletin:
findmnt -T /srv/app -o SOURCE,FSTYPE,TARGET
sudo xfs_growfs -d /srv/app
df -hT /srv/app
/srv/app bağlı XFS'nin hedefidir. xfs_growfs, alttaki LV'yi büyütmez; LV adımı tamamlanmış olmalıdır. resize2fs XFS için uygun araç değildir. İki adımı açık göstermek, LV büyütmesi başarılı olup dosya sistemi adımı başarısız kaldığında hangi işlemin tamamlandığını ayırt etmeyi kolaylaştırır.
Sonucu hangi kanıtlarla kabul edeceksiniz?
Başarı ölçütü komutun yalnızca sıfır çıkış kodu vermesi değildir. Envanteri tekrar alın ve üç karşılaştırma yapın: PV/VG toplam kapasitesi doğru mu; hedef LV planlanan miktarda büyüdü mü; aynı bağlama noktasındaki XFS yeni kapasiteyi gösteriyor mu? Mevcut dosyaların okunabildiğini, uygulamanın kontrollü bir yazma işlemini tamamladığını ve yeni disk/dosya sistemi hatası kaydedilmediğini ayrıca kontrol edin.
sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free
sudo lvs -o lv_name,vg_name,lv_size
findmnt -T /srv/app -o SOURCE,FSTYPE,TARGET
df -hT /srv/app
Sık görülen hatalar
| Belirti | Kontrol ve sonraki adım |
|---|---|
Insufficient free space |
vgs ile boş extents'i kontrol edin. PV büyümesi tamamlanmadan LV'ye alan atanamaz. |
data size unchanged |
lvs ile alttaki LV boyutunu, findmnt ile doğru XFS bağlama noktasını kontrol edin. |
not a mounted XFS filesystem |
Yanlış yol veya farklı dosya sistemi türü olabilir; findmnt -T sonucunu doğrulayın. |
Disk büyüdü, pvs değişmedi |
Bölüm boyutunu ve pvresize hedefini karşılaştırın. |
| Dosya sisteminde boş alan var ama yazılamıyor | İzin, kota, inode, salt okunur bağlama ve uygulama hatalarını inceleyin; tekrar LV büyütmek tek başına çözüm değildir. |
Geri dönüş ve sınırlar
Bu işlem zincirinin tersini komutları ters sırayla çalıştırarak uygulamayın. RHEL 9 gibi dağıtımların desteklediği XFS sürümlerinde dosya sistemi küçültme desteğini varsaymayın. Daha yeni upstream araçlardaki yetenekler dağıtımınızın çekirdek ve destek politikasına otomatik olarak taşınmaz. Dosya sisteminden küçük bir LV oluşturmak veri kaybına yol açabilir. Yanlış kapasite tahsisinin düzeltilmesi gerekiyorsa doğrulanmış yedekten yeni, uygun boyutlu bir dosya sistemine geri yükleme planı hazırlayın.
Sık sorulan sorular
Yeniden başlatma kesinlikle gerekmiyor mu?
Bağlı XFS büyütülebilir; ancak disk ve bölüm boyutunun çalışan sistem tarafından tanınması platforma bağlıdır. Bu nedenle başlıktaki kesintisiz büyütme bir yetenektir, her altyapıda sıfır kesinti garantisi değildir.
lvextend -r kullanabilir miyim?
LVM'nin --resizefs seçeneği desteklenen araçlarla dosya sistemini de büyütmeyi deneyebilir. Burada katmanların ayrı doğrulanabilmesi için lvextend ve xfs_growfs ayrı gösterildi. Dağıtımınızın LVM araçları ve dosya sistemi yardımcıları için destek belgesini kontrol edin.
Ağ yapılandırması yapmam gerekiyor mu?
Hayır. Bu senaryoda DNS, Netplan veya güvenlik duvarı değişikliği yoktur. İşlem mevcut blok depolama kapasitesinin doğru katmanlara aktarılmasıdır.
Kaynaklar
- Red Hat Enterprise Linux 9 — XFS dosya sistemini büyütme
- LVM2 pvresize kılavuzu
- LVM2 lvextend kılavuzu
- xfsprogs xfs_growfs kılavuzu
- Ubuntu growpart kılavuzu
Yazar: Hamza Deniz Yılmaz. Teknik gözden geçirme: 29 Ekim 2026. Komutlar örnek cihaz düzeni içindir; kullanılan sürüm ve gerçek test sonuçları uygulama kaydında ayrıca belirtilmelidir.