전체 디스크 dd 속도를 어떻게 높일 수 있습니까?


62

내가 뭐하는 거지 dd명령으로 두 개의 동일한 드라이브 :

 dd if=/dev/sda of=/dev/sdb bs=4096

두 하드 드라이브는 모두 동일한 모델 번호이며 1TB의 저장 공간이 있습니다. /dev/sda 4096의 블록 크기를 사용합니다. /dev/sda로컬 드라이브이며 /dev/sdb원격 캐디입니다. 다음 프로토콜을 사용할 수 있습니다.

  • USB2.0 High Speed ​​(현재 계획)
  • 기가비트 Over-The-Network 복제 (실제로 시도조차 원하지 않음)
  • USB3.0 (다른 드라이브 캐디를 찾은 경우)
  • eSATA (케이블을 찾거나 구매할 경우)
  • SATA (케이블을 찾거나 구입하면 랩톱 CD 드라이브를 좋아해야 함)

이 드라이브 사본을 실행하는 방법이 96 시간 미만입니까? 이외의 도구를 사용할 수 있습니다 dd.

다음 파티션 (UUID 포함)을 복제해야합니다.

  • Fat32 EFI 파티션 (*)
  • NTFS Windows 파티션 (*)
  • HFS + OSX 파티션
  • EXT4 우분투 파티션 (*)
  • 스왑 파티션 (*)

* Clonezilla 지원


나는 Clonezilla를 시도했지만 훨씬 빠르지 만 HFS + 스마트 복사를 지원하지 않습니다. 아마도 최신 버전이 이것을 지원합니까?

첫 번째 복제본을 만들 때 HFS +를 제외한 모든 파티션을 수행했으며 매우 빠르게 진행되었습니다. (총 3 시간 이내)


1
clonezilla와 같은 것을 사용하는 것이 좋습니다. 여유 공간을 포함하여 모든 것을dd 복사 합니다. 디스크가 꽉 차지 않은 큰 디스크를 사용하면 단점이 분명해집니다.
거미 보리스

SATA 케이블을 구입하고 외장 드라이브를 마더 보드의 SATA 포트에 임시로 연결할 수 있습니까?
Mark Plotnick

아마도 누군가는 다음에 대해 자세히 설명 할 수 있습니다. Clonezilla를 사용하여 HFS +를 제외한 모든 파티션을 복제하고 해당 단일 파티션에 dd를 사용하여 파티션 테이블을 복제 (어떻게 clonezilla 또는 dd 사용)합니까? 이것이 가능할까요?
Alexander

@Alexander 이것이 첫 클론을 만든 방법입니다.
Kaz Wolfe

1
@LuisAlvarado 방금 클론을 시작했습니다!
Kaz Wolfe

답변:


68

내 경험상, 나는 명령 줄에 더 빠른 것이 없다고 생각 dd합니다. bs매개 변수를 조정하면 속도가 증가 할 수 있습니다. 예를 들어 읽기 / 쓰기 속도가 100MB / s보다 큰 2 개의 HDD가 있으므로 다음과 같이하십시오.

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

또한이 pv두 드라이브에서 가장 빠른 속도를 확인하고 복제에 진행하는 (먼저 설치해야합니다). 물론 루트에서 수행해야합니다.

pv < /dev/sda > /dev/sdb

PV를 사용하면 156MB / s를 얻었습니다.

pv속도 를 제외하고 좋은 점은 진행률, 현재 속도, 시작 이후 시간 및 ETA를 보여줍니다. HFS +와 관련하여, 나는 "속도"부분을 돕기 위해 노력하고 있습니다. 으로 pv또는 매우 최적화 된 bs매개 변수, 당신은보다 7 시간 (1백50메가바이트 / s의 현재 속도로 6 시간 50 분)에서 4 TB 드라이브를 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

사용중인 연결 유형과 사용 가능한 다른 유형으로 몇 가지 테스트를 수행했습니다. Asus Z87 Pro와 Intel DZ68DP를 사용하고있었습니다. 이것은 내 결과 있었지만, 처음으로 우리는 많은 전송 속도 (원시 속도)에 대한 이론적 인 속도는 단지, 것을 알 필요가 이론 . 실제 테스트를 수행 한 결과 실제 속도의 40 % ~ 80 % 사이였습니다. 이 테스트는 사용 된 장치, 연결 유형, 마더 보드, 연결 케이블 유형, 파일 시스템 유형 등에 따라 변경 될 수 있습니다. 이를 염두에두고 이것이 내가 얻은 것입니다 (장치에 대한 쓰기 속도 만 테스트했으며 읽기는 일반적으로 더 높습니다).

Connected Device  -  Connection Type  -  Speed (Write Speed)
  USB 2.0                 USB 2.0              25 MB/s
  USB 3.0                 USB 2.0              35 MB/s
  USB 3.0                 USB 3.0              73 MB/s
  eSata                   eSata                80 MB/s
  Sata 2G HDD             Sata 2G              120 MB/s
  Sata 3G HDD             Sata 2G              140 MB/s
  Sata 3G HDD             Sata 3G              190 MB/s
  Sata 2G SDD             Sata 2G              170 MB/s
  Sata 3G SDD             Sata 2G              210 MB/s
  Sata 3G SDD             Sata 3G              550 MB/s 

3
dd의 진행 상황을 얻으려면 USR1 신호를 보내십시오. dd의 단점은 여유 공간을 복사한다는 것입니다.
jfs

1
내 경험에 따르면 bs매개 변수를 조정하면 dd속도가 빨라질 수 있습니다 cat. cat처음부터 잘 사용할 수도 있습니다 .
Gilles

3
pv그 자체로 매우 잘 작동합니다.
Kaz Wolfe

11
dd를 사용하여 작업을 수행 할 수 있지만 체인에 pv를 삽입하여 다음과 같은 전송 속도를 모니터링 할 수 있습니다.dd if=/dev/sda1 | pv | dd of=/dev/sdb1
thomasrutter

4
나는 항상 pv사이에 사용 했습니다 dd. 그것이 독립형으로 사용될 수 있다는 것을 결코 알지 못했습니다!
korylprince

12

파티션 도매를 복사하려면 대신을 사용하십시오catdd . 얼마 전에 벤치 마크를 실행 하여 두 디스크 사이에 파티션이 아닌 큰 파일을 복사했습니다 (동일한 디스크에서 상대 타이밍이 다름).

dd bs=64M    51.3
dd bs=1M     41.8
dd bs=4k     48.5
dd bs=512    48.9
cat          41.7
cp           45.3

이 벤치 마크의 결론은 dd문제에 대한 블록 크기의 선택 (그렇지는 않지만)을 cat빠르게 복사하는 가장 좋은 방법을 자동으로 찾는다는 dd것입니다. 속도를 늦출 수 있습니다. 블록 크기가 작 으면 dd작은 읽기 및 쓰기 시간이 낭비됩니다. 블록 크기가 크면 한 디스크가 유휴 상태를 유지하고 다른 디스크는 읽거나 쓰는 중입니다. 한 디스크를 읽는 동안 다른 디스크를 쓸 때 최적의 속도가 달성됩니다.

파티션을 복사하려면을 사용하여 파일을 복사하는 것이 더 빠를 수 있습니다 cp -a. 사용 가능한 공간이있는 파일 수와 파일 시스템 크기에 따라 다릅니다. 파일을 복사하면 파일 수에 거의 비례하는 오버 헤드가 있지만 다른 한편으로 여유 공간을 복사하면 시간이 낭비됩니다.

USB2의 최대 데이터 속도는 50MB / s 미만이며 1TB를 전송하는 데 6 ~ 7 시간이 걸립니다. 이것은 USB 버스를 포화시킬만큼 빠른 하드 디스크를 가정합니다. 7200 rpm 드라이브가 더 빠르다고 생각하지만 5900rpm은 그렇게 빠르지 않을 수도 있습니다 (선형 쓰기의 경우 일 수도 있습니다).

두 디스크 중 하나를 병렬로 사용하는 경우 디스크 헤드를 움직여야하므로 복사 속도가 상당히 느려질 수 있습니다.


그래도 전체 디스크를 복사하려고합니다.
Kaz Wolfe

차이는 같은 순서로 예상되지만 더 안정적인 데이터를 얻기 위해 시스템에서 벤치 마크를 실행하십시오.
Gilles

cat에 사용 dd if=ubuntu.iso of=/dev/usb? dd이 작업을 USB2 또는 USB3으로 수행하는 속도는 매우 느립니다.
Oxwivi

1
@Oxwivi 예, cat ubuntu.iso >/dev/usb정확히 같습니다. 의 마술은 없으며 dd입력을 출력으로 복사하는 도구 일뿐입니다.
Gilles

위에 주어진 cat 명령은 Mac에서 작동하지 않았습니다. 나는 sudo cat linuxmint-17.3-cinnamon-64bit.iso >/dev/disk1다시 시도했다 "-bash : / dev / disk1 : Permission denied"
Nay

12

문제는 연결 유형 및 블록 크기입니다. 가장 빠른 결과를 얻으려면 블록 크기가 일반적으로받는 최저 쓰기 속도의 절반이어야합니다. 이것은 당신에게 안전한 마진을 줄 것이지만 여전히 많은 수를 허용합니다. 물론 데이터를 보유하기에 충분한 램이 필요합니다.

USB 2.0은 초당 12Mbps (Mbps), USB 2.0 고속은 480Mbps입니다. 이것은 물론 원시 속도입니다. 바이트 당 8 비트 및 프레이밍 오버 헤드로 사용 가능한 속도 (MB / s)는 일반적으로 소수점 이하입니다. 예를 들어 480 raw는 사용할 수있는 48MB가됩니다. 이것이 수학적으로 최고라는 것을 명심하십시오. 실제 세계에서는 조금 더 낮을 것입니다. USB 2.0 고속 연결의 경우 실제 저장 장치가 연결 속도와 같거나이를 능가 할 경우 최대 쓰기 속도는 약 30-35MB입니다.


6
단위 nitpicking : USB2.0 High Speed는 480 Mbit / s = 60 MByte / s, raw speed입니다. 사용 가능한 속도는 소수점 이하가 아니라 원시 속도의 약 80 %입니다. 일반적으로 "MByte / s의 실제 속도는 Mbit / s의 원시 속도의 1/10입니다"는 유효합니다.
jpa

5

잘 조정 된 dd( 'pv') 또는 'cat'명령 의 원시 속도는 이길 수 없다는 것에 동의 하지만 사본에 문제가있는 경우 (잘못된 섹터, 정전, 사용자 오류 등) 시작해야합니다 위에.

ddrescue -dd의 모든 속도를 가진 FOSS 도구 를 제안하고 싶지만 디스크 오류를 해결하고 실패가 있으면 나중에 다시 시작할 것입니다.


2

Windows 7을 HDD에서 SSD로 옮길 때 이것과 다른 대답을 찾았습니다. 필자의 경우 소스 드라이브가 더 크면 / dev / sda-> / dev / sdb 장치 수준에서 작업했을 것입니다.

Win7과 3 개의 파티션 ... USB에서 Xbuntu 14.04 라이브 CD를 사용했습니다. 승리 한 컴퓨터의 DVD를 꺼내 SSD를 제자리에 놓으십시오. partclone을 설치하고 이것을 시도하십시오 :

partclone.ntfs -b -N -s /dev/sda3 -o /dev/sdb3

Partclone은 Windows에서 chkdisk를 실행 해야하는 ntfs에 숨어 있었으므로 빠른 수정으로 partclone이 행복해졌습니다.

ntfsfix -b /dev/sda3
ntfsfix -d /dev/sda3

모든 명령은 루트로 실행됩니다. Partclone의 ncurses UI (-N 옵션)는 전송이 7GB / 분이고 5GB / 분으로 종료되어 83MB / 초에 해당한다고 말했습니다. 큰 부분은 partclone이 사용되지 않은 공간을 복사하지 않기 때문에 복제본이 매우 빠르다는 것입니다.

추가적 잠재적 기각 증 :

  • 이전하려는 드라이브가 이전에 사용 된 경우 GPT의 잔존물이있을 수 있습니다. Windows 7 출하시 설치는 일반적으로 msdos / mbr 파티션 테이블입니다. 대상 드라이브에서 GPT 조각을 제거해야합니다. 이 유닉스 및 리눅스 QA가 도움이되었습니다. 당신은 사용해야하는 gdisk장치에 다음에 z 및 예는 GPT 데이터를 보내 겠하고 MBR을 보관 확인하기 위해 X를 사용합니다.

  • 장치 수준 dd를 수행하지 않는 경우를 잊지 마십시오
    dd if=/dev/sdb of=/dev/sda bs=446 count=1
    . sdb가 원본 또는 오래된 드라이브이고 sda가 대상 또는 새 드라이브 ( source ) 인 곳을 사용하여 MBR을 복사해야합니다.


1

최근에 100GB 파티션 (HDD) 이미지를 만들어 새로운 SSD 디스크에 씁니다.

다음은 프로세스 속도를 크게 높일 수있는 팁입니다. :)

파일을 더 작은 부분으로 분할 (파일이 클수록 작동 속도가 느림)

sudo dd if=/dev/sda3 conv=sync,noerror bs=2M | split -a 3 -d -b 1G - /maindisk.img

이 과정에서 (별도의 터미널에서) 속도를 확인할 수 있습니다

pgrep -l '^dd$' #to find PROCESSID
kill -USR1 PROCESSID #to check the speed

그런 다음 결과 파일로 가득 찬 디렉토리 (maindisk.img000, maindisk.img001 등)가 있으면 다음을 사용하십시오.

sudo cat maindisk.img* | sudo dd of=/dev/sda1

SSD의 새로운 파티션에 이미지를 '굽기'하려면 (파티션 크기는 이전 크기와 같아야 함)

나에게 그것은 일반적인 방법보다 loooot 더 빠르다 (분할없이). 이미지 생성의 평균 속도는 ~ 13MB / s입니다. '정상적인'방법을 사용하면 ~ 15MB / s로 시작한 다음 1MB / s로 감소합니다.


1
여러 개의 작은 파일 대신 하나의 큰 파일을 작성하는 것이 더 느린 이유는 무엇입니까? 대상 파일 시스템 유형과 마운트 플래그는 무엇입니까?
David Foerster

또한 conv=sync이 사용 사례에서는 성능에 해롭고 오히려 쓸모가 없습니다.
David Foerster

0

이 스레드를 찾는 사람이라면 ddrescue 와 같은 데이터 복구를 위해 설계된 도구를 사용하는 것이 훨씬 쉽고 빠릅니다 . 읽기 오류가 발생하면 먼저 좋은 부품을 구하려고합니다. 또한 언제든지 구조를 중단하고 나중에 같은 시점에 다시 시작할 수 있습니다.

두 번 실행하십시오.

먼저, 읽기 오류없이 모든 블록을 복사하고 rescue.log에 오류를 기록하십시오.

sudo ddrescue -f -n /dev/sdX /dev/sdY rescue.log

두 번째 라운드에서는 불량 블록 만 복사하고 포기하기 전에 소스에서 3 번 읽습니다.

sudo ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log

이제 새 드라이브를 마운트하고 파일 시스템이 손상되었는지 확인할 수 있습니다.

추가 정보 :
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html


0

읽기 속도를 높이려면 입력 / 읽기-파일 / 디스크를 SATA에 두는 것이 좋습니다. 의 USB 2.0 고속 내가의 평균 속도는 무엇입니까 너무로 좋은 33,816킬로바이트 / Sddrescue을 설정이에서 SATA에 USB 2.0 때와 비교 2,014킬로바이트 / s의


0

다른 블록 크기를 사용하십시오. dd한 번에 읽는 데이터의 양입니다 . 너무 적게 읽으면 프로그램 논리에 더 많은 시간이 소비되고 너무 많이 읽으면 큰 데이터를 이동하는 데 많은 시간이 소요됩니다.

다른 블록 크기에서 속도를 측정하려면 다음 bash스크립트를 사용하십시오 .

  • $dev장치로 설정
  • cbtotal예상 읽기 속도의 5 배 이상으로 수정
    (set -o errexit; skip=0; cbtotal=$((120*1024**2)); bs=256;
    for power in `seq 10`; do
      bs=$((bs*2)); skip=$((skip/2)); count=$((cbtotal/bs));
      if [ "$count" -lt 1 ]; then break; fi;
      echo $bs;
      dd if=$dev of=/dev/null skip=$skip bs=$bs count=$count
      skip=$((skip+count))
    done)

디스크 읽기 때문에 결과가 더 큰 크기로 편향 될 수 있으므로 cbtotal충분히 크게 설정하는 것이 중요합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.