Ddを使用して、ハードドライブから大容量のコピーを作成するのに最適なサイズを見つけようとしています。私はそれを使用するのに最適なブロックサイズを見つけ出そうとしています。これは、そのドライブのハードウェアブロックサイズであると想定しています。
lsblkコマンドはこれに最適です。
lsblk -o NAME,PHY-SeC
結果:
NAME PHY-SEC
sda 512
├─sda1 512
├─sda2 512
└─sda5 512
$ Sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size: 4096 bytes
鉱山は完全な答えを意図したものではありませんが、それも役立つことを願っています。
これが http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7Zip.html からの小さなものです。
より迅速なバックアップの場合、バックアップするディスクデバイスの最適なブロックサイズを特定するのに役立ちます。/dev/sdaをバックアップする場合、fdiskコマンドを使用して最適なブロックサイズを決定する方法を次に示します。
rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units
Units = cylinders of 16065 * 512 = 8225280 bytes
Fdiskの出力に「16065 * 512のシリンダー」と表示されていることに注意してください。これは、ディスク上のブロックごとに512バイトがあることを意味します。ブロックサイズを2〜4の倍数で増やすことにより、バックアップの速度を大幅に向上させることができます。この場合、最適なブロックサイズは1k(512 * 2)または2k(512 * 4)です。ところで、貪欲になり、5k(512 * 10)のブロックサイズまたは過度のブロックを使用しても効果はありません。 最終的にシステムはデバイス自体でボトルネックになり、バックアッププロセスから追加のパフォーマンスを絞り出すことができなくなります。(強調を追加)
データセットが巨大でない限り、特定の構成の最適に近いブロックサイズと最適なブロックサイズのパフォーマンスの違いは無視できると思います。実際、FixUnix(2007年からの投稿)のユーザーは、最適な時間は次善の時間よりも5%だけ速いと主張しました。 「クラスター」サイズまたはファイルシステムブロックサイズの倍数を使用することで、もう少し効率を上げることができます。
もちろん、最適なブロックサイズのどちらかの側に離れすぎると、問題が発生します。
最終的には、絶対的に最適なブロックサイズでパフォーマンスが約5%(つまり、1時間あたり3分)しか得られない可能性があるので、さらに調査する時間と労力を費やす価値があるかどうかを検討してください。 。極端な値から離れている限り、あなたは苦しむべきではありません。
各ディスク転送は、プロセッサが処理する必要のある割り込みを生成します。典型的な50Mb/sディスクは、512bのブロックサイズで毎秒100000を生成する必要があります。通常のプロセッサは数万を処理するため、より大きな(2 ^ x)ブロックサイズがより便利です(デフォルトとして4k FS 64kまでのほとんどのシステムのブロックサイズISA DMA size)がより実用的です...
さらに、lshw
の出力を調べて他の結果を確認することもできます(また、ディストリビューションでhdparm
を使用できないようになっているためです)。これにより、絞り込みに役立つ場合があります。
Sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'