LVMとMDRAIDのRAID-長所と短所?


51

では質問「混合RAIDタイプ」への彼の答え、HBruijnは、より標準的なMDRAID対RAIDを実装するためにLVMを使用することを提案しています。

少し調査した結果、LVMはRAID機能もサポートしているようです。過去に、MDRAIDの上でLVMを使用しましたが、これまでLVMがRAID機能もサポートしていることを知りませんでした。これは比較的最近の開発のようですが、いつ実装されたかは正確にはわかりません。

したがって、これらはLinuxでソフトウェアRAIDを実装する代替方法です。これら2つの異なるアプローチの長所と短所は何ですか?人々がどちらがより良いかを判断できるように、2つのアプローチの機能比較を探しています。実験に基づいた結論(この機能は、この機能と同じようには機能せず、その理由もあります)も、データを回答に含めればOKです。

対処すべき特定の問題:

  1. sw RAID + LVMを実行したいとします(一般的なシナリオ)。sw RAIDのLVMのサポートを使用する必要があり、したがって2つではなく1つのユーティリティを使用する必要がありますか?この統合されたアプローチには利点がありますか?
  2. sw RAIDのLVMサポートは、より成熟したMDADMと比較して大きな欠陥がありますか?具体的には、sw RAIDのLVMサポートはどの程度安定/バグフリーですか?このサポートは2011年(下記参照)にのみ遡りますが、MDADMははるかに古いようです。また、機能セットの点ではどのように比較されますか?MDADMと比較して、機能に重大な欠陥がありますか?逆に、MDADMにはないsw RAID機能はサポートされていますか?

ノート:

  1. 詳細な議論は http://www.olearycomputers.com/ll/linux_mirrors.htmlにありますが、それが書かれた日付を知ることができませんでした。

    Serverfaultに関する同様の質問:linux LVM mirror vs. MD mirror。ただし、この質問は2010年に行われたものであり、回答は古くなっている可能性があります。

  2. バージョン2.02.87の変更ログエントリ-2011年8月12日

    MD RAID 1/4/5/6サポート用の新しいsegtype 'raid'にconfigure --with-raidを追加

    そのため、LVMでのRAIDサポートは約3年前のようです。


私が考えることができる1つの利点は、LVMで利用可能なHA関連の機能を使用することです。
ブラッチリー14

1
@JoelDavis詳しく説明してもらえますか?HA関連の機能の意味がわかりません。
ファヒムミタ14

また、ボリュームの代わりに論理ボリュームで作業しているという通常の利点がありますmd。あなたが持っているので、lvextendpvmoveして一方のデバイス間で移動するために利用可能なmdプロセス明確な恩恵なしに、より多くのマニュアルです。
ブラッチリー14

@JoelDavisは答えを書くかもしれませんか?
ファヒムミタ14

2
LVMは常にraid1とraid0をサポートしています。ごく最近、彼らは独自の実装を落とし、代わりに内部的にmdのraidパーソナリティコードを使用し、他のraidレベルを開放しました。
psusi

回答:


55

LVM RAIDはどれほど成熟していて機能的ですか?

LVM-RAIDは実際には隠れています。基本的には、RAIDデバイスごとに2つの論理ボリューム(「rimage」と呼ばれるデータ用、「rmeta」と呼ばれるメタデータ用)を作成することで機能します。次に、それらを既存のmdraidドライバーに渡します。したがって、ディスク読み取りエラーの処理、I / Oロードバランシングなどはかなり成熟しているはずです。

それは朗報です。

道具

使用することはできませんmdadm(少なくとも、簡単な方法ではありません¹)、LVM RAIDツールはそれほど成熟していません。たとえば、Debian Wheezyでは、lvsRAID5同期ステータスを通知できません。修復とリカバリ(特に「決して起こらない!」状況から)がmdadmに近いことは非常に疑いがあります(そして、私のテストで偶然それらの1つに偶然遭遇し、ついにそれをリカバリすることをあきらめました。 mdadmは簡単だったでしょう)。

特に、すべてのツールの最新バージョンを使用していない場合、さらに悪化します。

不足している機能

LVM-RAIDの現在のバージョンはlvreduce、RAID論理ボリュームの縮小()をサポートしていません。また、ディスク数やRAIDレベルの変更lvconvertもサポートしていません(まだサポートされていないというエラーメッセージが表示されます)。lvextend動作し、RAID10などのmdraidが最近サポートを獲得したRAIDレベルを拡大することさえできます。私の経験では、LVを拡張することは、LVを縮小するよりもはるかに一般的であるため、実際には合理的です。

他のmdraid機能はいくつか存在しません。特に、mdadmで使用できるすべてのオプションをカスタマイズすることはできません。

古いバージョン(たとえば、Debian Wheezyなど)では、LVM RAIDも成長をサポートしていません。たとえば、Wheezyの場合:

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.

一般に、Wheezyバージョンを実行することは望ましくありません。

上記はインストールした後のものです。それも些細なプロセスではありません。

ツールの問題

Jessie VMで遊んで、1つのディスクを(事実上)切断しました。それはうまくいき、マシンは稼働し続けました。lvsただし、アレイが劣化していることを示すものはありません。ディスクを再接続し、1秒間取り外しました。走り続けました(これはraid6です)。再接続しましたが、まだ表示されていませんlvs。私はlvconvert --repairそのボリュームで走りました、それはそれがOKであると私に言いました。それから私は3番目のディスクを引き出しました...そしてマシンは死にました。それを再挿入して再起動しましたが、修正方法がわかりません。mdadm --force --assembleこれを修正します。そのオプションもありvgchangeませんlvchange(lvchangeはを受け入れますが--force、何もしないようです)。dmsetupマッピングテーブルをカーネルに直接フィードしようとしても、それを回復する方法がわかりませんでした。

また、mdadmRAIDを管理するための専用ツールです。LVMはもっと多くのことを行いますが、RAID機能がそこに押し込まれているように感じます(そして、これはかなり主観的だと思います)。それはまったく適合しません。

LVM RAIDを搭載したシステムを実際にどのようにインストールしますか?

Debian JessieまたはWheezyにインストールする簡単な概要を以下に示します。ジェシーははるかに簡単です。Wheezyでこれを試す場合は、最初にすべてを読んでください...

  1. netinstイメージではなく、完全なCDイメージを使用してインストールします。

  2. 通常どおり続行し、ディスクパーティションを作成し、LVM物理ボリュームをセットアップします。あなたはでき入れ/boot(ジェシー上、下記に詳細いくつかの作業とWheezyに上)LVM-RAIDに。

  3. ボリュームグループを作成します。LVMメニューのままにしておきます。

  4. 最初の楽しみ-インストーラーにはdm-raid.koモジュールがロードされていないか、使用できません!したがって、インストールされるlinux-imageパッケージから取得することができます。(例えば、コンソールに切り替えAlt- F2)と:

    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. インストーラーはLVM-RAID LVの作成方法を知らないため、コマンドラインを使用して作成する必要があります。注:ベンチマークは行っていません。-I以下のストライプサイズ()は、完全に私のVMセットアップの推測です。

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. Jessieでは、スワップにRAID10を使用できます。Wheezyでは、RAID10はサポートされていません。したがって、代わりに、各RAID1の2つのスワップパーティションを使用できます。ただし、どの物理ボリュームに配置するか、またはミラーの両方の半分を同じディスクに配置するかを正確に指定する必要あります。はい。真剣に。とにかく、それは次のようになります:

    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. 最後に、インストーラーに戻り、LVMメニューで「完了」を押します。これで、多くの論理ボリュームが表示されます。それは、インストーラーが何が起こっているのか理解していないことです。rimageまたはrmetaその名前に含まれるすべてのものを無視します(それらの意味については、上記の最初の段落を参照してください)。

  8. 先に進み、通常どおりファイルシステム、スワップパーティションなどを作成します。grubプロンプトが表示されるまで、ベースシステムなどをインストールします。

  9. Jessieでは、grub2はMBRにインストールされている場合(またはおそらくEFIで動作しますが、テストしていません)。Wheezyでは、インストールは失敗し、唯一の解決策はJessieのgrub2をバックポートすることです。それは実際にはかなり簡単で、Wheezyできれいにコンパイルされます。どういうわけか、バックポートされたgrubパッケージを/target(または、chrootの後にすぐに)移植してください:

    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. 実際、最近のJessie VMでgrub-installがハングしました。F2に切り替えてを実行while kill $(pidof vgs); do sleep 0.25; doneした後、同じを実行してlvs、grub-installで取得しました。それにもかかわらず、有効な構成を生成するように見えましたがchroot /target /bin/bash、念のため、確認/procして/sysマウントし、を実行しましたupdate-grub。その時、完了しました。次にdpkg-reconfigure grub-pc、すべての仮想ディスクのMBRにgrubをインストールすることを選択しました。

  11. Wheezyでは、上記を実行した後、「ブートローダーなしで続行」を選択します。

  12. インストールを完了します。起動します。恐らく。

コミュニティの知識

について知っているかなりの数の人々がいmdadmて、多くの展開経験があります。グーグルはあなたが持っているそれに関するほとんどの質問に答えるでしょう。一般的には、おそらく1日以内に回答を得るために、ここに関する質問を期待できます。

LVM RAIDについても同じことが言えません。ガイドを見つけるのは難しいです。私が実行したほとんどのGoogle検索では、代わりにmdadmアレイをPVとして使用することに気が付きました。正直に言うと、これはおそらく新しいものであり、あまり一般的ではないためです。ある程度、これに反対するのは不公平に感じますが、何か問題が発生した場合は、mdadmを取り巻く既存のコミュニティの規模が大きくなるため、データを回復する可能性が高くなります。

結論

LVM-RAIDはかなり急速に進歩しています。Wheezyでは、(少なくとも、LVMとカーネルのバックポートを行わないと)実際には使用できません。以前、2014年のDebianテストで、それは興味深いが未完成のアイデアのように感じました。現在のテストは、基本的にJessieになりますが、異なるRAID構成(管理上の悪夢のようなもの)で小さなスライスを頻繁に作成する必要がある場合、実際に使用するもののように感じますmdadm

LVMを使用してパーティションにスライスされたいくつかの大きなmdadm RAIDアレイによってニーズが十分に満たされる場合、引き続き使用することをお勧めします。代わりに多数のアレイ(または論理ボリュームのアレイ)を作成する必要がある場合は、代わりにLVM-RAIDに切り替えることを検討してください。ただし、適切なバックアップを保持してください。

LVM RAID(およびmdadm RAID)の多くの使用は、クラスターストレージ/オブジェクトシステム、ZFS、およびbtrfsのようなものに引き継がれています。また、それらを調査することをお勧めします。彼らはあなたのニーズによりよく応えるかもしれません。


ありがとうございます

LVM-RAIDの状態を再確認し、この投稿を更新してくれたpsusiに感謝します。

脚注

  1. デバイスマッパーを使用して、メタデータとデータを結合する方法で結合できると思いますmdadm --assemble。もちろん、mdadm論理ボリュームで問題なく実行できます...そしてそれは賢明です。

  2. Wheezyのインストールを行ったとき、私はこれを初めてやることに失敗し、grubの設定なしで終了しました。grubプロンプトですべての情報を入力して、システムを起動する必要がありました。一度起動すればうまくいきましたので、インストーラーでうまく動作すると思います。grubプロンプトが表示されたら、次のように入力してください。

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

PS:実際に最初の実験を行ってからしばらく経ちました。私は私の作ったオリジナルのノートが利用可能。私は現在、これらのノートではなく、この回答でカバーされているより最近のものを行っていることに注意してください。


2
実際、wheezyのlvmのバージョンが非常に古くてバグがあるため、このエラーが発生しています。ここでは、Ubuntu 14.04でlvmバージョン2.02.98を使用すると問題なく動作します(jessieは少なくとも新しいものだと思います)。第二に、失敗したことを示したコマンドはサイズ変更です。形状変更はまったく異なるものです。形状変更とは、raid1からraid5に、または3ディスクraid5から4ディスクraid5に変更することを意味します。それはまだサポートされていませんが、単にサイズを変更するだけでうまくいきます。
psusi

@psusiああ、私は彼らがリサイズもリシェイプであると考えた(それはRAIDジオメトリを変更するので、ディスクの数が変化するほど大きくはないので)。Jessieで試してみてもエラーが発生する前に、それを再テストするつもりでした。(新しいJessie LVM-RAID VMを構築する必要があるため、少し時間がかかります。)ありがとう。
デロベルト

dpkg-debdebパッケージからファイルを抽出するよりクリーンな方法を提供します。段階的にホップする必要はありません。
ムル

@muruはdpkg-debインストーラー環境で使用できますか?かつてはなかった... Wheezyもチェックしてください。
デロバート

@derobert ar -xはdebアーカイブをアンパックするためにも動作するはずですが、それは扱いにくいです。また、現在のステータスで回答を更新してみてはどうですか?
ファヒームミタ

7

LVMがRAIDを行えることも知りませんでした。個人的には、同じことを行うはるかに成熟したソフトウェアであるため、mdadmを使い続けます。LVM RAIDで何かが壊れた場合、おそらくmdadmを使用した場合ほど多くのサポートを得ることができません。また、LVMは歴史的に最も堅牢なソフトウェアではないことが示されているため、LVM RAIDを信頼しません。

ZFSとBTRFSは未来です。彼らが与える利点は、ブロック層で可能なことを超えています。互換性を目指していない限り、LVM / mdadmはもう使用しません。ZFSとBTRFSには、圧縮、重複排除、コピーオンライトなどの多くの機能がありますが、ここでは少し説明しますので、ここでは取り上げません。

最後に、調査を行い、ニーズ/希望に合ったものを使用してください。


答えてくれてありがとう。LVMを信頼しない理由について、少し拡張してみてください。
ファヒムミタ

2
「ZFSとBTRFSは未来です」とは限りません。私の知る限り、Linux上のZFSはまだFUSEベースであるため、SolarisまたはFreeBSDを使用せずにZFS機能を取得するために主に使用されます。BTRFSは素晴らしいですが、必ずしも未来ではありません。たとえば、Red HatはLVM+XFSBTRFSよりもむしろ方向に向かっているようです。彼らはBTRFSをサポートしていますが、それはOracle / SuSEのものです。
-Bratchley

なんらかの理由でbtrfsが好きではないというわけではありません(実際、とても気に入っています)。Red Hatのような主要なディストリビューションが進む方向ではないというだけで、LVM / XFSが少なくとも十分に近似できないBTRFSができることは考えられません。
ブラッチリー

また、BTRFSは素晴らしいものになると思いますが、LVMはBTRFSが(まだ)できないことをたくさんできます。たとえば、ハイブリッドボリュームとシンプロビジョニングスナップショットを実行できますが、どちらも(AFAIK)BTRFSは実行できません。
-Bratchley

9
「私の知る限り、Linux上のZFSはまだFUSEベースです」これは5年以上にわたって間違っています。ZoLはカーネルモジュールであり、完全に本番環境に対応しています。私は2010年初め以来、広範囲にそれを使用してきた
ジム・ソルター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.