(別の「コピーと確認」の質問...)
複数のHDD間で適切な量のデータをコピーしたいと思います。
現在のコピー方法は非常に標準的です。コピーして確認します(sha256を使用)。私は追加のステップに関連する時間が好きではありません。 30〜60分のチェックサムであれば、プロセスを中断するのに十分であり、すべてのステップを見逃すことなくすべてを正しく検証するために一生懸命努力する必要があります。
だから、特にワンステップの複製と検証プロセスを探しています。
ただし、ディスクキャッシュからコピーされたファイルを再読み込みしたくありません。、これは検証ポイントを無効にするためです!
必要な場合は、この作業のために独自のツールを作成する準備ができていますが、ここのコメントに同意し、私が説明したものと同じツールをすでに作成している人の意見を必ず聞きたいです。
Linuxでは.を使用できることもわかっていますecho 3 > /proc/sys/vm/drop_caches
。ただし、これを数キロバイトまたはメガバイトごとに実行すると、I / Oパフォーマンスが確実に低下します。この特定の技術は通常移植可能ではないため、この問題に対する解決策としてファイルとして保存したくありません。
私はfsync(file); fdatasync(file); fsync(dir); fdatasync(dir)
これがおそらく良い出発点になることを知っています(ここでは過剰です)。しかし、シーケンシャルストリームスループットが減るのか心配ですか?
現在の私の考えは、読み取り/書き込みコピーを実行すると同時に、読み取り/書き込みが到達した場所より256MBの後にある宛先ファイルも開くことです。素晴らしい次に、$ copypoint-256MBの場所を順次読み込み、HDDオンボードコントローラとキャッシュRAMの範囲で確認します。
素敵な足踏みをしO_SYNC | O_DIRECT
て適切なスピードを得ることができますか?そして私のリードバックがディスクプラッタからデータを取得することをどのくらい保証しますか?
それとも...後で書く最初にチェックするのが、「最新の」オペレーティングシステム、HDDコントローラ、および優れたセキュリティファイルI / O設計の最適ではない状態を処理するための最良の方法ですか? :/
ベストアンサー1
ファイルをソーシングcat
し、パイプしてtee
ターゲットに保存すると同時に出力をsha256sum
。キャッシュの代わりにディスクからターゲットを再読み込みする場合は、dd
このiflag=direct
オプションを使用できます。