Silverstack - オフロードとバックアップ -xxHash、MD5 / SHA-1チェックサム方式とMHL

 

chk01      図1: チェックサムべリフィケーション

Silverstackは元データとコピー後のデータのすべてをデータをバイト単位で照合し、完全に同一のデータであるか検証(ベリファイ)を行います。ベリファイ方式には、数種類のチェックサムアルゴリズムが用意されています。
チェックサムによるベリファイは、コピー中にファイルのデータが破損されたり改変されていないことを裏付けます。

ベリフィケーションが正常に完了すると、Silverstackは各バックアップ先メインフォルダに.mhlファイルを書き込みます。この.mhlファイルは、コピーされたすべてのフォルダが、ファイル階層構造も含めて、フォルダ内のファイルとともに複製されている状態のハッシュ情報を記録したファイルです。メディアデータの封印シールとも呼ぶべきハッシュファイルであり、ユーザーは個々のファイルに対して、元データの一貫性の裏付けを取ることができます。

chk01図2: ベリフィケーションの完了記録として保存される.mhlファイル

ハッシュアルゴリズムについての解説

ハッシュアルゴリズムとは、ファイルなどから一定量のデータごとに演算を行い、一意(重複しない)かつ再現できる固定長の「ハッシュ値」を算出します。通常ハッシュ値は一定のデータ量ごとに比較的短い16進数の文字列として出力されます。
ファイルのデータ本体の中でごく細かな改変が行われたとしても、ハッシュ結果は全く異なる値になります。このような仕組みを持つハッシュアルゴリズムは、暗号化やデータ検証などの用途に広く利用されています。
メディアコンテンツのワークフローにおいては、ハッシュアルゴリズムは、手元に無い元素材データと、手元にあるデータが改変を加えられていない同一のものであるかを照合するために有用です。ハッシュアルゴリズム

ハッシュ全般の特性

データからハッシュ値を生成するアルゴリズムは多数存在します。各ハッシュアルゴリズムは次のような特性を持っています。

    演算の複雑さ : 複雑さが高くなるほど、演算が増え、コンピューターの性能が必要となり、パフォーマンスの定価を招きます。
    衝突発生の可能性 : 別のファイルが同一のハッシュを持ちうる可能性です。(低いほど良い)
    改変・破損の検出 : データが異なっている場合は異なるハッシュが生成されます。(高いほど良い / 非常に重要)

「xxhash」 と 「md5 & sha-1」の比較

    xxHash
    演算の複雑さ : 非常に低い
    衝突発生の可能性 : 低い
    改変・破損の検出 : 非常に高い
    
    MD5 および SHA1
    演算の複雑さ : 高い
    衝突発生の可能性 : 非常に低い
    改変・破損の検出 : 非常に高い

データ転送の実測値での比較

 チェックサム方式として既に普及している「MD5」は、もともとは暗号化への対応ニーズから生まれましたが、データ伝送エラーの検出にも利用され広まったものです。非常に複雑な暗号演算が避けられない構造ゆえ、今日の最新のハードウェア環境をもってしても転送速度は300MB/sに限られてしまいます。また、ファイルの容量の内部すべてがチェックされます。

「SHA1」も同様に暗号化へのニーズから発生し、データ転送エラー検出に用いられるようになった方式です。同じく転送速度は300MB/sに留まります。同様にファイルの容量の内部すべてがチェックされます。

「xxHash」は非常に高速な非暗号化ハッシュアルゴリズムです。純粋にデータ転送エラーの検出に特化したチェックサム方式であり、MD5同様に信頼性の高いエラー検出が行えます。また、同様にファイルサイズとすべてのデータにわたって検証がおこなわれます。特に高速なデータストレージを利用した際、コピー元・コピー先が350MB/s以上の転送速度となる環境で高速な転送が行えます。

※訳注 : 1990年代初頭に発表されたMD5やSHA1に対し、xxHashは2012年末に始まった最新のプロジェクトとして、利用が急速に広まっています。Pomfortは2014年にSilverstackバージョン4でこのxxHashをいち早く撮影データのオフロード用途に採用しました。

※注意 : コピー元・コピー先が300MB/s以下の転送速度となる環境では、MD5/SHA-1より若干低速になります。350MB/sを超える環境ではxxHashが格段に高速です。MD5では300MB/s程度以上になり得ませんが、xxHashでは環境により数GB/sにまで達します。performance

xxHash64はxxHashと同じアルゴリズムですが、16進の値でハッシュを出力します。より高速なデータ転送が期待できるポスプロワークフロー環境によってはメリットとなる方式です。

Silverstackでのハッシュアルゴリズム

オフロードやバックアップの際にウィザードから任意のベリファイ方式(ハッシュアルゴリズム)を選ぶことができます。

05

図3: チェックサム方式

ソースベリフィケーション

デフォルトでは各コピーごとにソースベリフィケーションを実行します。つまりコピーが完了した後に再びソースファイルへの読込みアクセスが行われます。読み取りエラーも検出可能なこの方法はデータの一貫性をするうえで最も安全で確実です。

再読み取りの時間を短縮するために、ソースベリフィケーションを無効化することもできます。無効にした場合は、コピー時の初回の読み取りしか発生しません。ソース側のストレージの速度が極端に遅いような場合では、再読み取り時の速度にも制約が発生するので、オフロード時間の短縮のために無効化することもできます。ソースベリフィケーションの無効化は、このようなやむを得ない場合においてのみ無効化するようにすることをおすすめします。

MD5ファイル生成

MD5ファイルの提供を求めるデータ受け入れをするポストプロダクション側からの要請などに応じて、MHLだけでなくMD5ファイルを生成することもできます。MD5ファイルはMD5方式でコピーされた場合にのみ生成されます。

06図4: レガシーチェックサムファイルの生成

 

MHLについての詳しい情報は「http://mediahashlist.org」をご覧ください。