2008-09-10 9 views
7

ディスクのクローン作成時にLinuxを先読みさせる方法はありますか?私は "dd"という名前のプログラムを使ってディスクをクローンします。私がこれをやった最後の時間は、OSが書き込みを読み込んでいたのと同じように見えましたが、決して同時にはありませんでした。理想的には、コピー先のディスクは、ソースディスクが追いつくことができれば、もちろん待機しなくても常に書き込みを行います。高速ディスククローニング

更新:通常、クローン作成時に大きなブロックサイズを選択します(例:16Mまたは32MB)。

答えて

11

コモドールイエガーは右の程度である。

dd if=/dev/sda of=/dev/sdb bs=1M 

また、ドライブに「先読み」を調整すると、通常はパフォーマンスが向上します。デフォルトは256、最適な1024などです。各設定が異なるため、最良の値を見つけるためにベンチマークを実行する必要があります。

# blockdev --getra /dev/sda 
256 
# blockdev --setra 1024 /dev/sda 
# blockdev --getra /dev/sda 
1024 
# blockdev --help 
Usage: 
    blockdev -V 
    blockdev --report [devices] 
    blockdev [-v|-q] commands devices 
Available commands: 
    --getsz (get size in 512-byte sectors) 
    --setro (set read-only) 
    --setrw (set read-write) 
    --getro (get read-only) 
    --getss (get sectorsize) 
    --getbsz (get blocksize) 
    --setbsz BLOCKSIZE (set blocksize) 
    --getsize (get 32-bit sector count) 
    --getsize64 (get size in bytes) 
    --setra READAHEAD (set readahead) 
    --getra (get readahead) 
    --flushbufs (flush buffers) 
    --rereadpt (reread partition table) 
    --rmpart PARTNO (disable partition) 
    --rmparts (disable all partitions) 
# 
1

たぶん、あなたは、私はそれはあなたに合って、あなたが他のDDオプションを設定することができますと仮定します二つのプロセス

dd if=indevfile | dd of=outdevfile 

を使用することができます。 これにはオーバーヘッドがありますが、一方のディスク の読み取りと他方のディスクの書き込みとの間に非同期性を許可する必要があります。

0

あなたは同時にそれをしていないのですか?私はディスクキャッシュがそれが起こることを確かめることを期待するでしょう。そうでない場合は、非ブロック化または非同期の読み込み/書き込みが役に立ちます。

+0

http://www.dei.unipd.it/~zagonico/fastdd/

は、私は音のディスクが作っていたので、読み取り/書き込みスワップが発生したと考えています。 – Mike

7

bs引数を使用してブロックサイズを増やすことをお勧めします。デフォルトでは、ddはディスクの優先ブロックサイズに等しいブロックサイズを使用すると思います。これは、ディスク全体をコピーするためにさらに多くの読み書きが行われることを意味します。 Linuxのddは人間が読めるサフィックスをサポートしています:

dd if=/dev/sda of=/dev/sdb bs=1M 
0

アップデートについて:あなたのHDのキャッシュはどれくらいですか? (特に書いているもの)。それはあまりにも多く、不要なブロックを防ぐために減らす必要があるかもしれません。

+0

どちらのディスクのキャッシュサイズも記憶できません。 – Mike

5

私にとっては最速:

dd if=/dev/sda bs=1M iflag=direct | dd of=/dev/sdb bs=1M oflag=direct 

は〜100MiB/sが、他のオプションのに対し、(単一のプロセス、直接的な、デフォルト512Bのブロックサイズ、...)にも達していない30MiBに達します/ sの...

別のコンソールで実行し、進捗状況を監視するには:

watch -n 60 killall -USR1 dd 
+0

実際に 'dd if =/dev/sda of/dev/sdb bs = 1M'は私のために断食されます。 – pevik

1

を2枚のディスクが異なるチャネル(Eを使用している場合。 SATAなど)では、fastDDのような高性能ツールを使用できます。著者は主張する:

を「本研究では、コピー処理に介入し、干渉し すべてのハードウェアおよびソフトウェアのメカニズムをリコール、確実かつ効率的 コピーデータの問題を見直し当社の配慮 は、符号化されました。私たちがテストで示したように、fastddでは、データを非常にコピーできるC++プログラム を効率的に使用できます。

また、ツールは古いddと非常によく似た構文を保持します。

https://github.com/zagonico86/fastdd