LVM ile çalışma | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

LVM ile çalışma

LVM (Logical Volume Manager), fiziksel depolama üzerinde bir soyutlama katmanı sağlayan bir disk yönetim sistemidir. Disk alanının esnek şekilde tahsis edilmesine, sistem çalışırken boyutlandırma yapılmasına ve snapshot tabanlı yedeklemeler oluşturulmasına olanak tanır. Sanallaştırma için depolama katmanı olarak yaygın şekilde kullanılır. Şifreli sistemlerde LVM genellikle LUKS ile şifrelenmiş bir cihazın üzerine yerleştirilir; böylece tek bir kilit açma işlemi tüm volume group'un erişilebilir olmasını sağlar.

Bu makalede Linux üzerinde LVM kurulumu, physical volume, volume group ve logical volume oluşturma, bunların boyutlarını değiştirme, snapshot'larla çalışma ve thin provisioning kullanımı ele alınmaktadır.

LVM kurulumu

LVM çoğu Linux dağıtımında varsayılan olarak bulunur. Yüklü değilse sistemin paket yöneticisini kullanarak lvm2 paketini yükleyin.

Debian ve Ubuntu üzerinde:

sudo apt-get install lvm2

RHEL, CentOS Stream, AlmaLinux ve Rocky Linux üzerinde:

sudo dnf install lvm2

Physical Volume oluşturma

Physical Volume (PV), LVM'nin en alt seviyedeki temel bileşenidir. Tam bir disk (örneğin /dev/sdb) veya tek bir bölüm (örneğin /dev/sdb1) olabilir.

Info

Tam bir diski PV olarak kullanmak, daha sonra yapılacak boyutlandırma işlemlerini kolaylaştırır; çünkü önce altta bulunan bölümün büyütülmesi gerekmez. Diskin LVM dışı verileri de barındırması gerekiyorsa veya sistemdeki diğer araçlar bir bölüm tablosu bekliyorsa bölüm kullanılması tercih edilir.

pvcreate ile bir Physical Volume oluşturun:

sudo pvcreate /dev/sdb

/dev/sdb yerine blok aygıtınızın yolunu yazın.

Sonucu pvdisplay ile kontrol edin:

sudo pvdisplay

Çıktı, LVM'nin şu anda yönettiği Physical Volume'leri, her birinin boyutu ve Volume Group bilgileriyle birlikte listeler.

Volume Group oluşturma

Bir Volume Group (VG), bir veya daha fazla Physical Volume'ü tek bir depolama havuzunda birleştirir. Logical Volume'ler bu havuzdan oluşturulur.

Tek bir Physical Volume'den vg0 adlı bir Volume Group oluşturun:

sudo vgcreate vg0 /dev/sdb

Veya aynı anda birden fazla Physical Volume kullanın:

sudo vgcreate vg0 /dev/sdb /dev/sdc

Sonucu vgdisplay ile kontrol edin:

sudo vgdisplay

Logical Volume oluşturma

Logical Volume (LV), sistem tarafından normal bir blok aygıtı olarak görülür. Üzerinde bir dosya sistemi oluşturabilir ve bağlayabilirsiniz.

vg0 Volume Group'u içinde 10 GB boyutunda lv0 adlı bir Logical Volume oluşturun:

sudo lvcreate -n lv0 -L 10G vg0

-n seçeneği Logical Volume adını, -L ise boyutunu belirler.

Sonucu lvdisplay ile kontrol edin:

sudo lvdisplay

Logical Volume üzerinde bir dosya sistemi oluşturun:

sudo mkfs.ext4 /dev/vg0/lv0

Bir bağlama noktası oluşturun ve dosya sistemini bağlayın:

sudo mkdir -p /mnt/lv0 sudo mount /dev/vg0/lv0 /mnt/lv0

Yeni dosya sistemi artık /mnt/lv0 altında kullanılabilir. Açılışta otomatik olarak bağlamak için /etc/fstab dosyasına uygun bir giriş ekleyin.

Info

LVM her Logical Volume'ü iki eşdeğer yol üzerinden sunar: /dev/<vg>/<lv> ve /dev/mapper/<vg>-<lv>. Yukarıdaki örnekte bunlar /dev/vg0/lv0 ve /dev/mapper/vg0-lv0 yollarıdır. Her iki yol da aynı aygıta işaret eder; araçlar ve yapılandırma dosyaları bunlardan herhangi birini kullanabilir.

Normal blok aygıtlarıyla birlikte PV/VG/LV hiyerarşisinin tamamını görmek için çalıştırın:

lsblk

Birimlerin boyutunu değiştirme

LVM her katmanda çevrimiçi boyutlandırmayı destekler: Physical Volume, Volume Group ve Logical Volume.

pvresize, temel blok aygıtının boyutu değiştirildikten sonra LVM'nin Physical Volume ile ilgili görünümünü günceller (örneğin hipervizörde sanal disk büyütüldükten sonra):

sudo pvresize /dev/sdb

vgextend, mevcut bir Volume Group'a Physical Volume ekler ve böylece Volume Group'u büyütür:

sudo vgextend vg0 /dev/sdc

vgreduce, bir Physical Volume'ü Volume Group'tan kaldırır:

sudo vgreduce vg0 /dev/sdc

lvresize, bir Logical Volume'ün boyutunu değiştirir. Örneğin lv0 üzerine 5 GB eklemek için:

sudo lvresize -L +5G /dev/vg0/lv0

Veya Logical Volume'ü Volume Group'taki tüm boş alanı kullanacak şekilde genişletmek için:

sudo lvresize -l +100%FREE /dev/vg0/lv0

Info

-L (büyük harf) ile -l (küçük harf) arasındaki farka dikkat edin. Büyük harfli sürüm M, G veya T gibi birim son eki içeren bir boyut kabul eder. Küçük harfli sürüm ise extent sayısı veya yüzde kabul eder.

Bir Logical Volume'ün boyutunu değiştirmek, üzerindeki dosya sisteminin boyutunu otomatik olarak değiştirmez. Dosya sistemi için uygun aracı kullanın. ext2, ext3 ve ext4 için:

sudo resize2fs /dev/vg0/lv0

XFS için dosya sisteminin bağlama noktası üzerinde xfs_growfs çalıştırın.

ext4 ve XFS dahil desteklenen dosya sistemlerinde, -r seçeneği ile kullanılan lvextend, Logical Volume'ün ve dosya sisteminin boyutunu tek adımda değiştirir:

sudo lvextend -r -L +5G /dev/vg0/lv0

Bu, çevrimiçi büyütme için en yaygın yöntemdir.

Warning

Bir Logical Volume'ü küçültme işlemi ters sırayla yapılır: önce dosya sistemi küçültülmeli, ardından Logical Volume küçültülmelidir. Tersi yapılırsa, dosya sistemi hâlâ eski boyutuna sahip olduğunu düşünürken temel aygıtın boyutu küçültülür ve bu durum veri kaybına yol açar. ext4 için işlem çevrimdışı yapılmalıdır. Dosya sistemini ayırın, sudo e2fsck -f /dev/vg0/lv0 komutunu çalıştırın, dosya sistemini sudo resize2fs /dev/vg0/lv0 <new_size> ile küçültün, Logical Volume'ü aynı boyuta sudo lvresize -L <new_size> /dev/vg0/lv0 ile küçültün ve ardından dosya sistemini yeniden bağlayın. XFS küçültmeyi hiç desteklemez; bir XFS dosya sistemini küçültmenin tek yolu yedek almak, daha küçük bir dosya sistemi oluşturmak ve verileri geri yüklemektir.

Yukarıdaki komutların tamamı seçeneklerin tam listesini görmek için --help parametresini destekler.

LVM snapshot'ları

Bir snapshot, belirli bir anda bir Logical Volume'ün durumunu yakalar. Copy-on-write mekanizmasıyla çalışır: orijinal Logical Volume değiştikçe değiştirilen bloklar snapshot için ayrılmış alana kaydedilir ve böylece snapshot orijinal durumu göstermeye devam eder.

Snapshot'lar çalışan bir dosya sisteminin çökme tutarlı yedeklerini oluşturmak ve silinerek geri alınabilecek değişiklikleri test etmek için kullanışlıdır. Uygulama tutarlı yedeklemeleri, snapshot alınmadan önce dosya sisteminin dondurulması veya uygulamanın geçici olarak duraklatılması gibi ek koordinasyon gerektirir.

Snapshot oluşturma

lvcreate ve -s seçeneği ile bir snapshot oluşturun:

sudo lvcreate -L 1G -s -n myvolume_snap /dev/myvg/myvolume

Bu komut, myvg Volume Group içindeki myvolume Logical Volume'ünün myvolume_snap adlı snapshot'ını oluşturur ve değişiklikler için 1 GB alan ayırır. Ayrılacak alan miktarını snapshot'ın kullanım süresi boyunca değişmesi beklenen veri miktarına göre belirleyin: çoğunlukla kullanılmayan volume'lerin snapshot'ları az miktarda alana ihtiyaç duyarken yoğun şekilde yazılan volume'ler orijinal boyutun önemli bir bölümüne ihtiyaç duyabilir.

Uzun süre kullanılacak snapshot'lar ve çok sayıda snapshot içeren senaryolar için thin pool içindeki thin snapshot'ları değerlendirin. Bunlar sabit bir miktarı önceden ayırmak yerine ortak pool'daki alanı ihtiyaç oldukça kullanır ve genellikle alanı daha verimli kullanır.

Warning

Orijinal Logical Volume snapshot'ın kaldırabileceğinden daha fazla değişirse snapshot geçersiz hale gelir ve yakaladığı veriler kaybolur. Snapshot boyutunu kullanım ömrü boyunca beklenen değişiklik miktarını karşılayacak şekilde belirleyin.

Snapshot kullanma

Bir snapshot diğer herhangi bir Logical Volume gibi bağlanabilir. Yedekleme ve inceleme işlemleri için, yazma erişimi gerçekten gerekli olmadığı sürece salt okunur olarak bağlayın:

sudo mkdir -p /mnt/snapshot sudo mount -o ro /dev/myvg/myvolume_snap /mnt/snapshot

Bağlandıktan sonra snapshot, yedekleme veya inceleme amacıyla okunabilir.

Snapshot silme

Snapshot artık gerekli değilse lvremove ile kaldırın:

sudo lvremove /dev/myvg/myvolume_snap

Bir snapshot'ın kaldırılması, ayırdığı alanı serbest bırakır. Snapshot'ın kendisine, yani orijinal volume yerine snapshot'a yazılmış tüm veriler kaybolur.

Orijinal volume'ü snapshot tarafından yakalanan duruma geri döndürmek için lvremove yerine lvconvert --merge kullanın:

sudo lvconvert --merge /dev/myvg/myvolume_snap

Birleştirme işleminden sonra snapshot tüketilir ve otomatik olarak kaldırılır. Orijinal volume şu anda kullanımdaysa birleştirme, volume bir sonraki kez etkinleştirilene kadar ertelenir.

Thin provisioning

Thin pool, depolama alanını ihtiyaç oldukça tahsis eden özel bir Logical Volume türüdür. Bunun içinden oluşturulan Logical Volume'ler (thin volume'ler), pool'daki gerçek boş alanı aşan bir tanımlı boyuta sahip olabilir ve yalnızca yazılan bloklar gerçek depolama alanı tüketir.

Bu teknoloji, birçok sanal diskin tek bir ortak depolama pool'unu paylaştığı ancak nadiren tümünün aynı anda tanımlanan kapasitesine ulaştığı sanallaştırma ortamlarında yaygın olarak kullanılır.

Thin pool oluşturma

myvg Volume Group içinde 50 GB boyutunda mythinpool adlı bir thin pool oluşturun:

sudo lvcreate -L 50G -T -n mythinpool myvg

-L seçeneği pool boyutunu belirler, -T lvcreate'e thin pool oluşturmasını söyler ve -n pool adını belirler. LVM, pool'u Volume Group'un boş alanından oluşturur; pool'un belirli cihazlarda bulunması gerekiyorsa komutun sonunda belirli Physical Volume'ler belirtilebilir.

Thin volume oluşturma

mythinpool içinde 10 GB boyutunda mythinvolume adlı bir thin volume oluşturun:

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

-V seçeneği thin volume'ün sanal boyutunu belirler, -T thin pool'u belirtir ve -n yeni volume'ün adını belirler.

Thin volume kullanma

Bir thin volume diğer Logical Volume'ler gibi kullanılır. Üzerinde bir dosya sistemi oluşturun:

sudo mkfs.ext4 /dev/myvg/mythinvolume

Ardından thin volume bağlanabilir ve normal bir blok aygıtı olarak kullanılabilir.

Warning

Thin pool'lar overcommit edilebildiğinden pool'un gerçek kullanımını izleyin. Hem veri alanı hem de metadata alanı birbirinden bağımsız olarak tükenebilir ve her ikisi de kritiktir: bir thin volume'e yazma işlemi sırasında thin pool'da veri alanı veya metadata alanı tükenirse, bu volume'e yapılan yazma işlemleri başarısız olmaya başlar.

Thin pool'lar dahil tüm Logical Volume'lerin mevcut veri ve metadata kullanımını lvs ile inceleyebilirsiniz:

sudo lvs -o +data_percent,metadata_percent

data_percent veya metadata_percent değerlerinden biri 100'e yaklaştığında, tamamen dolmadan önce thin pool'u lvextend ile genişletin.

Komut referansı

Katmanlara göre gruplandırılmış yaygın LVM komutları.

Physical Volume'ler:

  • pvcreate bir blok aygıtını Physical Volume olarak başlatır.
  • pvdisplay Physical Volume'ler hakkında ayrıntılı bilgi gösterir.
  • pvs Physical Volume'lerin özet tablosunu gösterir.
  • pvresize temel aygıtın boyutu değiştirildikten sonra Physical Volume'ü günceller.

Volume Group'lar:

  • vgcreate bir veya daha fazla Physical Volume'den bir Volume Group oluşturur.
  • vgextend bir Volume Group'a Physical Volume ekler.
  • vgreduce bir Physical Volume'ü Volume Group'tan kaldırır.
  • vgdisplay Volume Group'lar hakkında ayrıntılı bilgi gösterir.
  • vgs Volume Group'ların özet tablosunu gösterir.

Logical Volume'ler:

  • lvcreate bir Logical Volume oluşturur.
  • lvextend ve lvresize bir Logical Volume'ün boyutunu değiştirir.
  • lvremove bir Logical Volume'ü kaldırır.
  • lvconvert --merge bir snapshot'ı tekrar kaynak volume ile birleştirir.
  • lvdisplay Logical Volume'ler hakkında ayrıntılı bilgi gösterir.
  • lvs Logical Volume'lerin özet tablosunu gösterir.

Günlük kullanımda pvs, vgs ve lvs gibi kısa özet komutları, ayrıntılı *display sürümlerine göre genellikle daha kullanışlıdır. Her komut, tüm seçeneklerin listesini görmek için --help parametresini destekler.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA