存在する「混合攻撃タイプ」という質問に対する彼の回答、HBruijnは、より標準的なMDRAIDの代わりにLVMを使用してRAIDを実装することをお勧めしました。
調査の結果、LVMはRAID機能もサポートしていることがわかりました。以前はMDRAIDの上にLVMを使用していましたが、LVMがRAID機能もサポートしているという事実はこれまで知りませんでした。これは比較的新しい開発のようですが、いつ実装されたのかはわかりません。
したがって、これはLinuxでソフトウェアRAIDを実装する代替方法です。この2つのアプローチの長所と短所は何ですか?人々がどのような方法が良いかを判断できるように、2つの方法間の機能比較を探しています。実験に基づく結論(たとえば、次の理由でこの機能は機能しませんが、この機能は機能します)も問題ありません。ただし、回答にデータを含める必要があります。
解決すべき具体的な問題は次のとおりです。
- sw RAID + LVM(一般的なシナリオ)を実行したいとします。 sw RAIDのLVMサポートを使用する必要があるため、2つではなく1つのユーティリティを使用する必要がありますか?このより統合されたアプローチにはどのような利点がありますか?
- より成熟したMDADMと比較して、sw RAIDのLVMサポートに重大な欠陥がありますか?具体的には、LVMのsw RAIDサポートはどれほど安定しており、バグはありませんか?このサポートは2011年までのみサポートされているようですが(下記参照)、MDADMははるかに古いものです。また、機能セットの面でどのように比較されますか? MDADMに比べて明らかな機能的な欠点はありますか?逆に、MDADMにないsw RAID機能をサポートしていますか?
メモ:
詳細な議論は参照 http://www.olearycomputers.com/ll/linux_mirrors.htmlところで、その文が書かれた日付を見つけることができません。
Serverfaultに関する同様の質問:Linux LVMイメージとMDイメージ。しかし、この質問は2010年に提起された質問なので、答えが古くなっている可能性があります。
バージョン2.02.87 - 2011年8月12日の変更ログエントリは次のとおりです。
MD RAID 1/4/5/6をサポートする新しいセグメントタイプ「raid」を取得するには、config --with-raidを追加します。
そのため、LVMのRAIDサポートは3年になったようです。
ベストアンサー1
LVM RAIDの完成度と機能は何ですか?
LVM-RAIDは実際にmdraidの背後にあるものです。デフォルトでは、RAIDデバイスごとに2つの論理ボリュームを作成して動作します(1つは「rimage」というデータ用、もう1つは「rmeta」というメタデータ用)。その後、それを既存のmdraidドライバに渡します。したがって、ディスク読み取りエラー処理、I / Oロードバランシングなどはかなり成熟する必要があります。
これは良いニュースです。
ツール
利用できずmdadm
(少なくとも簡単な方法ではありません)、LVM RAIDツールはまだ成熟していません。たとえば、Debian Wheezy ではlvs
RAID5 の同期状態を知る方法はありません。私は修理と修復(特に「これは起こってはいけません!」状況で)がmdadmと同じくらい良いかどうか疑問に思っています(テスト中に誤ってこれらの1つに遭遇し、ついに回復を放棄しました。mdadmを使用すると簡単になります) 。
特に、すべてのツールの最新バージョンを使用していない場合、状況はさらに悪化します。
欠けている機能
LVM-RAIDの現在のバージョンはlvreduce
RAID論理ボリュームの縮小()をサポートしていません。また、ディスク数やRAIDレベルの変更はサポートされていません(lvconvert
まだサポートされていないというエラーメッセージを表示)。lvextend
動作し、RAID10など、mdraidが最近サポートしたRAIDレベルを上げることもできます。私の経験では、LV延長はLV短縮よりも一般的であるため、これは実際には意味があります。
他のいくつかのmdraid機能は存在しません。特に、mdadmのすべてのオプションをカスタマイズすることはできません。
LVM RAIDは、以前のバージョン(Debian Wheezyのバージョンなど)での拡張もサポートしていません。たとえば、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を使用している間(実際には)ディスクを切断しました。これはうまく機能し、マシンは動作し続けます。lvs
しかし、アレイの性能が低下したという兆候はない。ディスクを再接続し、2番目のディスクを削除しました。続けて実行してください(raid6です)。再公開しましたが、まだプロンプトがありませんlvs
。私はlvconvert --repair
ボリュームを実行し、大丈夫だと言った。その後、3枚目のディスクを取り出しました...機械が停止しました。再接続して再起動しましたが、解決策がわかりません。mdadm --force --assemble
問題を解決します。そのオプションvgchange
もないようですlvchange
(lvchangeはこれを許可します--force
が、何もしないようです)。マッピングテーブルをカーネルに直接供給しようとしても、dmsetup
復元方法がわかりません。
また、mdadm
RAID管理用に特別に設計された専用ツールです。 LVMはより多くの機能を実行しますが、RAID機能があまり適していないと感じます。
LVM RAIDを搭載したシステムを実際にどのようにインストールしますか?
以下は、Debian JessieまたはWheezyにインストールする方法の簡単な概要です。 Jesseははるかに簡単です。 Wheezyでこの方法を試すには、まず記事全体を読んでください。
インストールには、netinstイメージではなくフルCDイメージを使用してください。
通常どおりにディスクを分割し、LVM物理ボリュームを設定します。あなたできるLVM-RAIDをインストールします
/boot
(JessieとWheezyでは次のように動作します)。ボリュームグループを作成します。 LVM メニューにそのまま残します。
最初の興味深いのは、インストーラがモジュールを
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
インストーラはLVM-RAID LVを作成する方法がわからないため、これを行うにはコマンドラインを使用する必要があります。以下のストライプサイズ()はベンチマークを実行せず、
-I
VM設定から完全に推測されています。lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
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
最後に、インストーラに戻り、LVMメニューの[完了]をクリックします。今あなたはたくさん表示される論理ボリュームの数。これは、インストーラが何が起こっているのか理解していないためです。名前を含む内容は無視してください
rimage
(rmeta
これについては上記の最初の段落を参照)。ファイルシステム、スワップパーティションなどを正常に作成し続けます。基本システムをインストールし、grub プロンプトが表示されるまで待ちます。
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
実際、最近、Jessie VM で grub のインストールが中断されました。 F2 に切り替えて実行し、
while kill $(pidof vgs); do sleep 0.25; done
同じコマンドを実行してlvs
grub-install からインポートします。それでも有効な設定を作成しているようですが、準備ができてインストールされていることをchroot /target /bin/bash
確認してからそうしました。時になると終わる。その後、すべての仮想ディスクのMBRにgrubをインストールすることにしました。/proc
/sys
update-grub
dpkg-reconfigure grub-pc
Wheezyは上記の操作を実行した後、「ブートローダなしで続行」を選択します。
インストールを終了します。始まります。おそらく。
地域社会の知識
mdadm
これについて知っていて、展開経験が豊富な人がかなりあります。 Googleはおそらくあなたに関連するほとんどの質問に答えます。一般的に、ここで質問すると、1日以内に答えが得られます。
LVM RAIDではそうではありません。ガイドを見つけるのは難しいです。私が実行しているほとんどのGoogle検索は、mdadm配列をPVとして使用する方法を示しています。正直なところ、それはおそらくより新しく、あまり一般的に使用されていないからです。ある意味、これに反対するのは不公平だと感じますが、mdadm周辺の既存のコミュニティは規模が大きく、問題が発生した場合にデータを回復する可能性も高くなります。
結論として
LVM-RAIDの開発は非常に高速です。 Wheezyでは実際には使用できません(少なくともLVMとカーネルをバックポートしないと可能です)。 2014年初め、Debianテストでは興味深いがまだ完成していないアイデアのように感じました。デフォルトでは、Jessieになる現在のテストは、さまざまなRAID構成でタイルを頻繁に作成する必要がある場合(管理が悪夢になる可能性があるmdadm
)、実際に使用できるように感じます。
大規模なmdadm RAIDアレイ(LVMを使用して分割)で要件を適切に満たすことができる場合は、続行することをお勧めします。最終的に多くのアレイ(論理ボリュームアレイを含む)を作成する必要がある場合は、代わりにLVM-RAIDの使用を検討してください。しかし、バックアップを維持してください。
LVM RAID(およびmdadm RAID)の多くの使用は、クラスタ化されたストレージ/オブジェクトシステム、ZFS、btrfsなどに置き換えられています。私はこれらも調べてみることをお勧めします。あなたのニーズにもっと合うかもしれません。
ありがとう
ありがとうございますプシュ市LVM-RAIDの状態をもう一度見て、この記事を更新しましょう。
脚注
私はあなたが何らかの方法でメタデータとデータを一緒に貼り付けるためにデバイスマッパーを使用できると思います
mdadm --assemble
。もちろん、mdadm
論理ボリュームで実行することもできます...それはよりスマートです。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:元の実験を実際にしてからかなり時間がかかりました。私は私の仕事をしました。周り書くことができる。私は今、そのノートではなく、この答えで扱うより最近の作業を行いました。