LVM vs MDRAID ile RAIDing - lehte ve aleyhte olanlar?


51

Gelen soru "karışık baskını türleri" verdiği cevap , HBruijn daha standart MDRAID vs RAID uygulamak için LVM kullanarak önerir.

Küçük bir incelemeden sonra LVM'nin RAID işlevselliğini de desteklediği görülüyor. Geçmişte, LVM'yi MDRAID'in üzerine kullandım ve şimdiye kadar LVM'nin RAID işlevselliğini de desteklediğini bilmiyordum. Bu nispeten yeni bir gelişme gibi görünüyor, ancak bunun tam olarak ne zaman uygulandığını tam olarak anlamadım.

Dolayısıyla, bunlar RAID yazılımını Linux'ta uygulamanın alternatif yoludur. Bu iki farklı yaklaşımın artıları ve eksileri nelerdir? İki yaklaşım arasındaki özellik karşılaştırmalarını arıyorum, böylece insanlar onlar için hangisinin daha iyi olduğuna karar verebilirler. Denemeye dayalı sonuçlar (olduğu gibi, bu özellik bu özellik kadar iyi çalışmaz ve işte bu yüzden neden) de tamamdır, verilerinizi cevabınıza eklemeniz şartıyla.

Ele alınacak bazı özel konular:

  1. Diyelim ki RAID + LVM (ortak bir senaryo) yapmak istiyorum. LVM'nin sw RAID desteğini kullanmalı ve böylece iki yerine bir yardımcı program kullanmalı mıyım? Bu daha entegre yaklaşımın herhangi bir avantajı var mı?
  2. Sw RAID desteği olan LVM'lerin, daha olgun olan MDADM'ye kıyasla önemli eksiklikleri var mı? Özellikle, LVM desteği sw RAID için ne kadar stabil / hatasız? MDADM çok daha eskiyken, bu destek yalnızca 2011'e geri dönüyor (aşağıya bakınız). Ayrıca, özellik kümesi açısından nasıl karşılaştırır? MDADM'ye kıyasla önemli özellik eksiklikleri var mı? Tersine, MDADM'nin sahip olmadığı herhangi bir RA RAID özelliği için desteği var mı?

NOTLAR:

  1. Http://www.olearycomputers.com/ll/linux_mirrors.html adresinde detaylı bir tartışma var ama hangi tarihte yazıldığını bulamadım.

    Serverfault üzerinde benzer bir soru: linux LVM ayna vs. MD ayna . Ancak, bu soru 2010 yılında sorulmuştu ve cevaplar eski olabilir.

  2. 2.02.87 - 12 Ağustos 2011 sürümündeki değişiklik listesi

    Configure - MD RAID 1/4/5/6 desteği için yeni segtype 'baskın' için baskın ekle

    Yani, LVM'deki RAID desteği yaklaşık 3 yaşında gibi görünüyor.


Aklıma gelen bir avantaj, LVM için mevcut olan HA ile ilgili işlevleri kullanmak.
Bratchley

1
@JoelDavis Ayrıntılı bilgi verebilir misiniz? HA ile ilgili fonksiyonların ne anlama geldiğini bilmiyorum.
Faheem Mitha

Ayrıca, birimler yerine mantıksal birimlerle çalışmanızın genel avantajı vardır md. Böylece , cihazlar arasında geçiş yapmak için elinizde lvextendve pvmovevar, oysa mdişlem açıkça görülmeden çok daha fazla el ile gerçekleştiriliyor.
Bratchley

@JoelDavis belki bir cevap yazmak?
Faheem Mitha

2
LVM her zaman baskın1 ve baskın0 destekledi. Daha yakın zamanda kendi uygulamalarını bıraktıkları ve bunun yerine içsel olarak md'nin baskın kişilik kodunu kullandıkları için diğer baskın seviyelerini açıyorlardı.
psusi

Yanıtlar:


55

LVM RAID ne kadar olgun ve özellikli?

LVM-RAID, kapakların altında gerçekte saklanır. Temel olarak RAID cihazı başına iki mantıksal birim oluşturarak çalışır (biri "rimage" adı verilen, biri "rmeta" adı verilen meta veriler için). Daha sonra bunları mevcut mdraid sürücülerine aktarır. Bu nedenle, disk kullanımı gibi şeyler, G / Ç yük dengelemesi vb.

Bu iyi haber.

Araçlar

Üzerinde kullanamazsınız mdadm(en azından hiçbir şekilde kolay olmaz¹) ve LVM RAID araçları hiçbir zaman bu kadar olgun değildir. Örneğin, Debian Wheezy'de, lvsRAID5 senkronizasyon durumunu size söyleyemem. Onarım ve geri kazanımın (özellikle "asla gerçekleşmemesi gereken!" Durumlarından) mdadm kadar iyi bir yerde olduğundan şüpheliyim (ve yanlışlıkla testimde bunlardan birine rastladım ve nihayetinde iyileşmekten vazgeçtim - iyileşme ile) mdadm kolay olurdu).

Özellikle, tüm araçların en yeni sürümlerini kullanmıyorsanız, daha da kötüleşir.

Eksik Özellikler

Mevcut LVM-RAID sürümleri, lvreduceRAID mantıksal biriminin küçülmesini ( ) desteklemez . Ayrıca, disk sayısının veya RAID seviyesinin değiştirilmesini de lvconvertdesteklemiyorlar (henüz desteklenmeyen bir hata mesajı veriyor). lvextendçalışır ve RAID10 gibi sadece son zamanlarda destek kazandığı mdraid seviyelerini bile arttırabilir. Tecrübelerime göre, LV'leri genişletmek onları azaltmaktan çok daha yaygın, bu yüzden bu gerçekten makul.

Diğer bazı mdraid özellikleri mevcut değildir ve özellikle mdadm ile yapabileceğiniz tüm seçenekleri özelleştiremezsiniz.

Daha eski sürümlerde (örneğin Debian Wheezy'da olduğu gibi), LVM RAID, büyümeyi de desteklemez. Örneğin, Wheezy'de:

root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.

Genel olarak, Wheezy sürümlerini çalıştırmak istemezsiniz.

Yukarıdaki bir kez yüklü olsun. Bu da önemsiz bir süreç değil.

Takım problemleri

Jessie VM'imle oynayarak (neredeyse) bir diski çıkardım. İşe yaradı, makine çalışmaya devam etti. lvsBununla birlikte, dizilerin bozulduğuna dair hiçbir işaret vermedi. Diski tekrar taktım ve bir saniye çıkarttım. Çalışan kaldı (bu baskın6). Yeniden takıldı, hala hiçbir gösterge yok lvs. lvconvert --repairSes seviyesini koştum , bana sorun olmadığını söyledi. Sonra üçüncü bir diski çektim ... ve makine öldü. Yeniden takıldı, yeniden başlatıldı ve nasıl düzeltileceğinden emin değilim. mdadm --force --assemblebunu düzeltirdi; ne vgchangede ne lvchangebu seçeneğe sahip --forcegörünmüyor (lvchange kabul ediyor , ancak hiçbir şey yapmıyor gibi görünüyor). dmsetupEşleştirme tablasını doğrudan çekirdeğe beslemeye çalışırken bile , nasıl kurtarılacağını çözemedim.

Ayrıca, mdadmyalnızca RAID yönetimi için özel bir araçtır. LVM çok daha fazlasını yapıyor, ancak RAID işlevselliği orada bir nevi itilmiş gibi hissediyor (ve bunun oldukça öznel olduğunu kabul ediyorum); tam olarak uymuyor.

LVM RAID'li bir sistemi gerçekte nasıl kurarsınız?

İşte onu Debian Jessie veya Wheezy üzerine kurmanın kısa bir özeti. Jessie çok daha kolay; Bunu Wheezy'de deneyecekseniz, önce hepsini okuyun…

  1. Netinst bir görüntü değil, yüklemek için tam bir CD görüntüsü kullanın.

  2. Normal şekilde ilerleyin, disk bölümlemesine geçin, LVM fiziksel birimlerinizi ayarlayın. Sen olabilir koymak /boot(aşağıda ayrıntılı bazı çalışma ile Jessie üzerinde ve Wheezy üzerine) LVM-RAID.

  3. Birim gruplarınızı oluşturun. LVM menüsünde bırakın.

  4. İlk eğlence biraz - yükleyicide dm-raid.komodül yüklü değil hatta mevcut! Böylece onu kurulacak olan linux-image paketinden alırsınız. Bir konsola geçin (örneğin, Alt- F2) ve:

    cd /tmp
    dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
    depmod -a -b /tmp
    modprobe -d /tmp dm-raid
    
  5. Yükleyici LVM-RAID LV'lerin nasıl oluşturulacağını bilmediğinden, bunu yapmak için komut satırını kullanmanız gerekir. Not Ben herhangi bir kıyaslama yapmadım; -IAşağıdaki şerit boyutu ( ) tamamen VM kurulumum için bir tahmindir:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. Jessie'da, takas için RAID10 kullanabilirsiniz. Wheezy'da, RAID10 desteklenmemektedir. Bunun yerine, her bir RAID1 olan iki adet takas bölümü kullanabilirsiniz. Ama gerekir onları koymak için fiziksel hangi birimlerin tam olarak anlatmak ya da aynı diskte aynanın iki yarıyı koyar . Evet. Ciddi anlamda. Neyse, şuna benziyor:

    lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
    lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
    
  7. Son olarak, yükleyiciye geri dönün ve LVM menüsünde 'Bitir'i tıklayın. Şimdi size gösterilen çok sayıda mantıksal hacim gösterilecek. Yükleyici, neler olduğunu anlamadı; adlarıyla rimageveya rmetaadlarıyla ilgili her şeyi dikkate almayın (bunların ne olduğunu açıklama için yukarıdaki ilk paragraf yoluna bakın).

  8. Devam edin ve dosya sistemleri, takas bölümleri vb. Normal şekilde oluşturun. Temel sistemi, vb. Grub istemi alana kadar kurun.

  9. Jessie’da, grub2 MBR’ye kurulduysa çalışacaktır (veya muhtemelen EFI’de, ancak bunu test etmedim). Wheezy'da yükleme başarısız olur ve tek çözüm Jessie'nin grub2'sini desteklemektir. Bu aslında oldukça kolaydır, Wheezy'den temiz bir şekilde derlenir. Her nasılsa, desteklenmiş grub paketlerini içine al /target(ya da chroot'tan sonra bir saniye içinde yap) ve sonra:

    chroot /target /bin/bash
    mount /sys
    dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb 
    grub-install /dev/vda … grub-install /dev/vdd # for each disk
    echo 'dm_raid' >> /etc/initramfs-tools/modules
    update-initramfs -kall -u
    update-grub # should work, technically not quite tested²
    umount /sys
    exit
    
  10. Aslında, en son Jessie VM'mde grub-install askıda kaldı. F2'ye geçmek ve while kill $(pidof vgs); do sleep 0.25; doneaynısını yapmak için lvsbunu yapmak grub kurulumundan geçti. Buna rağmen geçerli bir konfigürasyon oluşturduğu ortaya çıktı, ancak tam olarak yaptım chroot /target /bin/bash, emin /procve /sysmonte edildim ve bir update-grub. O zaman tamamlandı. Daha sonra dpkg-reconfigure grub-pc, tüm sanal disklerin MBR'lerine kurulum grubunu seçmeyi seçtim .

  11. Wheezy'da yukarıdakileri yaptıktan sonra 'bootloader olmadan devam et' seçeneğini seçin.

  12. Kurulumu tamamlayın. Önyüklenir. Muhtemelen.

Topluluk Bilgisi

Bunu bilen mdadmve onunla ilgili çok sayıda konuşlandırma deneyimi olan çok sayıda insan var. Google, bu konuda sahip olduğunuz soruların çoğuna cevap verebilir. Genellikle bir gün içinde cevaplar almak için bu konuda bir soru bekleyebilirsiniz.

LVM RAID için de aynı şey söylenemez. Rehber bulmak zor. Çalıştığım çoğu Google araması bunun yerine bana mdadm dizilerini PV olarak kullanma konusunda bir şeyler buldu. Dürüst olmak gerekirse, bu büyük olasılıkla, çünkü daha yeni ve daha az yaygın olarak kullanılıyor. Bir şekilde bunu buna karşı tutmak haksızlık ediyor - ama bir şeyler ters giderse, mdadm çevresindeki mevcut daha büyük topluluk benim verilerimi kurtarmayı daha olası kılıyor.

Sonuç

LVM-RAID oldukça hızlı ilerliyor. Wheezy'da gerçekten kullanılamaz (en azından LVM ve çekirdeği desteklemeden). Daha önce, 2014 yılında Debian testlerinde ilginç ama bitmemiş bir fikir gibi geldi. Temelde Jessie olacak olan güncel test, sıklıkla farklı RAID konfigürasyonları olan küçük dilimler oluşturmanız gerekirse (bununla birlikte idari bir kabus olan bir şey) gerçekten kullanabileceğiniz bir şey gibi hissediyor mdadm.

Gereksinimleriniz, LVM kullanarak bölümlere ayrılmış birkaç büyük mdadm RAID dizisi tarafından yeterli düzeyde karşılanıyorsa, bunu kullanmaya devam etmeyi önerebilirim. Bunun yerine birçok dizi (hatta mantıksal hacimler dizisi) oluşturmak zorunda kalırsanız, bunun yerine LVM-RAID'e geçmeyi düşünün. Ancak iyi yedekler alın.

LVM RAID (ve hatta mdadm RAID) kullanımlarının çoğu, küme depolama / nesne sistemleri, ZFS ve btrfs gibi şeyler tarafından ele geçirilmektedir. Bunları araştırmanızı tavsiye ederim, ihtiyaçlarınızı daha iyi karşılayabilirler.


Teşekkür ederim

LVM-RAID durumunu tekrar ziyaret etmeme ve bu yazıyı güncellememe neden olduğum için psusi'ye teşekkür etmek istiyorum .

Dipnotlar

  1. Meta veriyi ve verileri bir araya mdadm --assemblegetirecek şekilde yapıştırmak için aygıt eşleyicisini kullanabileceğinizi sanıyorum . Tabii ki, mdadmsadece gayet mantıklı hacimlerde koşabilirsin ... ve bu daha akılcı olur.

  2. Wheezy kurulumunu yaparken bunu ilk defa yapamadım ve grub konfigürasyonu olmadan yaralandım. Grubun istemindeki tüm bilgileri girerek sistemi başlatmak zorunda kaldım. Önyüklendikten sonra, bu işe yaradı, bu yüzden yükleyiciden sadece iyi çalışacağını düşünüyorum. Grubun istemine göre sarılırsanız yazmanız gereken sihirli satırlar:

    linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
    initrd /boot/initrd.image-3.2.0-4-amd64
    boot
    

Not: Orijinal deneyleri yaptığımdan bu yana bir süre geçti. Benim yaptık orijinal notları mevcut. Şimdi, bu cevapta yer alan ve bu notlarda olmayan daha yakın zamanda yaptığımı unutmayın.


2
Aslında, bu hatayı wheezy'deki yaşlanma ve dolandırıcılık nedeniyle lvm versiyonundan dolayı alıyorum; Ubuntu 14.04'te lvm sürüm 2.02.98 ile benim için gayet iyi çalışıyor (inanıyorum ki en azından bu kadar yeni). İkincisi, başarısız olduğunu gösterdiğiniz komut bir yeniden boyutlandırmadır - yeniden şekillendirme tamamen farklı bir şeydir. Yeniden şekillendirme, baskın 1'den baskın5'e veya 3 disk baskın5'ten 4 disk baskınına5 geçişi anlamına gelir. Bu hala desteklenmiyor, ancak sadece boyutunun değiştirilmesi iyi çalışıyor.
psusi

@ psusi Ah, yeniden boyutlandırmayı da yeniden şekillendirdiklerini düşündüm (çünkü RAID geometrisini değiştirdi, çünkü hiçbir yerde değişen disk sayısı kadar verilmez). Jessie’de de bir hata yapmadan önce, onu tekrar test edeceğimi düşündüm. (Yeni bir Jessie LVM-RAID VM oluşturmak zorundasınız, bu yüzden biraz zaman alacak.) Teşekkürler.
derobert

dpkg-debDosyaları deb paketlerinden çıkarmak için daha temiz bir yol sağlar, aşama aşama atlamak zorunda kalmazsınız.
muru

dpkg-debyükleyici ortamında @muru kullanılabilir mi? Eskiden olmadı ... Wheezy'yi de kontrol ettiğinizden emin olun.
derobert

@derobert ar -xdeb arşivlerini açmak için de çalışmalı, ancak yine de hantal. Ayrıca, cevabınızı mevcut durumla güncellemeye ne dersiniz?
Faheem Mitha 13:15

7

LVM'nin de RAID yapabileceğini bilmiyordum. Şahsen, aynı şeyi yapan çok daha olgun bir yazılım olduğundan mdadm'e bağlı kalacağım. LVM RAID ile bir şey kırılırsa, muhtemelen mdadm ile gitmiş olduğunuzdan daha fazla destek alamayacaksınız. Ek olarak, LVM'nin tarihsel olarak en sağlam yazılım olmadığını gösterdiği için LVM RAID'e güvenmem.

ZFS ve BTRFS gelecek. Verdikleri faydalar blok katmanında mümkün olanın ötesine geçer. Uyumluluk amacında olmadığım sürece, artık LVM / mdadm kullanmayacağım. ZFS ve BTRFS, sıkıştırma, veri tekilleştirme ve üzerine yazma gibi birçok özelliğe sahiptir, ancak kapsam dışında kaldığı için burada çalışmayacağım.

Sonunda araştırmanızı yapın ve ihtiyaçlarınıza / isteklerinize uygun olanı kullanın.


Cevap için teşekkürler. LVM'ye neden güvenmediğinizi biraz daha genişletin.
Faheem Mitha

2
"ZFS ve BTRFS geleceğidir" Mutlaka değil. Bildiğim kadarıyla, Linux'taki ZFS hala FUSE tabanlı olduğundan, çoğunlukla Solaris veya FreeBSD kullanmadan ZFS özelliklerini almak için kullanılıyor. BTRFS harika ama geleceği mutlaka değil. Örneğin, Red Hat, LVM+XFSBTRFS yerine daha çok yöneliyor gibi görünüyor . BTRFS'yi destekliyorlar ancak bu bir Oracle / SuSE meselesi.
Bratchley

Bir nedenden dolayı btrfs'den hoşlanmadığımı söylemem (aslında onu çok seviyorum). Sadece Red Hat gibi büyük bir dağıtımın girme yönü değil ve BTRFS'nin LVM / XFS'nin en azından oldukça iyi bir şekilde yapamayacağı bir şey yapabileceğini düşünemiyorum.
Bratchley

Ayrıca BTRFS'nin iyi olacağını söyleyebilirim ama LVM BTRFS'nin yapamadığı birçok şeyi yapabilir (henüz). Örneğin, hiçbirinin (AFAIK) BTRFS'nin yapamayacağı hibrid hacimleri ve ince ürün provizyonlarını yapabilirsiniz.
Bratchley

9
"Linux için ZFS hala FUSE tabanlıdır" diyerek bu, beş yıldan uzun süredir yanlış. ZoL bir çekirdek modülüdür ve tamamen üretime hazırdır. 2010'un başından beri yoğun bir şekilde kullanıyorum.
Jim Salter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.