Birkaç sunucuyu Linux'a taşımam gerekiyor ve değerlendirmem gereken önemli bir nokta da yeni Host sistemimin esnek depolama kapasitesine sahip olması gerektiğidir. Doğal olarak, bazı temel araştırmalar yaparak LVM ile karşılaştım.
LVM kullanmak için herhangi bir performans cezası var mı? Öyleyse, nasıl ölçebilirim?
Şu anda düşündüğüm Linux, LVM ve sanallaştırılmış Linux kutuları ile Host OS olarak sahip olmak (konuk işletim sistemine de LVM eklemeliyim?).
LVM, gerçekten çok fazla yol almasını engelleyecek şekilde tasarlanmıştır. Kullanıcı alanı açısından bakıldığında, diskin üstündeki başka bir "sanal malzeme" katmanına benziyor ve tüm G/Ç'nin gerçek olana veya gerçek olandan önce bundan geçmesi gerektiğini hayal etmek doğal görünüyor. donanım.
Ama öyle değil. Çekirdek zaten, "bunu bir dosyaya yaz" gibi üst düzey işlemleri, gerçek bloklara bağlanan aygıt sürücülerine bağlayan bir eşleme (veya aslında birkaç eşleme katmanı) içermelidir. disk.
LVM kullanımdayken, bu arama değiştirilir, ancak hepsi bu. (Yine de olması gerektiğinden, biraz farklı bir şekilde yapmak ihmal edilebilir bir performans isabeti.) Dosyayı gerçekten yazmak söz konusu olduğunda, bitler fiziksel medyaya doğrudan bir yol alır aksi takdirde.
LVM'nin performans sorunlarına neden olabileceği durumlar vardır. LVM bloklarının, modern dağıtımlarla otomatik olarak gerçekleşmesi gereken temel sistemle düzgün bir şekilde hizalandığından emin olmak istiyorsunuz. Ve this gibi hatalara maruz kalan eski çekirdekleri kullanmadığınızdan emin olun. Oh, ve LVM anlık görüntülerini kullanmak performansı düşürür (ve her aktif anlık görüntüde giderek daha fazla). Ancak çoğunlukla, etki çok küçük olmalıdır.
Sonuncuya gelince: nasıl test edebilirsiniz? Standart disk karşılaştırma aracı bonnie ++ şeklindedir. LVM ile bir bölüm oluşturun, test edin, silin ve (aynı yerde diğer faktörleri aynı tutmak için) düz bir dosya sistemi oluşturun ve tekrar kıyaslayın. Aynı olana yakın olmalıdırlar.
LVM, diğer her şey gibi, karışık bir nimettir.
Performansla ilgili olarak, LVM sizi biraz engelleyecektir, çünkü bitler diske çarpmadan (veya buradan okunabilir) önce çalışması gereken başka bir soyutlama katmanıdır. Çoğu durumda, bu performans isabeti neredeyse ölçülemez olacaktır.
LVM'nin avantajları, verileri taşımak zorunda kalmadan mevcut dosya sistemlerine daha fazla depolama alanı ekleyebilmenizi içerir. Çoğu insan bu avantajı seviyor.
Bu şekilde kullanılan LVM'nin bir dezavantajı, ek depolama alanınız diskleri kapsıyorsa (yani birden fazla disk içeriyorsa), bir disk arızasının verilere mal olma olasılığını arttırmanızdır. Dosya sisteminiz iki diske yayılmışsa ve bunlardan biri başarısız olursa, muhtemelen kaybolursunuz. Çoğu insan için, bu, uzay-maliyet nedenlerinden dolayı kabul edilebilir bir risktir (yani, eğer bu gerçekten önemliyse, doğru bir şekilde yapmak için bir bütçe olacaktır) - ve dedikleri gibi yedekler iyi, değil mi?
Benim için LVM kullanmamanın tek nedeni felaket kurtarmanın iyi tanımlanmadığı (veya en azından tanımlanmadığı). Üzerinde karıştırılmış bir işletim sistemi olan LVM birimlerine sahip bir disk, başka bir bilgisayara takılmaz ve ondan kurtarılan veriler; LVM birimlerini kurtarma talimatlarının birçoğunda zaman içinde geri dönüp vgcfgbackup komutunu çalıştırın, ardından ortaya çıkan/etc/lvmconf dosyasını, barındırılan biriminizi barındıran sisteme kopyalayın . Umarım son baktığımdan bu yana geçen üç ya da dört yılda işler değişti, ama şahsen bu nedenle LVM'yi asla kullanmam.
Bahsedilen.
Sizin durumunuzda, VM'lerin Host sistemiyle karşılaştırıldığında nispeten küçük olacağını varsayıyorum. Bu benim için bir VM sonradan daha fazla depolama alanı genişletme olasılığınızın daha yüksek olduğu anlamına gelir; bu en iyi VM ve daha sonra başka bir sanal disk ekleyerek yapılır) etkilenen VM dosya sistemlerini büyütme. Sanal diskler büyük olasılıkla Ana sistemdeki aynı fiziksel aygıtta olacağından yayılan çoklu disk güvenlik açığına sahip değilsiniz.
VM'ler sizin için herhangi bir öneme sahip olacaksa, Host sistemini bir şekilde RAID yapacaksınız, bu da daha sonra depolama alanını artırmak için esnekliği azaltacaktır. Bu nedenle LVM'nin esnekliği muhtemelen gerekli olmayacaktır.
Bu nedenle, Host sisteminde LVM kullanmayacağınızı, ancak LVM'yi kullanmak için VM'leri yükleyeceğinizi varsayarım.
Genel olarak: Yeni bir karmaşıklık katmanı eklerseniz ("daha fazlasını yapmak için") hiçbir şey daha hızlı olmayacaktır. Not: Sadece iş eklersiniz ve işin yapılma şeklini 'değiştirmez'.
Bir şeyi nasıl ölçebilirsin? LVM ile bir bölüm ve olmayan bir bölüm oluşturursunuz, daha sonra normal bir ölçüt kullanır ve sadece çalıştırırsınız. Tıpkı şu millet gibi
Göründüğü gibi, hız üzerinde sadece hafif bir etki. Bu, kıyaslama yapan bir başkasının bulgularıyla senkronize görünmektedir:
Ancak kendi başınıza kıyaslayın ve donanımınızın ve kullanmak istediğiniz işletim sisteminin aynı davranıp davranmadığını ve size elastik depolama sağlayan ek bir karmaşıklık katmanının (belki biraz) etkisini göz ardı edip edemeyeceğinizi görün.
Konuk işletim sistemine LVM eklemeniz gerekir: Bu, esnek işletim sistemine sahip olması için konuk işletim sistemine ihtiyacınız olup olmadığına bağlıdır, değil mi? İhtiyaçlarınız dağıtmanız gereken şeyi belirler.
lvm, özellikle küçük dosyalarla normal bölümden daha yavaştır. İyi araştırmalar: https://www.researchgate.net/publication/284897601_LVM_in_the_Linux_environment_Performance_examination
Sadece lvm'den çok fazla bir performans hit olmaz, ancak bunu almaya istekli iseniz, bunun yerine zfs kullanın. Birim yönetimi ve kurtarılabilirlik ve diğer birçok harika özellik elde edersiniz.
Hiç kimse lvm2'nin okuma ve yazma hızının çarpılmasını sağlayamaz (raid0'a benzer). Şahsen 3 özdeş disk kullanıyorum ve bunlar üzerinde sökülen modda lvm2, okuma ve yazma işlemleri zamanın 1/3'ünü alıyor, bu büyük bir etki, dosya sistemi üzerinde üç kat daha hızlı. Biliyorum: herhangi bir disk başarısız ve üzerlerindeki tüm veriler erişilebilir olmayacak; ancak bu herhangi bir kayıp anlamına gelmez, çünkü Yedeklemeler bir ZORUNLUDUR, Raid, LVM2, ZFS gibi hiçbir şey Yedeklemelere sahip olmaktan kaçınacaktır; bu yüzden asla yansıtma, raid5 ve benzeri kullanmayın, her zaman sıyırma (en yüksek performansı elde etmek için) kullanın ve Yedeklemeleri senkronize ettik. ZFS, anında sıkıştırma için mükemmeldir ve birinden daha büyük kopya parametresi ile yansıtma gibidir, ancak ZFS'nin sahip olduğu ve kimsenin sahip olmadığı bir şey, anında bit çürümesini otomatik olarak kurtarmaktır (kendiliğinden değişen bitler disk kapalıdır), ancak ZFS i gerçekten büyük bir etki (sağlama toplamlarını hesapla, doğrula) ve belediye başkanı problemi (daha fazla fiziksel disk ekleyerek) oluşturur.
Devam etmek için: ZFS'yi yalnızca harici disklerdeki Yedeklemelerim için kullanıyorum, OS için çizgili lvm2 ile birden fazla (iki veya üç) ssd (art arda işletim sistemi klonunu yeniden yapıyorum), inmutable OS kullanma eğilimindeyim; ve ben sanal makineler gibi veri için soyulmuş lvm2 ile birden fazla (altı) spinnin disk kullanın, yine herhangi bir değişiklik yedekler yeniden; böylece herhangi bir disk başarısız sonra ben sadece değiştirmek ve son yedeklemeyi geri gerekir; şimdi bir gün 1.8GiB/s yazma hızına sahibim, bu yüzden BackUP'tan bir sanal makineyi geri yüklemek sadece 30 saniyeden daha az sürüyor (sanal makine diski başına 32GiB).
Yani cevabım: sadece bir şey kullanmayın, akıllı olun ve her parçanın en iyisini kullanın, lvm2 soyulmuş mdraid seviye 0'dan daha hızlıdır, altı eğirme diski kullanılırken daha fazladır; ssd, iki ve üç sıyırma ile bir uyarı iyidir, dört ssd performansı düşürebilir (lvm, mdraid0, vb. olursa olsun, testlerim sıyrılmış modda dört özdeş SSD kullandığımda daha düşük yazma hızı verdi), SSD TRIM ve benzeri görünüyor yazma amplifikasyonu soyulmuş birime daha fazla SSD eklemenin ana nedeni olabilir, daha düşük yazma hızı sağlar.
SSD ve herhangi bir raid0 (soyulmuş birimler) ile savaşmak, işleri mükemmel bir şekilde hizalar, dosya sisteminde doğru küme boyutları, stip boyutu vb. örnek olarak: disk sektörü 2048'dir, bu nedenle 2K minimun olarak herhangi bir okuma/yazmada, asla 512 bayt clusyer kullanan bir dosya sistemi kullanmayın, bunun üzerinde 2K veya 4K küme boyutunu kullanmak daha iyidir; Şimdi her biri 2K sektöründen 3xHDD kullandığınızı düşünün, bu nedenle herhangi bir okuma/yazma optimun dosya sistemi kümesinde 3x2K = 6K olur, ancak bu birçok dosya sisteminde mümkün değildir, o zaman 64K küme boyutu, 64K/6K = 32 kullanılırsa düşünün/3, dengesiz, bu yüzden optimal olmayan vb. Neden olur. En uygun küme boyutunu elde etmek için matematik yapın.
En iyi sonuçlarım: Küme boyutu = şerit boyutu * şerit üzerindeki disk sayısı; bu şekilde her okuma/yazma tüm disklerin çalışmasına neden olan tam boyuttadır, bu nedenle hız iyileştirme nadiren harika olur. 64K şerit boyutlu 3 disk için örnek bir 192K küme boyutu; başka bir örnek 32K şerit boyutlu 6 disk için 192K küme boyutu.
Ve her zaman tek diski 4K, 8K, 16K, 32K, 64K blokta test etmeyi unutmayın; bir çok disk 4K gibi daha düşük sayılarla gerçekten kötü hızlar verir, ancak 64K, 128K veya daha yüksek sürümlerde on kat daha hızlı zaman verir.
Evet, büyük küme boyutları kullanmak, her dosyanın las kümesinde yer kaybını azaltabilir (her biri yalnızca 1 baytlık milyonlarca dosya kullanırsanız) dosya sistemi üzerinde kompakt/paket anında sistemi daha iyi kullanır, bir örnek olarak, 4K küme boyutuna sahip bir 4TiB disk yalnızca 4TiB/4K = 1073741824 dosyadan daha az 1Byte dosyaya sahip olabilir; dosyalar çok büyük, sanal makineler gibi (örnek olarak 32GiB'ye yakın veya sadece birkaç megabayt) kayıp sadece son kümede; çok büyük dosyalar, büyük küme boyutu performans için çok daha iyidir, ancak sanal makinenin nasıl kullandığına dikkat edin.
Kimse size bu sırrı söylemeyecektir: konuk içinde 4K küme boyutu kullanmayın, sanal diskin bulunduğu küme boyutu ile aynı küme boyutunu veya birden fazlasını kullanın.
Evet, konuk diskler içinde en yüksek hızı elde etmenin bir manikiyim. Her biri 283MiB/s yazma hızına sahip yüksek uçlu (ucuz değil) diskler, 128MiB önbellek kullanıyorum.
Siz ve tüm insanlar için: Herhangi bir hız testi yapmadan önce küme boyutu, şerit boyutu ve blok boyutunun nasıl ilişkilendirilmesi gerektiğini öğrenmek en iyisidir, aksi takdirde LVM2 veya başka bir RAID (ayrıca ZFS) testi YANLIŞ sonuç verebilir.
Bunun için sadece bir örnek: Linux açılış zamanlarımı 2x60MiB/s 2.5 inç 5400rpm Sata diskleri ile bir Sata II port anakartında test ediyorum ve sonra 2xSSD Sata III ile test ediyorum (Sata III'e bağlıysa her biri 250MiB/s'den fazla yazabilirler) bağlantı noktaları), önyükleme süreleri yalnızca iki saniye daha az sürer, beş dakikalık bir önyüklemede yalnızca iki saniye, neden? önyükleme zamanı disklerinin çoğu kullanılmadığından, ram ve cpu üzerinde bir şeyler yapıyor, ancak i/o değil.
Allways, sadece ham hızları değil (başka bir deyişle, maksimum hızı) yapacağınız gerçek günlük şeyi test eder.
Maksimum hızın temsil edilemediğinin bilinmesi iyidir, diskleri maksimum hızda% 100 kullanmıyor olabilirsiniz, OS ve APP'ler G/Ç olmadan ram ve cpu üzerinde bir şeyler yapmalıdır, bu nedenle disk hızı önemli değil.
Tüm insanlar SSD'nin çok da Windows Önyükleme hızını geliştirdiğini söylüyor, aynı zamanda YANLIŞ olan testlerimde, sadece yaklaşık sekiz dakika önyükleme süresinde 28 saniye kanıtlıyor.
Eğer benden hoşlanıyorsanız: Önyüklemede Linux kopyala-ram, SSD dönen HDD'lerden daha iyi olmayacak, ayrıca USB 3.1 Gen2 çubuğunu (139MiB/s okuma) test ettim, önyükleme süresi beş dakikalık bot, neden? kolay, okuma ram kopyalanırken yapılır, disk/ssd/usb stick daha afyer daha cıvatanın geri kalanında tekrar kullanılmaz, veri ram sürücü gibi ram üzerindedir.
Şimdi sahip olduğum tüm SSD'mi satıyorum, Linux kopya-ram'ını önyüklemede geliştirmiyorlar, ancak kıyaslama, 5 kat daha hızlı olduklarını söylüyor ... bkz. Kıyaslama YANLIŞ sonuçlar veriyor ... evet, test ve test gerçek günlük iş.
Umarım bu erkek şeyleri temizleyebilir ... Kötü küme ve şerit boyutlarına sahip LVM, katmanın tepesinden çok daha fazla etkiler.
Konuk işletim sistemine de LVM eklemeli miyim?
Host Mantical Volume içinde bir ext3 veya ext 4 dosya sistemine sahip olmanız yeterli olmamalıdır. Bunun içine başka bir Birim Grubu ve Fiziksel Hacim ve Mantıksal Hacim eklemenize gerek yoktur.