Elbette, uzman bir sistem yöneticisinin bakış açısıyla Linux LVM disk genişletme ve snapshot alma konularını ele alan teknik bir blog yazısı:
Linux LVM: Esnek Disk Yönetimi ve Anlık Görüntülerle Güçlendirme
Sistem yöneticileri olarak, sunucularımızdaki disk alanının yönetiminde esneklik ve güvenlik bizim için hayati öneme sahiptir. Linux Logical Volume Manager (LVM), bu ihtiyaçları karşılamak için güçlü bir soyutlama katmanı sunar. Fiziksel diskleri mantıksal birimlere dönüştürerek, disk alanını dinamik olarak genişletme, küçültme ve hatta anlık görüntüler (snapshot) alma yeteneği sağlar.
Bu yazıda, mevcut bir LVM kurulumunda disk alanını nasıl genişleteceğimizi ve kritik veriler üzerinde işlem yapmadan önce nasıl anlık görüntü alacağımızı adım adım inceleyeceğiz.
LVM Temelleri Hızlı Bir Bakış
Başlamadan önce LVM’in temel bileşenlerini hatırlayalım:
- Fiziksel Birimler (PV – Physical Volumes): Fiziksel disk bölümleri veya disklerin kendileri.
- Birim Grupları (VG – Volume Groups): Bir veya daha fazla PV’den oluşan ve depolama havuzu görevi gören bir gruplandırma.
- Mantıksal Birimler (LV – Logical Volumes): VG’den tahsis edilen ve işletim sistemi tarafından standart bir bölüm gibi kullanılan birimler.
LVM Disk Alanı Genişletme
Bir LVM mantıksal birimini genişletmenin birkaç yolu vardır. En yaygın senaryo, sisteme yeni bir fiziksel disk ekleyerek veya mevcut bir disk bölümünü genişleterek bir Birim Grubu’na daha fazla alan sağlamak ve ardından bu alanı bir Mantıksal Birim’e tahsis etmektir.
Adım 1: Yeni Fiziksel Diski Tanımlama ve Bölümlendirme
Öncelikle, sisteme eklediğiniz yeni diski tanımlayın. Genellikle /dev/sdb, /dev/sdc gibi isimlerle görünür. Ardından, LVM için uygun bir bölüm oluşturmanız gerekir (tip 8e).
Diskinizi kontrol edin:
lsblk
fdisk -l
Yeni diski (örneğin /dev/sdb) LVM için bölümlendirin:
fdisk /dev/sdb
# Komutlar sırasıyla:
# n (yeni bölüm oluştur)
# p (birincil bölüm)
# 1 (bölüm numarası)
# Enter (varsayılan başlangıç sektörü)
# Enter (varsayılan bitiş sektörü - tüm diski kullanır)
# t (bölüm tipini değiştir)
# 8e (Linux LVM kodu)
# w (değişiklikleri kaydet ve çık)
Değişikliklerin çekirdek tarafından algılanmasını sağlayın:
partprobe /dev/sdb
Adım 2: Yeni Fiziksel Birim (PV) Oluşturma
Oluşturduğunuz yeni LVM bölümünü (örneğin /dev/sdb1) bir Fiziksel Birim haline getirin:
pvcreate /dev/sdb1
Oluşan PV’yi kontrol edin:
pvs
Mevcut Bir PV’nin Altındaki Diski Genişletme Durumu: Eğer fiziksel makinenizde veya sanal makine (VM) seviyesinde mevcut bir diski büyüttüyseniz ve bu disk zaten bir PV olarak kullanılıyorsa, yeni bir PV oluşturmanıza gerek kalmaz. Doğrudan mevcut PV’yi genişletmeniz yeterlidir:
pvresize /dev/sda2 # (örneğin /dev/sda2, genişletilen PV)
Bu komut, PV’nin algıladığı boyutu güncelleyerek Birim Grubu’na daha fazla boş alan ekler.
Adım 3: Fiziksel Birimi Mevcut Birim Grubuna (VG) Ekleme
Yeni oluşturduğunuz veya genişlettiğiniz Fiziksel Birimi, genişletmek istediğiniz Mantıksal Birim’in ait olduğu Birim Grubuna ekleyin. Öncelikle mevcut Birim Gruplarınızı listelemek isteyebilirsiniz:
vgs
Ardından, PV’yi VG’ye ekleyin (örneğin vg_data adlı VG’ye /dev/sdb1‘i eklemek):
vgextend vg_data /dev/sdb1
Birim Grubunuzun güncel durumunu kontrol edin:
vgs
Adım 4: Mantıksal Birimi (LV) Genişletme
Artık Birim Grubunuzda ek boş alan olduğuna göre, bu alanı hedef Mantıksal Birim’e tahsis edebilirsiniz. Önce mevcut Mantıksal Birimleri listeleyelim:
lvs
Mantıksal Birimi belirli bir boyuta (örneğin +50G) genişletebilir veya tüm boş alanı kullanabilirsiniz (+100%FREE):
- Belirli bir boyut ekleme:
lvextend -L +50G /dev/vg_data/lv_apps - Tüm kullanılabilir boş alanı ekleme:
lvextend -l +100%FREE /dev/vg_data/lv_apps
Mantıksal Birim’in yeni boyutunu kontrol edin:
lvs
Adım 5: Dosya Sistemini Yeniden Boyutlandırma
LVM seviyesinde Mantıksal Birimi genişletmiş olsanız bile, işletim sisteminin dosya sistemi katmanının bu yeni alanı kullanabilmesi için onu da yeniden boyutlandırmanız gerekir. Bu adım dosya sisteminizin türüne göre değişir (çoğunlukla ext4 veya xfs).
Dosya sisteminizi kontrol edin (hangi noktaya bağlandığını görmek için):
df -h
- Ext4 dosya sistemi için:
resize2fs /dev/vg_data/lv_appsBu komut, Mantıksal Birimdeki ext4 dosya sistemini otomatik olarak maksimum boyuta genişletir.
- XFS dosya sistemi için:
xfs_growfs /mnt/data # /mnt/data, dosya sisteminin bağlandığı noktadır.xfs_growfskomutu, dosya sistemini bağlandığı noktaya göre genişletir.
Dosya sisteminin genişlediğini doğrulayın:
df -h
LVM Snapshot (Anlık Görüntü) Alma ve Yönetme
LVM snapshot, mevcut bir Mantıksal Birimin “zaman içindeki anlık” kopyasını oluşturan güçlü bir özelliktir. Bu, özellikle bir sistem yükseltmesi, büyük bir konfigürasyon değişikliği veya potansiyel olarak riskli başka bir işlem yapmadan önce çok değerlidir. Bir şeyler ters giderse, Mantıksal Birimi snapshot alındığı andaki durumuna geri döndürebilirsiniz.
Snapshot Nedir ve Neden Kullanılır?
Bir LVM snapshot, orijinal Mantıksal Birim (kaynak LV) üzerinde yapılan değişiklikleri izlemek için “copy-on-write” mekanizmasını kullanır. Snapshot oluşturulduğunda, kaynak LV’nin o anki durumu kaydedilir. Kaynak LV’ye yeni veri yazıldığında, eski veri bloğu snapshot alanına kopyalanır ve snapshot bu eski bloğu okumaya devam eder. Bu sayede, snapshot disk alanı verimli kullanır, çünkü yalnızca değişiklikleri depolar.
Kullanım senaryoları:
- Veri Yedekleme: Tutarlı bir dosya sistemi görüntüsü üzerinde yedekleme yapmak.
- Sistem Geri Yükleme: Kritik bir işlemden önce sistem durumunu kaydetmek ve gerekirse geri dönmek.
- Test Ortamları: Üretim verilerinin bir kopyasını test amacıyla kullanmak.
Snapshot Oluşturma
Bir snapshot oluşturmak için lvcreate komutunu kullanırız. Önemli olan, snapshot’ın kaynak LV’deki potansiyel değişiklikleri depolayacak kadar bir boyuta sahip olması gerektiğidir. Bu boyut, kaynak LV’nin toplam boyutu değil, kaynak LV üzerinde snapshot aktifken meydana gelmesi beklenen değişikliklerin boyutu kadardır.
Örnek olarak, vg_data adlı birim grubundaki lv_apps adlı mantıksal birimin 5GB’lık bir snapshot’ını oluşturalım:
lvs # Kaynak LV'yi görmek için
lvcreate --size 5G --snapshot --name lv_apps_snap /dev/vg_data/lv_apps
Oluşan snapshot’ı kontrol edin:
lvs
Çıktıda lv_apps_snap adında yeni bir LV ve Origin sütununda kaynak LV (lv_apps) görünecektir.
Snapshot Kullanma (Mount Etme)
Snapshot’ı, tıpkı normal bir Mantıksal Birim gibi bağlayabilirsiniz. Bu, snapshot alındığı andaki verilere erişmenizi sağlar.
mkdir /mnt/snap_recovery
mount /dev/vg_data/lv_apps_snap /mnt/snap_recovery
Artık /mnt/snap_recovery dizininde snapshot alındığı andaki verilere erişebilirsiniz.
ls /mnt/snap_recovery
Snapshot’tan Geri Dönme (Rollback)
Eğer bir işlemden sonra sisteminizi snapshot alındığı anki durumuna geri döndürmeniz gerekiyorsa, lvconvert --merge komutunu kullanabilirsiniz. Bu işlem kaynak Mantıksal Birim’deki mevcut tüm verileri siler ve snapshot anındaki durumuyla değiştirir. Bu nedenle çok dikkatli olun!
Geri döndürme işleminden önce, hem snapshot hem de kaynak Mantıksal Birim’in bağlı olmadığından emin olun:
umount /mnt/snap_recovery
umount /dev/vg_data/lv_apps # Kaynak LV'nin bağlı olduğu noktayı ayırın
Ardından, snapshot’ı kaynak LV ile birleştirin:
lvconvert --merge /dev/vg_data/lv_apps_snap
Birleştirme işlemi tamamlandıktan sonra snapshot otomatik olarak silinir ve kaynak Mantıksal Birim, snapshot alındığı anki durumuna geri döner. Dosya sistemini tekrar bağlayıp kullanmaya devam edebilirsiniz.
Snapshot Silme
Snapshot görevi bittikten veya birleştirildikten sonra, disk alanını boşaltmak için onu silmeniz gerekir. Bir snapshot’ı silmek basittir:
umount /mnt/snap_recovery # Önce snapshot'ı ayırın (eğer bağlıysa)
lvremove /dev/vg_data/lv_apps_snap
Snapshot’ın silindiğini onaylayın:
lvs
Önemli Notlar ve En İyi Uygulamalar
- Snapshot Boyutu: Snapshot boyutu, kaynak LV’deki değişiklik miktarına bağlıdır. Eğer değişiklikler snapshot boyutunu aşarsa, snapshot geçersiz hale gelir ve kullanılamaz.
lvs -o +snap_percentkomutu ile snapshot kullanım oranını izleyin. - Performans: Aktif bir snapshot varken, kaynak Mantıksal Birim üzerindeki yazma işlemleri hafif bir performans düşüşü yaşayabilir, çünkü “copy-on-write” mekanizması ek disk I/O’su gerektirir.
- Yedekleme Stratejisi: LVM snapshot’ları hızlı kurtarma ve test için mükemmeldir, ancak geleneksel yedekleme çözümlerinin (tape, offsite yedekleme vb.) yerini tutmaz. Tam teşekküllü bir yedekleme stratejisinin bir parçası olarak kullanılmalıdır.
- Disk Bölümü Tipi: LVM için disk bölümlendirirken, bölüm tipinin (ID)
8e(Linux LVM) olduğundan emin olun.
Sonuç
Linux LVM, sunucu depolama yönetiminde sistem yöneticilerine muazzam bir esneklik ve kontrol sağlar. Disk alanını dinamik olarak genişletme ve anlık görüntülerle kritik işlemleri güvenli bir şekilde gerçekleştirme yeteneği, modern IT altyapılarında vazgeçilmez bir araçtır.
Bu kılavuzdaki adımları takip ederek, LVM disklerinizi verimli bir şekilde yönetebilir ve olası sorunlara karşı hazırlıklı olabilirsiniz. Unutmayın, herhangi bir kritik işlem öncesinde her zaman bir yedekleme yapmak en iyi uygulamadır.
