LVM

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Konu başlıkları

Giriş

LVM, Linux çekirdeği için bir Mantıksal Hacim Yöneticisi'dir. LVM kullanarak depolama alanınızı soyut hale getirebilir, düzenlemesi daha kolay olan "sanal disk bölümleri" oluşturabilirsiniz. LVM'in temel öğeleri şunlardır:

  • Fiziksel hacim (Physical volume (PV)): Üzerinde hacim grupları bulundurabileceğiniz disk bölümü (hatta hard diskin tamamı veya loopback dosyası da olabilir). "Fiziksel hacim"in özel bir başlığı (header) vardır ve fiziksel parçalara (PE) bölünmektedir. Fiziksel hacimi hard diskinizi oluşturmakta kullanabileceğiniz büyük bloklar olarak düşünebilirsiniz.
  • Hacim grubu (Volume group (VG)): Depolama hacmi olarak kullanılan fiziksel hacimler grubu (tek bir hard disk gibi). Hacim grupları mantıksal hacimlerden oluşur. Hacim gruplarını hard diskler olarak düşünebilirsiniz.
  • Mantıksal hacim (Logical volume (LV)): Bir hacim grubunda yer alan "sanal/mantıksal" bölüm. Mantıksal hacimleri disk bölümleri (partition) gibi düşünebilirsiniz.
  • Fiziksel parça (Physical extent (PE)): Diskin mantıksal hacimlere atanabilen küçük (genelde 4MB) bir bölümü. Fiziksel parçaları disklerin herhangi bir bölüme (partition) atanabilen parçaları olarak düşünebilirsiniz.


İpucu: Şu aşamada LVM karmaşık görünüyor olabilir. Endişelenmeyin, ilerideki bölümler konuyu anlamanıza yardımcı olacak örnekler içermektedir.

LVM kullanarak mantıksal bölümlerinizi gerçek disk bölümlerine (partition) göre çok daha kolay yönetebilirsiniz. Mesela:

  • İstediğiniz sayıda hard diski tek bir disk olarak kullanabilirsiniz (VG).
  • Mantıksal bölümleri (LV) birden çok diske yayabilirsiniz (toplam depolama kapasiteniz kadar büyük olabilirler).
  • Mantıksal bölümleri istediğiniz gibi oluşturabilir/silebilir/, bölümlerin boyutunu değiştirebilirsiniz (Normal disk bölümlerinin aksine, mantıksal bölümlerin hacim grubu içindeki konumları önemsizdir).
  • Disklerinizi (VG) ve bölümlerinizi (LV) istediğiniz gibi isimlendirebilirsiniz.
  • Küçük bölümler (LV) yaratıp, onları "dinamik olarak", doldukça büyütebilirsiniz (büyütme elle yapılmalı, ama bazı dosya sistemlerinde bunu sistem aktifken yapabilirsiniz).
  • ...

Örnek:

Fiziksel disk
                
  Disk1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partition1 50GB (Physical volume) |Partition2 80GB (Physical volume)     |
    |/dev/sda1                         |/dev/sda2                             |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
                                  
  Disk2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partition1 120GB (Physical volume)                 |
    |/dev/sdb1                                          |
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
LVM mantıksal hacimleri

  Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |Logical volume1 15GB  |Logical volume2 35GB      |Logical volume3 200GB               |
    |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol             |
    |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

Özetlemek gerekirse: LVM kulanarak bütün depolama alanınızı tek, büyük bir disk (VG) olarak kullanabilir ve disk bölümleriniz (LV) üzerinde daha fazla esnekliğe sahip olursunuz.

Kurulum

Başlamadan önce gerekli çekirdek modülünü yüklemek gerekiyor:

# modprobe dm-mod

Eğer zaten Arch Linux kurduysanız ve LVM ile bir disk bölümünü denemek istiyorsanız Disk bölümleme adımına atlayabilirsiniz.

LVM üzerinde Arch Linux kurulumu

Arch Linux kurulumunu başlatmadan önce (/arch/setup), hard diskinizi cfdisk veya benzeri bir program ile bölümlemelisiniz. Grub'ın eski sürümü (1.0'dan önceki sürümler) LVM üzerinden sistemi başlatamadığı için ayrı bir /boot bölümüne ihtiyacınız olacak. 100MB bu iş için yeterli olacaktır. Alternatif olarak Lilo veya Grub (1.95 ve sonrası) kullanabilirsiniz.

Disk bölümleme

Şimdi, LVM için bir disk bölümü hazırlamalısınız. Bu bölümün dosya sistemi 'Linux LVM' olmalı, o yüzden dosya sistemi tipi olarak "8e" kullanın. LVM ile kullanmak istediğiniz her diskte yalnızca bir tane LVM bölümü oluşturmalısınız. Mantıksal hacimleriniz (LV) bu bölümün içinde yer alacağı için bölümün boyutunu bunu düşünerek ayarlamanız tavsiye edilir. Eğer sadece LVM kullanacaksanız, diskteki bütün boş alanı kullanabilirsiniz.


Uyarı: /boot dizini, Grub (sürüm<1.95) desteklemediği için bir LVM bölümü içinde yer alamaz


İpucu: Bütün hard disklerdeki bütün LVM bölümleri tek bir büyük disk olarak kullanılacak şekilde ayarlanabilir.

Fiziksel hacim (PV) oluşturma

Şimdi, bu disk bölümlerini LVM ile kullanılmak üzere hazırlamanız gerekiyor. fdisk -l kullanarak hangi disk bölümlerinin dosya sisteminin 'Linux LVM' olduğuna bakıp, bu bölümlerde fiziksel hacim oluşturun:

# pvcreate /dev/sda2

Burada /dev/sda2 yerine fiziksel hacim oluşturmak istediğiniz bütün disk bölümlerini kullanın. Bu komut, üzerinde çalıştırıldığı her disk bölümünde bir başlık oluşturarak bölümün LVM ile kullanılabilmesini sağlıyor.

Oluşturduğunuz fiziksel hacimleri görmek için:

# pvdisplay

Hacim grupları (VG) oluşturma

Bu adımda fizksel hacim (PV) üzerinde bir hacim grubu (VG) oluşturmak gerekiyor. Öncelikle hacim grubunu bir disk bölümü üzerinde oluşturmanız, sonra kullanmak istediğiniz diğer disk bölümlerine yaymanız gerekiyor. İlk oluşturma işlemi için:

# vgcreate VolGroup00 /dev/sda2

komutunu kullandıktan sonra, oluşturulan grubu başka bir disk bölümüne yayılabilir:

# vgextend VolGroup00 /dev/sdb1

Burada VolGroup00 yerine herhangi bir isim de kullanabilirsiniz. Oluşturduğunuz hacim gruplarını görüntülemek için şu komutu kullanabilirsiniz:

# vgdisplay


Önemli: İsterseniz birden fazla hacim grubu oluşturabilirsiniz ancak bu durumda bütün depolama alanınızı tek bir disk olarak göremezsiniz.

Mantıksal hacim (LV) oluşturma

Şimdi bu hacim grubunda (VG) mantıksal hacimler (LV) oluşturmak gerekiyor. Aşağıdaki komut ile isim, boyut ve içinde bulunacağı hacim grubunu belirterek bir mantıksal hacim (LV) oluşturabilirsiniz:

# lvcreate -L 10G VolGroup00 -n lvolhome

Bu komut ileride /dev/mapper/Volgroup00-lvolhome veya /dev/VolGroup00/lvolhome ile ulaşabileceğiniz bir mantıksal hacim oluşturacak. Tıpkı hacim gruplarında (VG) olduğu gibi, mantıksal hacimlere de (LV) istediğiniz adı verebilirsiniz.

Mantıksal bir hacimde swap oluşturmak için yukarıdaki komuta ayrı bir argüman eklemek gerekiyor:

# lvcreate -C y -L 10G VolGroup00 -n lvolswap

Buraki -C y ifadesi sürekli bir hacim oluşturmayı sağlıyor. Yani swap alanınız birden fazla disk bölümüne veya sürekli olmayan fiziksel parçalara (PE) dağılmamış oluyor.

Bir hacim grubundaki (VG) bütün boş alanı kullanarak bir mantıksal hacim (LV) oluşturmak için şu komut kullanılabilir:

# lvcreate -l +100%FREE VolGroup00 -n lvolmedia

Oluşturduğunuz mantıksal hacimleri takip etmek için şu komutu kullanabilirsiniz.

# lvdisplay


Önemli: Yukarıdaki komutların çalışabilmesi için device mapper çekirdek modülünü yüklemeniz gerekebilir (modprobe dm-mod).


İpucu: Başlangıçta görece küçük mantıksal hacimler oluşturup, ileride bu hacimleri gerektikçe büyütebilirsiniz. Bu işlemin basit olması için, hacim grubunda (VG) bir miktar boş alan bırakabilirsiniz.

Dosya sistemi oluşturma ve mantıksal hacimleri yerleştirme

Oluşturduğunuz mantıksal hacimler (LV) bu aşamada /dev/mapper/ ve /dev/YourVolumeGroupName dizinlerinde yer alıyor olmalılar. Eğer bu dizinleri bulamıyorsanız çekirdek modülünü yerleştirin ve hacim gruplarını görünür yapıp tekrar deneyin:

# modprobe dm-mod
# vgchange -ay

Artık mantıksal hacimlerde (LV) dosya sistemleri oluşturabilir ve bunları normal disk bölümleri (partition) olarak sisteme yerleştirebilirsiniz (mount). (Eğer Arch Linux kurulumu yapıyorsanız bu aşamayı atlayın ve Arch kurulum programında az önce oluşturduğunuz LVM bölümlerini seçin.):

# mkfs.ext4 /dev/mapper/VolGroup00-lvolhome
# mount /dev/mapper/VolGroup00-lvolhome /home

Eğer Arch Linux kurulumu yapıyorsanız, /arch/setup programını başlatın, Prepare Hard Drive bölümünde doğrudan 3. adım olan "Set Filesystem Mountpoints"e gidin. Kuruluma devam etmeden önce aşağıdaki önemli bölümü mutlaka okuyun!

Önemli

LVM ile Arch Linux kurulumu yaparken dikkat etmeniz gereken birkaç nokta var (parantez içindeki eğik yazılar kurulum sırasındaki menüleri göstermektedir):

  1. Yerleştirme noktalarını (mountpoints) belirlerken, yeni oluşturduğunuz mantıksal hacimleri (LV) kullanın (örnek olarak: /dev/mapper/Volgroup00-lvolhome).
    Mantıksal hacimlerin üzerinde bulunduğu asıl disk bölümünü SEÇMEYİN (örnek olarak, şunu kullanmayın:: /dev/sda2). (Set Filesystem Mountpoints)
  2. /etc/rc.conf içindeki USELVM="no" ifadesini USELVM="yes" olarak değiştirmeyi unutmayın. (Configure System)
  3. lvm2 ifadesinin /etc/mkinitcpio.conf içindeki HOOKS değişkeninde yer aldığına emin olun. Burada lvm2 ifadesi filesystems ifadesinden hemen önce yer almalı, zira çekirdek bu sayede başlangıç (boot) sırasında LVM bölümlerini bulabiliyor. Ayrıca, LVM anlık görüntüleri (snapshots) kullanacaksanız, MODULES değişkenine dm-snapshot ifadesini eklemeyi unutmayın. (Configure System)
  4. /boot/grub/menu.lst dosyasının kök dizini olarak doğru bölümleri kullandığına emin olun. Dosya, şu şekilde olmalı: (Install Bootloader)
...
# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 root=/dev/mapper/VolGroup00-lvolroot resume=/dev/mapper/VolGroup00-lvolswap ro
initrd /linux.img
...

LILO kullanıyorsanız /etc/lilo.conf dosyasına bakın:

image=/boot/vmlinuz26
       label=arch
       append="root=/dev/mapper/VolGroup00-lvolroot resume=/dev/mapper/VolGroup00-lvolswap ro"
       initrd=/boot/linux.img

Yapılandırma

Mantıksal hacimleri büyütme

Bir mantıksal hacimi (LV) büyütmek için önce hacimin kendisini büyütmek, sonra da dosya sistemini büyütmek gerekiyor. Diyelim ki 15GB boyutunda ext3 dosya tipinde bir mantıksal hacimimiz var ve bunu 20GB yapmak istiyoruz. İzlenmesi gereken adımlar şunlar:

# lvextend -L 20G VolGroup00/lvolhome (or lvresize -L +5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

Burada lvextend yerin lvresize kullanabilirsiniz.

Eğer hacim grubunda kalan bütün boş alanı kullanmak istiyorsanız şu komutu kullanın:

# lvextend -l +100%FREE VolGroup00/lvolhome


Uyarı: Her dosyayı sistemi veri kaybetmeden ve/veya sistem aktifken boyut değiştirmeyi desteklememektedir.


Önemli: Dosya sistemini büyütmezseniz (yukarıdaki örnekte sadece ilk satırı çalıştırırsanız), eskisiyle aynı boyutta (15GB) bir bölümünüz olacaktır, ancak bölümün içinde bulunduğu mantıksal hacim (LV) büyümüş (20GB) olacaktır.

Mantıksal hacimleri küçültme

Dosya sisteminiz büyük olasılıkla içinde bulunduğu mantıksal hacim (LV) ile aynı boyutta olduğu için, önce dosya sistemini, daha sonra da mantıksal hacimi küçültmeniz gerekiyor. Dosya sisteminizin türüne bağlı olarak, başlamadan önce küçültülecek bölümü sistemden ayırmanız (unmount) gerekebilir. Diyelim ki 15GB boyutunda ext3 dosya sistemi kullanan bir mantıksal bölümümüz var ve bunu 10GB'a düşürmek istiyoruz. İzlenmesi gereken adımlar şunlar:

# resize2fs /dev/VolGroup00/lvolhome 9G
# lvreduce -L 10G VolGroup00/lvolhome (ya da lvresize -L -5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

Burada dosya sistemini gerekenden daha fazla küçülttük, böylece mantıksal hacimi küçültürken kazara dosya sisteminin sonunu silmeyi engellemiş olduk. Ondan sonra dosya sistemini, kalan boş alanı kaplayacak şekilde büyüttük.


Uyarı: Dosya sistemini, içinde veri bulunan miktardan daha düşük bir miktara küçültmeyin! Böyle yaparsanız veri kaybetme riskiniz vardır!


Uyarı: Her dosyayı sistemi veri kaybetmeden ve/veya sistem aktifken boyut değiştirmeyi desteklememektedir.


Önemli: Dosya sistemini gerekenden daha fazla küçültmeniz tavsiye edilir, böylece mantıksal hacimi küçültürken kazara dosya sisteminin sonunu silmeyi engellemiş olursunuz.

Hacim grubuna disk bölümü ekleme

Mevcut hacim grubunuza (VG) yeni bir disk bölümü (partition) eklemek için öncelikle türünü 'Linux LVM' yapmalısınız (bunun için cfdisk kullanabilirsiniz). Sonra bu disk bölümü üzerinde bir fiziksel hacim (PV) oluşturmalı ve hacim grubunu (VG) bu fiziksel hacimi kapsayacak şekilde büyütmelisiniz:

# pvcreate /dev/sdb1
# vgextend VolGroup00 /dev/sdb1

Artık hacim grubunuzda (VG) bu gruptaki mantıksal hacimler (LV) tarafından kullanılabilecek boş alanınız var.


İpucu: Hacim gruplarına herhangi bir diskteki herhangi bir bölümü (partition) ekleyebilirsiniz.

Hacim grubundan disk bölümü çıkarma

Öncelikle çıkarmak istediğiniz disk bölümündeki (partition) bütün data başka bir yere taşınmalıdır. LVM, bu işlemi kolay hale getirmektedir:

# pvmove /dev/sdb1

Eğer veriyi belirli bir disk bölümüne aktarmak istiyorsanız, o bölümü pvmove komutuna ikinci bir parametre olarak girin:

# pvmove /dev/sdb1 /dev/sdf1

Şimdi, disk bölümünün hacim grubundan (VG) çıkarılması gerekiyor:

# vgreduce myVg /dev/sdb1

Veya boş olan bütün disk bölümlerini (partition) gruptan çıkarabilirsiniz:

# vgreduce --all vg0

Son olarak, eğer çıkardığınız disk bölümünü başka bir amaçla kullanmak isterseniz, LVM'in o bölümü fiziksel hacim (PV) olarak görmesini engellemelisiniz:

# pvremove /dev/sdb1

Anlık Görüntüler

Giriş

Önemli: Aşağıdaki paragrafta bazı ifadeler Türkçe karşılıkları bulunmadığı için İngilizce olarak kullanılmıştır. Eğer Türkçe karşılıklarını biliyorsanız, düzeltmekten çekinmeyin.

LVM, sisteminizin anlık görüntülerini almanızı sağlar ve bunu geleneksel yedeklemeye göre çok daha verimli hale getirir. Bu verimliliği COW (copy-on-write, yazarken kopyala) politikası ile sağlar. Alınan ilk anlık görüntü, sadece verinizin bulunduğu "inode"lara giden bağlantılardan oluşur. Veriniz değişmediği sürece anlık görüntü sadece "inode" bağlantılarından oluşur, asıl veriyi barındırmaz. Anlık görüntünün takip ettiği bir dosyayı veya dizini değiştirdiğiniz zaman, LVM otomatik olarak veriyi (anlık görüntünün gösterdiği eski veri ve aktif sisteminizin gösterdiği yeni veri) klonlar. Böylece içinde 35GB veri bulunanan bir sistemin, sadece 2GB boş alan kullanarak anlık görüntüsünü alabilirsiniz (2GB'dan az değişiklik yaptığınız sürece).

Yapılandırma

Anlık görüntü mantıksal hacimlerini de (LV) tıpkı normalde olduğu gibi oluşturabilirsiniz:

# lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

Oluşan bu mantıksal hacim ile, anlık görüntü hacmi dolmadan 100MB'lık değişiklik yapabilirsiniz.

/etc/mkinitcpio.conf içinde yer alan MODULES değişkeninde dm-snapshot ifadesinin yer alması önemlidir, aksi takdirde sisteminiz açılmaz. Eğer bu işlemi var olan bir sistemde yapıyorsanız çekirdek imajını yeniden oluşturmayı unutmayın:

# mkinitcpio -g /boot/linux.img


Önemli: Anlık görüntüler ile ilgili diğer işlemler (değişiklikleri geri alma, menu.lst'yi değiştirerek anlık görüntülerden sistem başlatma vs) daha sonra eklenecektir.

Sorun Giderme

LVM komutları çalışmıyor

  • Gerekli çekirdek modülünü yükleyin:
# modprobe dm-mod
  • Komutların başına lvm eklemeyi deneyin:
# lvm pvdisplay

Kurulumdaki "Set Filesystem Mountpoints" menüsünde mantıksal hacimleri (LV) göremiyorum

Eğer üzerinde mevcut bir hacim grubu (VG) bulunduran bir sisteme kurulum yapıyorsanız, "modprobe dm-mod" komutundan sonra bile mantıksal hacimleri (LV) göremeyebilirsiniz.

Bu durumda:

# vgchange -ay <volgroup>

komutunu kullanarak hacim grubunu aktive etmeniz ve mantıksal hacimleri görünür yapmanız gerekmektedir.

İpuçları & Tavsiyeler

Todo

Diğer Kaynaklar

Bu yazı orijinal Arch Wiki'sinde dcelasun tarafından çevirilmiştir.

İngilizce Archwiki'de bulunan diğer LVM makaleleri:

Harici kaynaklar:

Kişisel araçlar
GOOGLE
Diğer dillerde