Sunucu Yönetimi & Linux

    LVM ile Mantıksal Disk Yönetimi

    LVM ile fiziksel diskleri esnek mantıksal birimlere dönüştürüp kesintisiz büyütme ve snapshot alma rehberi.

    12 dk okuma Güncellendi: 10 Temmuz 2026

    Bir sunucuyu ilk kurduğunuzda diskin nasıl bölümleneceği sonradan başınızı en çok ağrıtan kararlardan biridir. Klasik bölümleme (partition) mantığında / için 20 GB, /var için 30 GB ayırdınız diyelim; altı ay sonra veritabanı büyüyünce /var doldu, /home ise bomboş duruyor. Klasik fdisk düzeninde bu iki bölümü birbirine aktarmanın kolay bir yolu yoktur; genellikle yedek alıp, diski yeniden bölümleyip, veriyi geri yazmak gerekir. Yani planlanmış bir kesinti demek. İşte LVM tam olarak bu esnekliği ortadan kaldıran katı yapıyı yumuşatmak için vardır.

    LVM (Logical Volume Manager), fiziksel diskler ile dosya sistemi arasına ince bir soyutlama katmanı koyar. Diskleri doğrudan bölümlemek yerine onları bir "havuza" atar, bu havuzdan istediğiniz boyutta mantıksal birimler keser ve bu birimleri sonradan diski hiç yeniden bölümlemeden büyütebilir, snapshot'ını alabilir, hatta birden fazla diski tek bir mantıksal disk gibi gösterebilirsiniz. Bu yazıda LVM'in üç temel katmanını, sıfırdan bir yapı kurmayı, çalışan bir sunucuyu kesintisiz büyütmeyi ve snapshot ile güvenli işlem yapmayı kıdemli bir sistem yöneticisinin masanın karşısına oturup anlattığı netlikte ele alacağız.

    LVM'in Üç Katmanı: PV, VG ve LV#

    LVM'i anlamak istiyorsanız, önce üç kavramı zihninize doğru yerleştirmeniz gerekir. Bu üçlü, LVM'in tüm mantığını oluşturur ve komutların neredeyse tamamı bu katmanların baş harfleriyle başlar.

    PV (Physical Volume — Fiziksel Birim): LVM'e sunduğunuz ham depolama alanıdır. Bu bir bütün disk (/dev/sdb) olabileceği gibi bir bölüm (/dev/sdb1) de olabilir. pvcreate komutuyla bir disk PV'ye dönüştürüldüğünde LVM üzerine bir etiket ve meta veri alanı yazar; artık o disk LVM havuzuna katılmaya hazırdır.

    VG (Volume Group — Birim Grubu): Bir veya birden fazla PV'yi tek bir mantıksal havuzda birleştiren katmandır. VG'yi büyük bir su deposu gibi düşünün: içine ne kadar PV atarsanız kapasitesi o kadar artar. Sunucunuza yeni bir disk taktığınızda o diski PV yapıp mevcut VG'ye eklersiniz ve deponuz büyür. Uygulamalar VG'nin kaç diskten oluştuğunu bilmez.

    LV (Logical Volume — Mantıksal Birim): VG havuzundan kestiğiniz, üzerine dosya sistemi kuracağınız gerçek kullanım birimidir. Klasik dünyadaki "partition" karşılığıdır ama esnektir. /dev/vg_data/lv_web gibi bir yol üzerinden erişilir, biçimlendirilir ve mount edilir. Bir LV'nin en güzel yanı, VG'de boş yer olduğu sürece çalışırken büyüyebilmesidir.

    Bu katmanları alttan üste doğru şöyle özetleyebiliriz:

    KatmanNe İşe YararÖrnek Adlandırmaİlgili Komutlar
    PVHam diski LVM'e tanıtır/dev/sdb, /dev/sdcpvcreate, pvs, pvdisplay
    VGPV'leri havuzda birleştirirvg_datavgcreate, vgextend, vgs
    LVHavuzdan kullanılabilir birim keserlv_web, lv_dblvcreate, lvextend, lvs

    Zihinsel model şu: fiziksel diskler (PV) → tek bir havuz (VG) → o havuzdan kesilen dilimler (LV) → üzerine dosya sistemi. Bir sunucunun disk düzenini anlamak istediğinizde pvs, vgs ve lvs komutlarını arka arkaya çalıştırmak, üç katmanın tamamını saniyeler içinde önünüze getirir.

    Sıfırdan Bir LVM Yapısı Kurmak#

    Teoriyi bir kenara bırakıp gerçek bir kurulum yapalım. Sunucuya yeni bir disk (/dev/sdb) taktığınızı ve bunu tamamen LVM ile yöneteceğinizi varsayalım. Önce sistemin diski gördüğünü doğrulayalım:

    # Bağlı blok cihazları listele
    lsblk
    
    # LVM araçlarının kurulu olduğundan emin ol (Debian/Ubuntu)
    apt install -y lvm2
    
    # CentOS/AlmaLinux/Rocky için
    dnf install -y lvm2
    

    Diskin /dev/sdb olarak boş göründüğünü doğruladıktan sonra üç adımı sırayla uygularız. Önce diski fiziksel birime dönüştürelim:

    # 1) Diski PV yap
    pvcreate /dev/sdb
    
    # 2) Bu PV'den bir birim grubu (VG) oluştur
    vgcreate vg_data /dev/sdb
    
    # 3) VG'nin tamamından bir mantıksal birim (LV) kes
    lvcreate -l 100%FREE -n lv_web vg_data
    

    Burada -l 100%FREE ifadesi "VG'de boş olan tüm alanı bu LV'ye ver" demektir. Sabit bir boyut isteseydiniz -L 50G şeklinde de yazabilirdiniz; ileride büyütme planınız varsa VG'nin bir kısmını boş bırakmak akıllıcadır. Şimdi bu mantıksal birimin üzerine bir dosya sistemi kurup mount edelim:

    # Dosya sistemi oluştur (ext4)
    mkfs.ext4 /dev/vg_data/lv_web
    
    # Mount noktası oluştur ve bağla
    mkdir -p /srv/web
    mount /dev/vg_data/lv_web /srv/web
    
    # Kalıcı olması için fstab'a ekle (UUID ile önerilir)
    blkid /dev/vg_data/lv_web
    

    /etc/fstab dosyasına eklerken cihaz adı yerine UUID kullanmak, disk sıralaması değişse bile mount'un bozulmamasını sağlar:

    UUID=8f3a1c2b-1234-4d5e-9abc-1122334455ee  /srv/web  ext4  defaults  0  2
    

    Kurulum tamamlandığında df -h /srv/web çıktısında yeni birimi tüm kapasitesiyle görürsünüz. Bu noktada henüz LVM'in klasik bölümlemeden farkı belirgin değil; asıl fark, altı ay sonra disk dolduğunda ortaya çıkar. İşin bu tarafını yeni bir müşteriye anlatırken hep şunu söylerim: kurulum aynı, ama LVM'de "sonrası" çok daha rahattır.

    Disk Ekleyerek Birimi Kesintisiz Büyütmek#

    LVM'in en çok işe yarayan yeteneği budur. Sunucudaki /srv/web doldu ve hizmeti hiç durdurmadan alanı iki katına çıkarmanız gerekiyor. Bulut sağlayıcınızdan sunucuya yeni bir disk (/dev/sdc) eklediğinizi varsayalım. Süreç üç mantıksal adımdan oluşur: yeni diski PV yap, mevcut VG'ye ekle, LV'yi büyüt ve son olarak dosya sistemini genişlet.

    # Yeni diski gördüğünü doğrula
    lsblk
    
    # 1) Yeni diski PV'ye dönüştür
    pvcreate /dev/sdc
    
    # 2) Mevcut VG'ye ekle — havuz büyüdü
    vgextend vg_data /dev/sdc
    
    # 3) LV'ye yeni boş alanın tamamını ver
    lvextend -l +100%FREE /dev/vg_data/lv_web
    

    Bu üç komuttan sonra mantıksal birim büyümüştür ama üzerindeki dosya sistemi hâlâ eski boyutu bilir. Son adım, dosya sistemini yeni sınırlara kadar genişletmektir. Kritik nokta şudur: bu işlem birim mount'luyken (yani hizmet ayaktayken) yapılabilir.

    # ext4 için (mount'luyken çalışır)
    resize2fs /dev/vg_data/lv_web
    
    # XFS kullanıyorsanız komut farklıdır ve mount noktası verilir
    xfs_growfs /srv/web
    

    Burada dikkat edilmesi gereken bir dosya sistemi ayrımı var. ext4, hem büyütme hem küçültmeyi destekler ve resize2fs ile çevrimiçi büyür. XFS ise yalnızca büyümeyi destekler, küçülemez ve xfs_growfs komutuyla mount noktası üzerinden genişletilir. Aşağıdaki tablo bu farkları özetler:

    İşlemext4XFS
    Çevrimiçi büyütmeEvet (resize2fs)Evet (xfs_growfs)
    KüçültmeEvet (unmount gerekir)Hayır
    Kullanılan komutresize2fsxfs_growfs
    ArgümanCihaz yoluMount noktası

    lvextend komutunda küçük bir kolaylık daha var: LV büyütme ve dosya sistemi genişletmeyi tek komutta birleştirebilirsiniz. -r (veya --resizefs) bayrağı, uygun dosya sistemi aracını otomatik çağırır:

    # LV'yi 50 GB büyüt VE dosya sistemini otomatik genişlet
    lvextend -L +50G -r /dev/vg_data/lv_web
    

    Tüm bu akışın en değerli tarafı, tek bir saniyelik kesinti olmadan tamamlanmasıdır. Web sunucunuz, veritabanınız veya WordPress kurulumunuz çalışmaya devam ederken disk alanı büyür. Aynı esnekliği yönetimli hizmetlerimizde de sunuyoruz; kaynak ihtiyacınız arttığında planınızı büyütme yaklaşımımızı sunucu yönetimi sayfamızda inceleyebilirsiniz. Disk dolduğunda alarma geçmemek için ayrıca disk kotası ve inode yönetimi rehberimize göz atmanızı öneririm.

    LVM Snapshot: Güvenli İşlemin Sigortası#

    Snapshot (anlık görüntü), LVM'in klasik bölümlemede karşılığı olmayan en güçlü özelliklerinden biridir. Bir LV'nin belirli bir andaki durumunu "dondurur"; sonrasında ana birimde yapılan her değişiklik snapshot'a dokunmaz. Bu sayede riskli bir işleme girmeden önce (paket güncellemesi, veritabanı şema değişikliği, büyük bir taşıma) bir geri dönüş noktası oluşturabilirsiniz. İşler ters giderse snapshot'a geri dönersiniz; her şey yolunda giderse snapshot'ı silersiniz.

    Snapshot, aslında ana LV ile aynı VG'den kesilen özel bir LV'dir. Çalışma mantığı "copy-on-write" (yazma sırasında kopyala) prensibine dayanır: snapshot alındığı anda hiç yer kaplamaz, yalnızca ana birimdeki bir blok değiştikçe o bloğun eski hali snapshot alanına kopyalanır. Bu yüzden snapshot boyutunu, ana birimde ne kadar değişiklik bekliyorsanız ona göre belirlersiniz.

    # lv_web'in anlık görüntüsünü al (5 GB değişikliğe yetecek alan)
    lvcreate -L 5G -s -n lv_web_snap /dev/vg_data/lv_web
    
    # Mevcut LV'leri listele — snapshot 'Origin' sütununda ana birimi gösterir
    lvs
    

    Diyelim ki riskli bir güncelleme yaptınız ve sistem bozuldu. Ana birimi snapshot'ın alındığı ana geri döndürmek için lvconvert --merge kullanılır:

    # Ana birimi snapshot durumuna geri döndür (merge)
    lvconvert --merge /dev/vg_data/lv_web_snap
    

    Ana birim o an mount'luysa merge işlemi bir sonraki mount'ta (genellikle yeniden başlatmada) tamamlanır; kök dosya sistemi için bu neredeyse her zaman gerekir. İşler yolundaysa ve geri dönmeye ihtiyaç yoksa snapshot'ı silerek işgal ettiği alanı serbest bırakırsınız:

    # Snapshot'ı kaldır (değişiklikler ana birimde kalır)
    lvremove /dev/vg_data/lv_web_snap
    

    Snapshot'ların en yaygın ve sağlam kullanımı yedeklemedir. Çalışan bir veritabanının dosyalarını doğrudan kopyalamak tutarsız (corrupt) yedek üretir; çünkü kopyalama sürerken veriler değişir. Bunun yerine anlık bir snapshot alır, o snapshot'ı geçici olarak mount edip yedeği ondan alırsınız. Böylece yedek, tek bir tutarlı ana ait olur:

    # 1) Tutarlı yedek için snapshot al
    lvcreate -L 10G -s -n db_snap /dev/vg_data/lv_db
    
    # 2) Snapshot'ı salt-okunur mount et
    mkdir -p /mnt/db_snap
    mount -o ro /dev/vg_data/db_snap /mnt/db_snap
    
    # 3) Yedeği snapshot'tan al
    tar czf /backup/db-$(date +%F).tar.gz -C /mnt/db_snap .
    
    # 4) Temizlik
    umount /mnt/db_snap
    lvremove -y /dev/vg_data/db_snap
    

    Bir uyarı: snapshot'ın ayrılan alanı dolarsa (ana birimde beklediğinizden fazla değişiklik olursa) snapshot geçersiz hale gelir. Bu yüzden uzun süreli snapshot'lardan kaçının; onları kısa ömürlü bir sigorta gibi kullanın. Snapshot temelli, sunucu tarafında yönetilen düzenli yedeklemeyi tek başınıza kurmak istemiyorsanız yedekleme hizmetimiz bu döngüyü sizin için otomatikleştirir.

    LVM ile Klasik Bölümlemenin Karşılaştırması#

    Neden klasik fdisk bölümlemesi yerine LVM tercih edilir sorusunun cevabını somutlaştıralım. İki yaklaşımı gerçek senaryolar üzerinden karşılaştırdığımızda fark net biçimde ortaya çıkar.

    ÖzellikKlasik BölümlemeLVM
    Bölümü büyütmeGenellikle yeniden bölümleme ve kesinti gerekirÇevrimiçi, komutla büyür
    Birden çok diski birleştirmeDoğrudan mümkün değilVG ile tek havuz
    Snapshot almaYokYerleşik destek
    Boyutu sonradan değiştirmeZor ve riskliRutin işlem
    Diskler arası veri taşımaManuel kopyalamapvmove ile çevrimiçi
    Kurulum karmaşıklığıBasitBir kat daha fazla katman

    Klasik bölümlemenin tek gerçek avantajı sadeliğidir: tek diskli, boyutu asla değişmeyecek küçük bir sistemde LVM'in ek katmanına gerek yoktur. Ancak üretim sunucularının büyük çoğunluğunda ihtiyaçlar zamanla değişir ve işte bu değişimi kesintisiz karşılayan tek yaklaşım LVM'dir.

    LVM'in bir başka az bilinen gücü pvmove komutudur. Eski bir diski sistemden çıkarmak istediğinizde, üzerindeki veriyi çalışan sistemi hiç durdurmadan başka bir PV'ye taşıyabilirsiniz:

    # /dev/sdb üzerindeki tüm veriyi VG içindeki başka PV'lere taşı
    pvmove /dev/sdb
    
    # Boşalan diski VG'den çıkar
    vgreduce vg_data /dev/sdb
    
    # PV etiketini de kaldır
    pvremove /dev/sdb
    

    Bu, arızalanmaya başlayan bir diski canlı sistemden emekli etmenin en zarif yoludur. Klasik bölümlemede bu işlem tam bir bakım penceresi, yedek ve geri yükleme demekken LVM'de birkaç komutluk çevrimiçi bir operasyona iner.

    Üretimde LVM İçin İyi Uygulamalar#

    Yıllar içinde onlarca sunucuda LVM yönetirken oturmuş birkaç pratik var; bunları baştan uygularsanız ileride kendinize teşekkür edersiniz. Bunlar kural değil ama sahadan gelen alışkanlıklardır.

    Birincisi, VG'yi ilk kurulumda %100 doldurmayın. Kapasitenin bir miktarını (örneğin %10-15) boş bırakmak, snapshot almak için her zaman elinizin altında alan bulunması demektir. Snapshot alanı olmadan güvenli yedek döngüsü kuramazsınız.

    İkincisi, anlamlı isimlendirme kullanın. vg_data, lv_web, lv_db gibi işlevi belli isimler, altı ay sonra sunucuya döndüğünüzde hangi birimin ne olduğunu tahmin etmenize gerek bırakmaz. vg0 ve lv0 gibi genel isimler kısa vadede hızlıdır ama uzun vadede kafa karıştırır.

    Üçüncüsü, her büyütme işleminden önce mevcut durumu kaydedin. pvs, vgs ve lvs çıktılarını bir yere not alın; bir şey ters giderse "önceki hâl" elinizde olur. Ayrıca VG meta verisini yedeklemeyi alışkanlık edinin:

    # VG yapılandırmasını yedekle
    vgcfgbackup vg_data
    
    # Sistem genelinde LVM durumunu tek bakışta gör
    pvs && vgs && lvs
    

    Dördüncüsü, kök dosya sistemini (/) LVM üzerine kurduysanız, büyütme ve snapshot senaryolarını kurmadan önce bir test sunucusunda deneyin. Kök birimin merge işlemi yeniden başlatma gerektirir ve production'da ilk kez denemek isteyeceğiniz bir şey değildir. Bu tür kritik işlemleri planlarken güvenli bir başlangıç noktası için önce bir swap alanı oluşturma yapılandırmasını da gözden geçirmek, bellek baskısı altında sistemin nasıl davranacağını bilmenizi sağlar.

    Beşincisi, tüm bu esnekliği tam kontrol edebileceğiniz bir altyapıda kullanmak isterseniz kök erişimli bir sanal ya da fiziksel sunucu gerekir. LVM, diske doğrudan root erişimi olan VDS sunucularımızda ve sanal sunucularımızda tam olarak desteklenir; paylaşımlı hosting ortamlarında ise disk düzeni sizin yerinize yönetilir.

    Sıkça Sorulan Sorular#

    LVM performansı yavaşlatır mı?#

    Hayır, pratikte hissedilir bir yavaşlama yaşamazsınız. LVM ince bir soyutlama katmanı ekler ama bu katmanın maliyeti çekirdek seviyesinde son derece düşüktür; normal okuma/yazma iş yüklerinde ölçülebilir bir fark neredeyse yoktur. Tek istisna, aktif ve dolmaya yakın bir snapshot bulundurmaktır. Snapshot açıkken her yazma işlemi copy-on-write nedeniyle ek iş üretir, bu yüzden snapshot'ları kısa ömürlü tutmanız önerilir.

    ext4 birimini küçültebilir miyim, XFS'i küçültemez miyim?#

    Evet, ext4 küçültmeyi destekler ama XFS desteklemez. ext4 birimini küçültmek için önce dosya sistemini unmount etmeniz, resize2fs ile dosya sistemini küçük hedefe indirmeniz, ardından lvreduce ile LV'yi düşürmeniz gerekir; sıralama kritiktir çünkü LV'yi dosya sisteminden küçük yaparsanız veri kaybedersiniz. XFS'te ise küçültme hiçbir şekilde mümkün değildir; alanı geri almanız gerekiyorsa yedek alıp birimi yeniden oluşturmak zorunda kalırsınız.

    Snapshot tam bir yedek yerine geçer mi?#

    Hayır, snapshot bir yedek değildir; kısa vadeli bir geri dönüş noktasıdır. Snapshot ana birimle aynı fiziksel diskler üzerinde durur, dolayısıyla disk arızalanırsa hem ana birim hem snapshot birlikte kaybolur. Doğru kullanım, snapshot'ı tutarlı bir yedek almak için geçici olarak kullanıp yedeği başka bir konuma (harici disk, uzak sunucu, nesne depolama) yazmaktır. Kalıcı koruma için snapshot'ı bağımsız bir yedekleme çözümüyle birlikte kullanın.

    Bir VG'ye kaç disk ekleyebilirim?#

    Pratik olarak ihtiyacınız olduğu kadar; LVM'in disk sayısı sınırı gündelik kullanımda karşılaşacağınız bir sınır değildir. Bir VG'ye onlarca PV ekleyip devasa bir havuz oluşturabilirsiniz. Ancak tek bir VG'yi çok sayıda ayrı diske yaymanın bir riski vardır: o disklerden herhangi biri arızalanırsa (RAID veya benzeri bir koruma yoksa) VG'nin bütünlüğü tehlikeye girer. Bu yüzden çok diskli VG'leri genellikle bir RAID katmanının üzerine kurmak en sağlam yaklaşımdır.

    LVM'i mevcut, veri dolu bir diske sonradan ekleyebilir miyim?#

    Doğrudan hayır; pvcreate bir diski PV'ye dönüştürürken üzerine meta veri yazar ve bu, o diskteki mevcut dosya sistemini geçersiz kılar. Yani üzerinde veri olan bir diski olduğu gibi LVM'e alamazsınız. Yapılması gereken, veriyi başka bir yere yedeklemek, diski LVM ile yeniden yapılandırmak ve veriyi geri yazmaktır. Bu nedenle LVM kararını sunucu kurulumunun en başında vermek, sonradan taşıma zahmetinden kurtarır; yeni bir sunucu planlıyorsanız VDS veya sanal sunucu kurulumunda LVM'i baştan tercih etmek en pratik yoldur.

    Kapanış#

    LVM, disk yönetimini "bir kere kur ve bir daha dokunma" katılığından çıkarıp yaşayan, ihtiyaca göre şekil alan bir yapıya dönüştürür. PV ile diski tanıtır, VG ile havuzda toplar, LV ile kullanılabilir birimler kesersiniz; sonra disk dolduğunda tek bir kesinti olmadan büyütür, riskli işlemlerden önce snapshot ile sigortanızı yaptırır, arızalanan diski pvmove ile canlı sistemden emekli edersiniz. Bir kez bu esnekliğe alıştığınızda klasik bölümlemeye geri dönmek zor gelir.

    Bu esnekliği tam anlamıyla kullanabilmek için kök erişimli, kaynaklarını kendiniz yönetebileceğiniz bir altyapı gerekir. Clou.TR olarak VDS ve sanal sunucu planlarımızda LVM'i baştan sona kurmanıza olanak tanıyor, kurulumu ve büyütme senaryolarını sizin adınıza üstlenebileceğimiz sunucu yönetimi hizmetimizle yalnız bırakmıyoruz. Snapshot temelli düzenli yedekleme için yedekleme çözümlerimizi, mevcut bir sistemi taşımak içinse site taşıma hizmetimizi inceleyebilir; hangi sunucunun ihtiyacınıza uyduğundan emin değilseniz tüm sunucu seçeneklerimize göz atabilirsiniz. Diskleriniz büyüsün, ama kesintiler büyümesin.

    LVMDiskLinux

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.