rsyncを使用して実行中のシステムを新しいハードディスクに最適にクローンする方法は?


22

障害のあるハードドライブを持つサーバーとして実行されているシステムがあります。重要なデータはすべてRAID上にあり、バックアップされていますが、システム自体のイメージはありません。もちろんインストールはできるので、特に必要はありませんが、復元パスをたどる前に、まずホットコピーを試してみたいと思います。プロセスとしてこれにはいくつかの欠点があることは知っていますが、最初の手段としてそれを試すことには多くの欠点はないと思います。

  • OS:Ubuntu 12.04.4 LTS
  • ヘッドレス
  • ディスクがすでに故障しているので、あまり多くの新しいソフトウェアをインストールするつもりはありません。
  • システムは実行中です。ディスクを停止できない可能性が高くなります。これは、ddが出ている可能性があることを意味しますか?
  • 新しいディスクは、古いディスクがdd問題をさらに複雑にしているのと同じサイズ(2倍の大きさ)ではありません。

私のアイデアは

  • システムの新しいドライブをホットプラグします
  • ファイルシステムを作成する
  • / mnt / somedirにマウントします
  • ファイルをrsync
  • いくつかのfstabマジック
  • いくつかの起動マジック

まだ質問があります:

良いrsyncコマンドは何でしょうか? 私は計画していました:

rsync -aAXx  / /mnt/somedir/ 
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(たとえば、マウントされたレイドなど、いくつかのディレクトリをスキップしています)

オプションは次のとおりです。

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

プロセスを高速化するために、-H、-v、および--progressを特にスキップしています。
Ubuntuでも機能しますか?Ubuntuがハードリンクを使用するかどうかはわかりませんが、オプションが必要だとは思わないでしょうか?

この実行後、古いディスクがまだ起動している場合は、リブートして(おそらくライブUSBドライブで)rsyncを再実行できます。システムが実行されていたため、これは読み取り不能/変更されたファイルを修正します


起動を修正する方法は?
それから私の計画は/、fstabでUUIDを変更し(まだuuidを見つける方法をグーグルで調べなければならない)、システムが実際に新しいディスクから起動するように魔法をかけることです

私は何かを忘れましたか、または特に愚かな何かを計画しましたか?

回答:


16

このblkidコマンドを使用すると、すべてのブロックデバイスのUUIDを取得できます。(PARTUUIDではなく、UUIDとだけ言うものが必要です)

私が使用するrsyncオプションは-avhPHAXxです。

非常に遅いコンソール/ ttyを使用していない限り、-vまたは--progressによって速度が上がるとは思いません。

-xを使用すると、すべてのファイルシステムが異なるファイルシステム上にある場合(すべてのシステムで、lost + foundを除くすべて)の除外のすべてが不要になります。

(少なくとも私のシステムでは)ハードリンクを使用することがわかっている唯一の頻繁に使用されるプログラムはですgit。そのため、-Hオプションを追加します。-Hを使用しないことで発生すると思われる唯一の問題は、それがもう少しスペースを占有することです。

ブートローダーについては、MBRでGRUB2を使用している場合、使用するコマンドはgrub-install /dev/sda(sdaを正しいドライブに置き換えます)です。これにより、新しいドライブが起動可能になります。別のブートローダーまたはUEFIを使用している場合は、Googleで新しいドライブを正しく起動する方法を確認します。新しいドライブの/ bootは、現在と同じパーティション上にある必要があることを覚えておいてください(/ bootにUUIDも使用していない場合)、そうでない場合は、それに応じてfstabを変更する必要があります。


私が恐れている別のシステムにそれらを持っているとは思わないので、除外は慎重に思えます。私は-vの速度についていろいろなことを読んでいるので、そこで何をすべきかわからない;)。Gitは良い点です。/homeにはそのようなものがあるはずです!
ナネ14年

1
まあ、/ proc、/ sys、およびおそらく/ devは/とは異なるファイルシステム/マウントポイントであるため、-xがある場合にそれらを除外する理由はまったくありません。ルートファイルシステムの一部が不明な場合は、実行mountして確認してください。そこにあるものを手動で除外する必要はありません。
bparker 14年

どのように、そしてなぜわからないが、とにかく除外は間違っていた。彼らは実際に私がしたドライランでしたが、理由はわかりません。(まあ、私は半ランダムな場所からフォーマットをコピーしたので、それが理由かもしれない?)とにかく、あなたのアドバイスに従って-xがしっかりと配置されているので、あまり心配する必要はありませんでした。余分なことは、重要ではないもの(たとえば古いバックアップのバックアップ)も「保存」されていたことです。
ナネ14年

これは私の$$を節約しました。Linodeで12GB +システムを複製して、新しいノードを作成しました。5年以上経っても、これは機能します。みんなありがとう!
ギース

そのため、クローンを受け入れる準備ができているクローンファイルシステムをパーティション分割する場合、ルートパーティションのブートフラグを設定する必要があります。それ以外の場合、クローンドライブは起動可能であると想定しますが、これは実際には不要です。私の状況では、クローンドライブは別のサーバー上のディスクです。また、Rsyncはprodとの整合性を保つために使用されます。
NZ Dev

11

私はこれを成功させました(2、3回試した後)。

私は使った

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

次に/mnt/etc/fstab、ブートパーティションスワップ領域のファイルをリセットしました。

その後、GRUBをリセットする必要がありました

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

これは、MBRフォーマットのディスク専用です。
Teque5

2

このドライブでの起動を修正しようとしないでください。私の推薦:

  1. 障害のあるマシンでホットスワップの危険を冒す代わりに、別のマシンのドライブを接続します。
  2. rsync システム以外のファイルを新しいディスクに保存します。
  3. 別のハードディスクに、ブート、最小ルート、およびスワップを作成します。障害のあるハードディスクからクローンを作成するのと同じオペレーティングシステムをインストールします。
  4. この新しいディスクから起動します(ターゲットホストでダウンタイムの危険性がない場合は、理想的には別のマシンで起動します。そうでない場合は、このディスクでターゲットホストを起動できます)。
  5. 正しいマウントポイントを使用して、ステップ2のディスクをこの新しいシステムに追加します。これで、システムドライブのクローンが作成されました。(オプションで)この新しいディスクにパーティションをコピーできますが、OSを起動するための最小要件としてディスクを保持することをお勧めします。気づいたように、プライマリパーティションに多くのものを置くと、リカバリが困難になります。サーバーはヘッドレスであるため、ネットワーク構成を正しくコピーしてください。
  6. 障害のあるシステムのドライブをこの新しいディスクペアと交換するだけです(ステップ4で最初にターゲットを起動しないことを選択した場合)。
  7. リブート。

ダウンタイムのリスクがありますが、これは必須ではないサーバーです。ホットコピー(基本的にはホットアド)を使用していました。そのコピーははるかに高速だからです。SATA(少なくともII)について話しているので、私が思ったほど多くのリスクはないはずです。それとは別に、追加のブートディスクを提案する理由は何ですか?すでにインストールされているソフトウェア、homedirなどの問題は複雑になりませんか?D:それは私は避けるようにしようとしている多くの作業のように聞こえる
Nanne

実稼働で使用するもの。/ home、/ etc、/ var、/ usr、/ optを外部ディスク(実際にはLVM)にマウントし、/および/ bootを別のディスクにマウントします。このように、メインディスクに障害が発生しても心配する必要はありません。サービスに影響を与えずに交換するだけです。最初は少し手間がかかりますが、長期的には節約できます。特に、パーティションのスペースが不足し、ダウンタイムなしでボリュームに追加する必要がある場合。
バーハンKhalid 14年

あなたが良い点を述べている間、それは私が現在持っている要件でもなければ、必要でもありません:)。システムには他にもいくつかのディスクがあり(約7)、どこかに線を引く必要があります; D。そのため、現時点ではOSを分割する必要はありません。つまり、システムが優れているということで、今探しているものではありません。D。したがって、すべてを1つのディスクに置いておくと、外部をコピーしているという事実により、非常に遅くなりますよね?
ナネ14年

外部へのインターフェースに依存します。イーサネット上では高速、USB 2上では高速、USB 3ではさらに高速になります。非常に遅くなることはありません-もちろん、書き込まれているディレクトリ(たとえば/ tmpなど、とにかく不要なディレクトリ)やパイプが書き込まれている場所をコピーしないでください。
バーハンKhalid 14年

0

Centos Freepbxディストリビューションでrsyncに多くの時間を費やし、ブート可能な新しいディスクを用意しました。最終的にfstabとgrub UUIDを修正した後、動作しません。

それを機能させるための最後のステップは

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

Grub CLIを使用している場合(grub>プロンプトで):

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0) 
setup (hd0) 
root (hd1,0)
setup (hd1)
quit

を押すenterと、シャットダウンして古いディスクを削除し、新しいディスクで起動できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.