web-dev-qa-db-ja.com

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

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

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

私の考えは

  • システムの新しいドライブをホットプラグ
  • ファイルシステムを作る
  • / 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を見つける方法をグーグルで検索する必要があります)、システムを実際に新しいディスクから起動するように魔法をかけます

私は何かを忘れたか、または特に愚かな何かを計画したことがありますか?

22
Nanne

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を変更する必要があります。

16
bparker

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

使った

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
11
teeks99

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

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

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 これで、シャットダウンして古いディスクを取り外し、新しいディスクで起動できます。

0
Comdif