2008-09-10 4 views
7

디스크를 복제 할 때 Linux를 미리 읽을 수있는 방법이 있습니까? "dd"라는 프로그램을 사용하여 디스크를 복제합니다. 이 작업을 마지막으로 한 것은 OS가 글을 읽는 중이었지만 동시에 쓰는 것 같지 않았습니다. 이상적으로, 대상 디스크는 원본 디스크가 계속 유지할 수있는 경우 물론 기다리지 않고 끊임없이 기록합니다.빠른 디스크 복제

업데이트 : 일반적으로 복제 할 때 큰 블록 크기를 선택합니다 (예 : 16M 또는 32MB).

답변

11

제독 저격병 바로 약이다. 기본값은 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의 캐시 용량은 어느 정도입니까? (특별히 쓰는 것). 너무 많아서 불필요한 차단을 막으려면이 값을 줄여야 할 수 있습니다.

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

또한, 드라이브의 "미리 읽기"를 조정하는 것은 일반적으로 성능을 향상 :

+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 bs = 1M'의 dd if =/dev/sda는 나를 위해 금식됩니다. – pevik

1

을 두 개의 디스크가 다른 채널 (예를 사용하는 경우. SATA)를 사용하면 fastDD와 같은 고성능 도구를 사용할 수 있습니다. 저자는 주장 :이 작품에서

"

, 우리는 개입 및 복사 과정에서 INTERFER 모든 하드웨어 및 소프트웨어 메커니즘을 회수하고, 안정적이고 효율적으로 데이터를 복사하는 문제를 검토 우리의 고려가 코딩되어있다. fastdd에서 데이터를 매우 복사 할 수있는 C++ 프로그램 을 효율적으로 테스트 할 수 있습니다. "

또한이 도구는 이전의 dd과 매우 유사한 구문을 유지합니다.

https://github.com/zagonico86/fastdd