複製されたこれらのSDカードのコンテンツに異なるsha1sumがあるのはなぜですか?


17

さまざまなメーカーのクラス10 UHS-1 SDHC SDカードがたくさんあります。それらはすべて次のように分割されます

 $ sudo fdisk -l /dev/sdj
Disk /dev/sdj: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000de21

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdj1          2048  1050623  1048576  512M  c W95 FAT32 (LBA)
/dev/sdj2       1050624  2099199  1048576  512M 83 Linux
/dev/sdj3       2099200  3147775  1048576  512M 83 Linux
/dev/sdj4       3147776 31116287 27968512 13.3G 83 Linux

メモリカードデュプリケーターを使用して画像をコピーしました。すべてのカードのコンテンツは同じです。

2枚のSDカードの2番目のパーティションをマウントしてコンテンツを比較すると、まったく同じです。

 $ sudo mount -o ro /dev/sdg2 /mnt/system-a/
 $ sudo mount -o ro /dev/sdj2 /mnt/system-b/
 $ diff -r --no-derefence /mnt/system-a /mnt/system-b/
 $ # prints nothing^

ただし、パーティションのsha1sumを比較すると、時々異なる

 $ sudo dd if=/dev/sdg2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.3448 s, 43.5 MB/s
ee7a16a8d7262ccc6a2e6974e8026f78df445e72  -

 $ sudo dd if=/dev/sdj2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.6412 s, 42.5 MB/s
4bb6e3e5f3e47dc6cedc6cf8ed327ca2ca7cd7c4  -

見知らぬ人は、のようなバイナリ差分ツールを使用してこれらの2つのドライブを比較するとradiff2

 $ sudo dd if=/dev/sdg2 of=sdg2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2378 s, 43.9 MB/s

 $ sudo dd if=/dev/sdj2 of=sdj2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2315 s, 43.9 MB/s

 $ radiff2 -c sdg2.img sdj2.img
767368

767368の変更diff。コンテンツに違いは見られませんでしたが!

そして健全性のために、同じsha1sumを持つ2つのパーティションを比較すると、次のようになります

 $ radiff2 -c sdj2.img sdf2.img
0

変更なし!

これは、さまざまなカードから見たさまざまなsha1sumの内訳です。カードの製造元は、ddを使用してドライブを読み取るときに取得するsha1sumに大きな影響を与えているようです。

ここに画像の説明を入力してください

sha1sumsの違いにもかかわらず、これらのカードはすべて私の目的のために機能します。ただし、sha1sumを比較できないため、整合性チェックが難しくなっています。

2つのSDカードパーティションが異なるsha1sumを持ち、マウントされたときにまったく同じコンテンツを持つことはどのように可能ですか?


回答:したがって、期待どおりに動作するようになりました。問題を解決するために、矛盾は、私が使用していたSySTORの複製によって引き起こされました。コピー設定では、コピーされたパーティション情報とファイルを使用しましたが、1対1の一致を保証するためにビットをddする必要はありませんでした。


3
このようなカードを使って、どのようなテストを行っていますか?:)
hjk

それらをマウントした後で比較する場合、問題があります。
デビッドHoelzer

回答:


18

複製したコンテンツを書き込んだ直後に、それらのコンテンツを比較しましたか?はいの場合、まったく同じように表示されるはずです。例えば、

# Duplicate
dd bs=16M if=/dev/sdg of=/dev/sdk

# Comparing should produce no output
cmp /dev/sdg /dev/sdk
# Compare, listing each byte difference; also no output
cmp -l /dev/sdg /dev/sdk

これは、カードのサイズがまったく同じ場合にのみ当てはまります。製造元とモデルが同じカードの異なるバッチであっても、サイズがわずかに異なる場合があります。使用するblockdev --getsize64デバイスの正確なサイズを取得するためにします。

また、両方のカードのサイズがまったく同じであるが、カードの容量よりも小さいイメージを両方のカードに書き込んだ場合、イメージの末尾の後にあるゴミにより、差異が報告される場合があります。

デバイスにファイルシステムをマウントすると、違いが見え始めます。ファイルシステムの実装は、空のジャーナルや、ファイルシステムをクリーンとしてマークするフラグ/タイムスタンプなど、ファイルシステムにさまざまなものを書き込みます。これにより、同一のコンテンツが表示されなくなります。これは、ファイルシステムを読み取り専用でマウントした場合でも、状況によっては当てはまると思います。


OP 使用する必要がありますblockdev --getsize64か?それは次のようになりdd、それが読み込まれるデータの量を発表しています。
G-Manが「Reinstate Monica」と言う

3
EIBTI。サイズを照会すると、本当に明確になります。コピーdd量を報告します。イメージファイル、1つのデバイスのサイズ、および別のデバイスのサイズなどのサイズが一致しない場合。ソース、デスティネーション、またはその両方のサイズである可能性があります。
セラダ

あなたが正しい。彼らはそうあるべきでありまったく同じです。これをさらに調べた結果、矛盾はSySTORデュプリケーターのコピー設定が原因であることがわかりました。いつdd自分のコンピュータからSDカード(私はデュプリケータ用のマスターイメージと同じように)、すべてのshasumsが一致します。私は「全体のメディア」と、今、すべての重複のカードが一致しているshasumsに「システムとファイルデータのみ」からSySTORの設定を変更
peskal

8

Celadaの答えに基づいて:一方では、diffマウントされた2つのファイルシステム間で(再帰的)実行しています。一方、ファイルシステムがマウントされた後、明らかにファイルシステムが存在するデバイス間でバイナリ比較を実行しています。それはリンゴとザクロです。

マウントされたファイルシステムレベルでの操作では、ファイルシステム内のファイルのデータコンテンツのみを表示できます。デバイス間のバイナリ比較は、データとメタデータ調べます。767368の違いに少し驚いていますが、いくつか推測できます。

  • ファイルシステムをマウントすると、カーネルは現在の時間を「マウント時間」としてファイルシステムのスーパーブロックに書き込みます。両方のデバイスをマウントした場合(まったく同時にではない場合)、スーパーブロックの「マウント時間」は異なります。
  • 再帰的なファイルシステムの後にデバイスレベルのバイナリ比較を行うと、diff各デバイスのすべてのファイルのアクセス時間が(iノードで)更新されます。

PSあなたはddそんなに使う必要がありますか?あなたがやったらどうなりますradiff2 -c /dev/sdg2 /dev/sdj2sha1sum /dev/sdg2


これは、ドライブを読み取り専用としてマウントする場合でも適用されますか?マウントする前にshasumの比較も行いましたが、まだ違いがあります。また、読み取り専用としてマウントした後のshasumの変更を見たこともありません。-また、あなたは正しいです、私はdd賞の無駄な使用を獲得する必要があります:p
peskal

(1)いいえ。疑わしい(つまり、経験と一貫性がある)ため、ファイルシステムをro(読み取り専用)としてマウントしても、変更は発生しません(または許可されません)。(ソフトウェアが行うべきこと以外のことを行うソフトウェアのケースを1つまたは2つ見たことがあります。)(2)コメントを読んだ後(この記事の執筆時点で各回答に1つ)起こりました。あなたはすぐに(取り付け前)複製した後、...(続き)(すなわち、それは違いを発見した)のいずれかの編集にご質問をいただくか、あなたは比較の障害を持った状況を説明する答えを投稿します
G-マンが「回復モニカ言います

(続き)…そして、あなたはそれを解決するために何をしましたか?(3)好きですが、「UUOD」、「UUODD」、または「UUDD」と呼ぶべきですか?私は「UUDD」に投票しますが、おそらくMetaで取り上げる必要があります。:-)⁠
G-マンは「元に戻すモニカ言う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.