Harika bir konu! Bir sistem yöneticisi olarak, Linux LVM’in gücünü ve esnekliğini anlamak ve uygulamak kritik öneme sahiptir. İşte size bu konuda teknik bir blog yazısı:
Linux LVM: Disk Alanını Genişletme ve Snapshot Alma Sanatı
Günümüzün dinamik BT altyapılarında depolama yönetimi, sistem yöneticilerinin en önemli görevlerinden biridir. Linux üzerinde depolama esnekliği ve yönetilebilirliği söz konusu olduğunda, Mantıksal Hacim Yöneticisi (LVM) vazgeçilmez bir araçtır. LVM, fiziksel diskleri soyutlayarak mantıksal bir katman sunar; bu sayede disk alanını kolayca genişletebilir, küçültebilir ve hatta kritik anlık görüntüler (snapshots) alabilirsiniz. Bu blog yazısında, LVM kullanarak disk alanını nasıl genişleteceğinizi ve sisteminizin anlık görüntüsünü nasıl alacağınızı adım adım inceleyeceğiz.
LVM Temellerine Hızlı Bir Bakış
Başlamadan önce, LVM’in temel bileşenlerini hatırlayalım:
- Fiziksel Hacimler (PV – Physical Volumes): LVM tarafından kullanılan ham diskler veya disk bölümleridir (örneğin,
/dev/sdb1,/dev/sdc). - Hacim Grupları (VG – Volume Groups): Bir veya daha fazla PV’den oluşur ve LVM’in depolama havuzunu oluşturur. Mantıksal Hacimler bu havuzdan ayrılır.
- Mantıksal Hacimler (LV – Logical Volumes): Bir VG’den ayrılan, tıpkı fiziksel bir bölüm gibi davranan, ancak boyutları kolayca değiştirilebilen alanlardır (örneğin,
/dev/myvg/mylv). Üzerine dosya sistemleri kurulur.
Disk Alanını Genişletme
LVM ile disk genişletme işlemi, ister yeni bir fiziksel disk ekleyerek ister mevcut bir diski büyütme yoluyla olsun, oldukça basittir. İki ana senaryoyu ele alalım.
Senaryo 1: Yeni Bir Fiziksel Disk Ekleme Yoluyla Genişletme
Bu senaryoda, sisteminize yeni bir fiziksel disk (örneğin, /dev/sdb) eklediğinizi varsayıyoruz.
1. Yeni Fiziksel Diski Tanımlama ve Bölümlendirme
Öncelikle yeni diskinizi sistemin tanıdığından emin olun ve ardından LVM için bir bölüm oluşturun.
# lsblk
# fdisk /dev/sdb
n (yeni bölüm oluştur)
p (birincil bölüm)
1 (bölüm numarası)
(varsayılan başlangıç ve bitiş sektörlerini kabul et - tüm diski kullanmak için)
t (bölüm tipini değiştir)
8e (Linux LVM kodu)
w (değişiklikleri kaydet ve çık)
# partprobe # (bölüm tablosu değişikliklerini çekirdeğe bildir)
2. Fiziksel Hacim (PV) Oluşturma
Yeni oluşturduğunuz bölümü bir LVM Fiziksel Hacmi olarak başlatın.
# pvcreate /dev/sdb1
# pvdisplay # (PV'leri kontrol et)
3. Hacim Grubuna (VG) Ekleme
Yeni PV’yi, genişletmek istediğiniz Mantıksal Hacmin bulunduğu mevcut VG’ye ekleyin. Bu örnekte, VG adımızın centos_sunucu olduğunu varsayalım.
# vgextend centos_sunucu /dev/sdb1
# vgdisplay centos_sunucu # (VG'yi kontrol et, Free PE kısmına dikkat)
4. Mantıksal Hacmi (LV) Genişletme
Artık VG’nizde boş alan olduğuna göre, Mantıksal Hacminizi genişletebilirsiniz.
İsterseniz belirli bir boyut (örneğin +50G) belirtebilir veya tüm boş alanı kullanmasını sağlayabilirsiniz.
# lvextend -L +50G /dev/centos_sunucu/root # (LV'ye 50GB ekle)
# lvextend -l +100%FREE /dev/centos_sunucu/root # (VG'deki tüm boş alanı kullan)
# lvdisplay /dev/centos_sunucu/root # (LV boyutunu kontrol et)
5. Dosya Sistemini Genişletme
LV’yi genişletmek yeterli değildir; dosya sisteminin de bu yeni alanı kullanması için genişletilmesi gerekir. Kullandığınız dosya sistemine göre komut değişir (EXT4 için resize2fs, XFS için xfs_growfs).
EXT4 için:
# resize2fs /dev/centos_sunucu/root
XFS için:
# xfs_growfs / # (dosya sistemi mount edilmişse sadece mount noktasını belirtmek yeterlidir)
Son olarak, yeni diskinizin boyutunu kontrol edin.
# df -h
Senaryo 2: Mevcut Fiziksel Diski Büyütme (Özellikle Sanal Makinelerde)
Sanallaştırma ortamlarında (VMware, VirtualBox, KVM vb.) bir sanal diskin boyutunu büyütmek yaygın bir senaryodur. Bu durumda, temel fiziksel disk büyüdükten sonra LVM katmanlarını güncellemeniz gerekir.
1. Sanallaştırma Katmanında Diski Büyütme
Öncelikle, sanal makineyi kapatıp hipervizör arayüzünden ilgili disk alanını artırın. Ardından VM’yi başlatın.
2. Bölüm Tablosunu Güncelleme
Disk büyüdükten sonra, çekirdeğin yeni boyutu görmesi ve bölüm tablosunun güncellenmesi gerekir. Eğer LVM PV’niz doğrudan bir disk üzerinde değil de bir bölüm üzerindeyse (örneğin /dev/sda2), bu bölümü büyütmeniz gerekecektir.
# echo 1 > /sys/class/block/sda/device/rescan # (Diski yeniden tara, sda yerine ilgili diskinizi yazın)
# fdisk /dev/sda
d (eski LVM bölümünü sil - dikkatli olun, aynı başlangıç sektörünü kullanacaksınız!)
n (yeni bölüm oluştur)
p (birincil)
2 (aynı bölüm numarası)
(eski başlangıç sektörünü kabul et)
(yeni son sektörü kabul et - tüm diski kullanmak için)
t (LVM tipini 8e olarak ayarla)
w (kaydet ve çık)
# partprobe # (veya sistemi yeniden başlatın)
Uyarı: fdisk ile bölüm silme ve yeniden oluşturma işlemi risklidir ve yanlış yapılırsa veri kaybına yol açabilir. Eğer mümkünse, growpart gibi daha güvenli araçlar veya doğrudan diskin tamamı LVM PV olarak kullanılıyorsa bu adıma gerek kalmayacaktır.
3. Fiziksel Hacmi (PV) Genişletme
Bölüm büyüdükten veya disk doğrudan büyüdükten sonra, Fiziksel Hacmi de büyütülen alana yayılacak şekilde güncelleyin.
# pvresize /dev/sda2 # (veya doğrudan disk /dev/sda ise)
# pvdisplay # (PV boyutunu kontrol et)
4. Mantıksal Hacim (LV) ve Dosya Sistemini Genişletme
Bu adımlar, Senaryo 1’deki adımlarla aynıdır. VG’nizdeki boş alanı kullanarak LV’nizi genişletin ve ardından dosya sistemini güncelleyin.
# lvextend -l +100%FREE /dev/centos_sunucu/root
# xfs_growfs /
# df -h
LVM Snapshot (Anlık Görüntü) Alma
LVM snapshot’ları, Mantıksal Hacimlerin belirli bir zamandaki anlık görüntülerini almanın mükemmel bir yoludur. Bu, özellikle büyük bir güncelleme yapmadan önce, bir yazılım testi için veya veri kurtarma senaryolarında çok değerlidir.
Snapshot Nedir ve Nasıl Çalışır?
Bir LVM snapshot’ı, orijinal Mantıksal Hacmin (origin LV) kopyası değildir. Daha ziyade, origin LV’de veri değiştiğinde, değişen orijinal veriyi snapshot alanına kopyalayan bir “kopyala-yaz (copy-on-write)” mekanizmasıdır. Bu, anlık görüntülerin çok hızlı oluşturulmasını ve az yer kaplamasını sağlar (başlangıçta sadece metadata).
1. Snapshot Oluşturma
Snapshot almak istediğiniz Mantıksal Hacmin adını ve snapshot için ayırmak istediğiniz boyutu belirtin. Snapshot boyutu, orijinal LV üzerinde ne kadar veri değişikliği beklediğinize bağlıdır.
# lvcreate --size 2G --snapshot --name root-snapshot /dev/centos_sunucu/root
# lvdisplay # (yeni snapshot'ı kontrol et)
Yukarıdaki komut, /dev/centos_sunucu/root Mantıksal Hacminin 2GB boyutunda root-snapshot adında bir anlık görüntüsünü oluşturur.
2. Snapshot’ı Kullanma
Snapshot, orijinal Mantıksal Hacmin bir kopyası gibi davranır. Onu bağlayabilir ve içindeki verilere erişebilirsiniz.
# mkdir /mnt/snapshot
# mount /dev/centos_sunucu/root-snapshot /mnt/snapshot
# ls -l /mnt/snapshot
Artık /mnt/snapshot dizini altında, snapshot alındığı andaki / dosya sisteminin içeriğini görebilirsiniz.
3. Veri Geri Yükleme (Rollback)
Eğer bir hata yaptıysanız ve orijinal Mantıksal Hacmi snapshot durumuna geri döndürmek istiyorsanız, lvconvert --merge komutunu kullanabilirsiniz.
Önemli: Geri yüklenecek orijinal Mantıksal Hacmin bağlı olmaması (unmount edilmiş olması) gerekir. Eğer bu root dosya sistemi ise, sistemi bir kurtarma ortamından (live CD/USB) başlatmanız veya tek kullanıcı moduna geçmeniz gerekebilir.
# umount /mnt/snapshot # (varsa snapshot'ı kaldır)
# umount /dev/centos_sunucu/root # (orijinal LV'yi kaldır - eğer root değilse)
# lvconvert --merge /dev/centos_sunucu/root-snapshot
Bu işlem tamamlandığında, /dev/centos_sunucu/root Mantıksal Hacmi, snapshot alındığı zamanki durumuna geri dönecektir ve snapshot otomatik olarak silinecektir.
4. Snapshot’ı Silme
Snapshot’a artık ihtiyacınız yoksa, onu lvremove ile silebilirsiniz.
# umount /mnt/snapshot # (varsa snapshot'ı kaldır)
# lvremove /dev/centos_sunucu/root-snapshot
Önemli Hususlar ve En İyi Uygulamalar
LVM kullanırken göz önünde bulundurmanız gereken bazı noktalar:
- Snapshot Boyutu: Snapshot için yeterli alan ayırın. Eğer snapshot, orijinal LV’deki değişiklikleri depolamak için yetersiz kalırsa, “snapshot full” durumuna geçer ve kullanılamaz hale gelir.
lvs -o +snap_percentkomutu ile kullanım yüzdesini takip edebilirsiniz. - Performans: Aktif bir snapshot varken, orijinal Mantıksal Hacme yazma işlemleri hafif bir performans düşüşüne neden olabilir, çünkü verinin hem orijinale hem de snapshot alanına yazılması gerekebilir (CoW mekanizması nedeniyle).
- Yedekleme Değildir: Snapshot’lar, anlık geri yükleme veya test için harikadır, ancak tam teşekküllü bir yedekleme çözümü değildir. Disk arızası durumunda snapshot da yok olacaktır. Verilerinizi her zaman harici bir konuma yedekleyin.
- İzleme: Disk alanını düzenli olarak izleyin (
df -h,vgs,lvs).
Sonuç
Linux LVM, sunucularınızdaki depolama yönetimini basitleştiren ve esnekleştiren güçlü bir araçtır. Disk alanını genişletme ve anlık görüntüler alma yetenekleri, sistem yöneticilerine önemli avantajlar sunar. Bu adımları dikkatlice takip ederek, LVM’in sağladığı bu güçlü özelliklerden güvenle yararlanabilirsiniz. Unutmayın, herhangi bir disk işlemi yapmadan önce her zaman önemli verilerinizi yedeklemek en iyi uygulamadır!
