rootfsを別のパーティションにコピーする方法(ddが問題を引き起こす)

rootfsを別のパーティションにコピーする方法(ddが問題を引き起こす)

私はddを使って私のrootfsを別のパーティションにコピーし、新しいrootfsコピーでシステムを起動しました。

sudo dd if=/dev/disk/by-partuuid/342853ea-cab9-4a4f-b935-1a704c1cc17f conv=sync,noerror bs=4M of=/dev/nvme0n1p1

ここで、 partuuid は rootfs パーティションの部分 uuid です。

問題は、時にはddによってコピーされたrootfsが少し破損しているように見えることです。 (私のファイルが破損しているかddが停止しました)

これを行うために使用できるより安全なオプションはありますか?

答え1

問題は、時にはddによってコピーされたrootfsが少し破損しているように見えることです。 (私のファイルが破損しているかddが停止しました)

さて、今は両方のrootfsがマウントされていないことを意味していることを理解しています。問題はUSBのない組み込みシステムを使用しているため不可能です。サポートする。

全長DR
ソースおよび/またはターゲットファイルシステムポジティブrsync(ローカルまたはネットワーク経由)または一般を使用して(インストール)cpファイルシステムレベルでコピー(同期)します。

ブロックレベルで
ファイルシステムを安全にコピー(複製)できます。ブロックレベル (フルディスク、パーティション、論理ボリューム)のみ2つのファイルシステム- ソースおよびターゲットブロックデバイスでインストールされていません

次の理由により、ターゲットに一貫性のないコピー(破損したファイルシステム)が作成されます。

  • マウントされたファイルシステムソースブロックデバイスプログラムがデフォルトのソースブロックデバイスからブロックを読み取ると、対応する(メタ)データと他の内部構造が絶えず変更されます。

  • ファイルシステムもインストールされています対象ブロック装置プログラムがオペレーティングシステムを迂回してターゲットブロックデバイスに直接ブロックを書き込むと、対応する(メタ)データと他の内部構造が常に読み書きされます。オペレーティングシステムとターゲットシステムで実行されているプログラムのメモリ状態がファイルシステムのメタ(データ)と一致しないため混乱し、誤ったデータを読み書きすることでメタ(データ)が破損する可能性があります。

ブロックデバイスは、上位層(主にファイルシステム)がオフライン(マウントされていない、非アクティブ)の場合にのみコピーする必要があります。

ファイルシステムレベルで
これはファイルシステムがマウントされたことを意味します。

コピー中にターゲットファイルまたはソースファイルが更新されると、ブロックデバイスなどの不一致が発生する可能性がありますが、ターゲットファイルシステム(論理レベル)に保存されているデータにのみ適用されます。実行中のオペレーティングシステムとアプリケーションは、使用するターゲットファイルを置き換えると混乱する可能性があります。

100%保証では、ソースシステムで読み取り用に開いているファイルのみをコピーでき、ターゲットシステムのオペレーティングシステムまたはアプリケーションで書き込み用に開いていないファイルはコピーできません。

マウントされたアクティブファイルシステムから別のマウントされたアクティブファイルシステムにファイルをコピーできますが、結果は異なる場合があります。

ハードウェアアーキテクチャ、ファイルシステム層、展開などの異なるデバイス間でファイルを盲目的にコピーすることはできません。

ファイルシステムレベルのレプリケーションの場合rsync(ローカルまたはネットワーク経由)または単純ですcp

両方のシステムに固有のランタイムデータを含むディレクトリをコピーしないでください。例:/dev、、、、、、、、、、、構成ファイル、実行中のデータベースファイルなどは、ターゲットシステムとソースシステム/procの違いによって異なります/sys/tmp/run/var/run/var/tmp/lost+found/media/mnt

ファイルシステムがlvm論理ボリュームにあり、スナップショットからファイルをコピーしている場合は、lvmスナップショットを使用できます。

xfsを使用すると、ソースファイルシステムがオンラインのときにxfsdump /source_fsをxfsrestore /target_fsにパイプできます。

答え2

ソースファイルシステムが固定/解除メカニズムをサポートしている場合は、それを順番に使用できます(ターゲットファイルシステムがマウントされていないと仮定)。 1/ソースファイルシステムを固定し、2/ブロックをコピーするためにddを使用し、3/固定解除を解除します。ソースファイルシステム

ソースファイルシステムが固定されると、書き込みアクセスはできません。ソースファイルシステムが「atime」オプションでマウントされている場合、読み取りアクセスでも書き込みが生成されます(「アクセス時間」メタデータを更新するため)。ユースケースに応じて、これが可能な場合と不可能な場合があります。

https://linux.die.net/man/8/fsfreezeLinux Ext3/4、ReiserFS、JFS、および XFS をサポートすることをお勧めします。

ただし、COW fs(ソースと宛先と同じ)を持ち、btrfs送受信メカニズム(またはZFS)などのスナップショットを参照点として使用して、ブロック単位の増分転送を使用できます。しかし、埋め込みコンテキストにこの種のファイルシステムがあるかどうか疑われます。

関連情報