LVM+NBDはVMデータのバックアップと移行を実現

3023 ワード

クラウドシステムの高可用性では、VM層の高可用性が特に重要であり、VM自体のデータのバックアップと移行の問題にも関連しています.既存のプラットフォームでは、各VMのデータを個別のLV(論理ボリューム)に配置し、VMデータのバックアップは、その存在するLVをバックアップすることによって完了し、移行には他の物理サーバがVMのデータ、すなわちLVのコンテンツにアクセスできる必要がある.バックアップについてはLVMのスナップショット機能を利用し、リモートアクセスはNBD(Network Block Device)で実現する.
LVMはソフトウェア層に属し、下のハードディスクパーティションを管理している.その利点は、LVのサイズを動的に調整したり、PV(物理ボリューム)をVG(ボリュームグループ)に動的に増やしてVG容量を大きくしたり、LVスナップショットを作成したりすることで、ユーザーがLV容量が足りない場合に直接LVサイズを調整して満足させることができ、下の物理ハードディスクを再パーティション化する必要がないことである.ここでは主にLVMのスナップショット機能を使用してVMデータをバックアップします.具体的には以下の通りです.
物理サーバ名がServer 1であると仮定し、その上の仮想マシン名がVM 1であり、VM 1データはVgVmというボリュームグループに属するLV-VM 1論理ボリュームに格納される.ある時点において、VM 1データは完全であり、VM 1データが将来ある時点で破壊されたときにその時点の状態に回復しないように、この時点のデータをバックアップする必要がある.まず、次のコマンドで論理ボリュームスナップショットを作成します.
lvcreate –L 1G –s –n LV-VM1Snapshot/dev/VgVm/LV-VM1
ここで「1 G」は、必要に応じて作成するスナップショットのサイズです.指定した値が小さすぎて、スナップショットがライフサイクル中にオーバーフローすると、スナップショットは無効になります.そのため、作成時にスナップショットに書き込むデータ量を合理的に見積もる必要があります.「LV-VM 1 Snapshot」はスナップショット名で、その他のパラメータは対応するヘルプドキュメントを参照してください.
LVMスナップショットはCopy-on-write(書き込み時コピー)メカニズムを使用しており、スナップショットの作成後、LV-VM 1ボリューム上のある場所にデータを書き込むと、LVMはその場所のデータをLV-VM 1 Snapshotスナップショット論理ボリュームにコピーし、新しいデータをLV-VM 1に書き込むことで、古いデータのバックアップに役立ちます.実際の実装では、LVMはデータをコピーするのではなく、新しい場所を開いて新しいデータを書き込み、データブロックへのポインタ値を調整して目的を達成するため、速度が速くなる可能性があります.ここでは、書き込み時のレプリケーションを理解するだけで十分で、実装の詳細を深く追求する必要はありません.
以上のスナップショットが作成されると、このスナップショットにリモートでアクセスする方法が必要になり、NBDが役に立ちます.NBDはネットワークブロックデバイスとして、コンテンツソースがネットワーク上のサーバであり、サーバ/Clientモデルとして構成される.Clientマシンは、ローカルディスクにアクセスするようにデータにアクセスし、実際のコンテンツはサーバに格納されます.ClientマシンにNBDカーネルモジュールをインストールする必要があります.Clientがサーバ上のデータにアクセスすると、そのカーネルモジュールは要求をサーバに送信します.サーバ側にはnbd-serverというデーモンプロセスがあり、受信した要求を解析してデータを読み取り、Clientに戻ります.
ここでは2台の物理サーバが必要であり,そのうちの1台は前述したサーバ1であり,NBDのサーバ端とし,もう1台はNBDのClient端とし,サーバ2と仮定する.サーバ1とサーバ2にNBDをインストールし、それぞれ2台のサーバに次の手順でインストールする必要があります.
最新のインストールパッケージをダウンロード:nbd-3.2.tar.bz 2、インストールパッケージのディレクトリに入り、次のコマンドを実行します.
tar jxf nbd-3.2.tar.bz2

このコマンドは、生成ディレクトリnbd-3.2を解凍します.次にコマンドを実行します.
cd nbd-3.2
./configure//ここで「missing glib」というメッセージが表示されたら、apt-get install libglib 2を先に実行する必要があります.0-dev
make && make install
これで、サーバ1とサーバ2の両方にNBDサービスがインストールされます.
Server 1でコマンドを実行するには、次の手順に従います.
nbd-server 1234 /dev/VgVm/ LV-VM1Snapshot

ここで1234はポート番号であり、NBDでエクスポートする論理ボリューム名を柔軟に指定でき、ここでは上に作成したスナップショットボリュームである.
Server 2はNBDのClient側としてカーネルモジュールをインストールし、以下のコマンドを実行してインストールする必要があります.
insmod  /lib/modules/xxx/kernel/drivers/block/nbd.ko

このうちxxxはシステムによって異なります.
カーネルモジュールをインストールした後、コマンド「ls/dev」を実行すると、/devディレクトリにnbd 0、nbd 1などのデバイスが多く表示されます.
Server 2でコマンドを実行するには、次の手順に従います.
nbd-client Server1-IP 1234 /dev/nbd0

ここで、サーバ1−IPはNBDサーバ側のIPアドレスであり、1234はポート番号であり、/dev/nbd 0はミラー装置を表し、アクセス/dev/nbd 0は、サーバ1上のスナップショットボリューム「/dev/Vgm/LV-VM 1 Snapshot」へのアクセスと同等である.スナップショットコンテンツをサーバ2にコピーする必要がある場合は、/dev/nbd 0をddするだけでよいか、mountデバイス/dev/nbd 0をmountデバイス/dev/nbd 0にコピーしてファイルにアクセスすることもできます.
原文アドレス:LVM+NBDはVMデータのバックアップと移行を実現する