AとBの2つのサーバーがあります。サーバーAをBに複製したいと思います。AはLinuxを実行しており、どちらもリモートであり、物理的にアクセスできません。
これに取り組むための最良の方法は何ですか?
Bashスクリプト backup-images-1.0.sh リモートLinuxマシンのディスクのクローンを作成するプロセスを自動化します。 dd
コマンドをssh
およびgzip
コマンドと一緒に使用して、リモートディスクをコピーおよび圧縮し、SSH接続を介してその場でローカルディスクに送信します。
Backup-images-1.0.shを作成したRadovanBrezulaが作成したbackup-images-1.0.shを使用して、リモートディスクをローカルディスクに複製する例。
dd
を使用してローカルディスクをリモートディスクに複製する例
dd if=/path/to/disk/image ibs=4096 conv=notrunc,noerror | (ssh 132.183.12.128 dd of=/remote-archive/test/remote-archive-test.img obs=4096)
ibs=4096
一度に最大4096バイトを読み取る
conv=notrunc,noerror
出力ファイルを切り捨てず、読み取りエラー後に続行します
obs=4096
一度に4096バイトを書き込む
これを行うには、少なくとも3つの異なる方法があります。
このオプションは、適切なドキュメントを備えた大企業で主に役立ち、PXEブートとパペットまたは同様のセットアップを使用したセットアップに拡張される可能性があります。
基本的に、サーバーBでサーバーAを構成するために使用したのと同じ手順を繰り返します。
これは、セットアップが十分に大きい場合に非常にうまく機能します(たとえば、100台のサーバーを実行していて、サーバー101を起動したい場合。PXEブート、$ typeのサーバーである必要があることをパペット構成に伝え、1時間後に戻ってきます。完了!)。
セットアップする作業はたくさんありますが、後で完璧になります。そして、すべてのセットアップ作業で、セットアップを一度コピーする価値はおそらくないでしょう。
すべてのファイルをサーバーAからサーバーBにコピーして、それらの権利とユーザーを保持できます。 rsync
はおそらくこれに最適なツールです。
このためには、同様の設定でターゲットサーバーを準備し(パーティション設定をコピーするなど)、ほとんどのファイルをrsyncします。ここで注意が必要なのは、一部のファイルをrsyncしたくない(たとえば、/ procや/ devをスキップする)ことと、サーバーBでrsyncファイルを受信するための何かが必要なことです。
最後に、サーバーBを別のディスクから起動するか、ILO/DRAC/..を使用してデスクトップ上のliveCDisoイメージから起動し、ディスクをむき出しにしてrsyncファイルを受信できるようにします。
これは、ファイルシステムのコピーとは異なります。それははるかに簡単でおそらくはるかに高速ですが、rawディスクアクセス(たとえばddを使用)はすべてのファイルシステムの変更を無視します。これは、実行中のファイルシステムを本当にコピーしたくないことを意味します。
これを簡単に理解できるように、本をイメージしてください。この本には索引と4つの物語があります。本の残りの部分は空白であり、これは本の索引にもうまく示されています。
今、私たちはコピーを開始します。インデックスをコピーします。ストーリー1をコピーします...
**ちょっと待って、ここに新しいストーリーを追加して、インデックスを変更しましょう**
stopry 2、3、4、5をコピーします。
これで、4つのストーリー(ストーリー5を書く前にコピーしたので5つではなく、5つのストーリー)を示すインデックス付きのaqブックができました...破損した本。
Rawディスクアクセスを使用して実行中のシステムをコピーすると、同様のことが発生する可能性があります(発生する可能性があります)。したがって、rawディスクコピーを使用する前に、OSがオフラインであることを確認してください。別の何かを起動して(たとえば、2番目のディスクから、ローカルCDから、またはネットワーク経由(PXE、DRACなど))、コピーします。
これを行う方法の詳細は、すでにここ[su]のたくさんの投稿にあります。
ディスクイメージングの場合、私は clonezilla が好きですが、ディスクを機能させるには、ディスクから起動するための物理的なアクセスが必要です。正直なところ、完全に完全に消灯したリモートのフルシステムコピーを実行できるとは思いません。 rsyncはこれまでのところしか取得できません。両方に完全なシステムがすでにインストールされていて、それ以外は同一である場合は、ホストAと同じアプリをホストBにインストールできます。その後、必要な構成ファイルをAからBにコピーするだけです。 tは必ずすべてをコピーする必要があります。
ここではrsyncが解決策だと思います。ただし、rsyncセッション中にすべてのファイルが書き込み可能かどうかはわかりません...
サーバーAでパーティションのddクローンを作成し、それをサーバーBに転送することを検討しましたか?少しワイルドに聞こえますが、おそらく最後の手段としてですか?