태그 보관물: hard-disk

hard-disk

dd가 여전히 작동하는지 어떻게 알 수 있습니까? 걱정이되었습니다. 7 시간 4GB RAM의 2.1ghz /

나는 dd그다지 많이 사용 하지는 않았지만 지금까지는 여전히 실패하지 않았습니다. 지금은 dd12 시간 넘게갔습니다. 디스크에서 이미지를 다시 쓰고 dd있습니다. 디스크에서 이미지 로 갈 수 있었기 때문에 조금 걱정이되었습니다. 7 시간

4GB RAM의 2.1ghz / core에서 Core 2 Duo가 장착 된 MacBook에서 OSX 10.6.6을 실행하고 있습니다. 7200rpm 하드 드라이브 (부팅 드라이브)의 .dmg를 읽고 SATA-to-USB 커넥터를 통해 연결된 7200rpm 드라이브에 쓰고 있습니다. 기본적으로 블록 크기를 그대로두고 이미지는 약 160gb입니다.

편집 : 그리고 14 시간의 순수한 스트레스 dd후에 결국 완벽하게 작동했습니다. 다음 번에는을 통해 pv추적하고 추적 할 것입니다 strace. 모든 도움을 주셔서 감사합니다.



답변

명령을 dd사용하여 특정 신호를 보내 kill현재 상태를 출력 할 수 있습니다. 신호는 INFOBSD 시스템 (OSX 포함) 및 USR1Linux에 있습니다. 귀하의 경우 :

kill -INFO $PID

명령으로 프로세스 ID ( $PID위)를 찾을 수 있습니다 ps. 보다 편리한 방법 은 mac OS x에서 pgrep 및 pkill 대안을 참조하십시오 .

더 간단히 말하면 AntoineG그의 답변 에서 지적한 것처럼 ctrl-Tdd를 실행하는 쉘에 입력 하여 INFO신호 를 보낼 수 있습니다.

Linux의 예로 모든 활성 dd프로세스 출력 상태를 다음과 같이 만들 수 있습니다 .

pkill -USR1 -x dd

상태를 출력 한 후에 dd는 계속 대처합니다.


답변

OS X (Linux에서는 시도하지 않았 음) 에서 터미널을 실행하는 터미널에 Ctrl+ T를 입력 하면됩니다 dd. kill -INFO $PIDCPU 사용량과 동일한 출력을 인쇄합니다 .

load: 1.40  cmd: dd 34536 uninterruptible 3.49u 64.58s
5020305+0 records in
5020304+0 records out
2570395648 bytes transferred in 4284.349974 secs (599950 bytes/sec)

이 스레드를 읽고 터미널에서 새 탭을 열려고하지만 + TCtrl+를 혼합하려고한다는 것을 알았습니다 T.


답변

대해 신호를 보낼dd 수 있습니다 . 파일을 읽거나 쓰는 다른 명령의 경우을 사용하여 파일에서 해당 위치를 볼 수 있습니다 .lsof

lsof -o -p1234    # where 1234 is the process ID of the command
lsof -o /path/to/file

미리 계획하는 경우 데이터를 통해 파이프하십시오 pv.


답변

보다 일반적인 방법은 iotop프로그램 당 현재 디스크 읽기 / 쓰기 양을 표시하는 것입니다.

편집 : iotop -o현재 I / O 작업을 수행하는 프로그램 만 표시하십시오 ( 이 의견 에 Jason C 감사합니다 ).


답변

나는 일반적으로 시스템 호출에서 차단 된 상태로 남아 있는지 또는 여전히 활성 상태인지 확인하기 위해 strace실행중인 프로세스 ( -p $PID옵션 포함)에 연결합니다.

또는 실행중인 dd에 신호를 보내는 것이 긴장된 경우 다른 dd를 시작하여 작동하는지 확인하십시오.


답변

다음에 pv는 처음부터 사용할 수 있습니다 (패키지 관리자를 통해 사용 가능한 경우 설치). 이것은 출력 및 출력 진행 및 속도 모니터링을 위해 배관 입력만을 목적으로하는 유틸리티입니다.

그런 다음 이미지를 드라이브에 쓰려면 4MB 블록 크기로 말합니다.

pv -ptearb /path/to/image.bin | dd iflag=fullblock of=/dev/whatever bs=4M

초기 버퍼링 (최종 동기화에 의한 오프셋, dd원하는 경우 수행 가능) 외에도 진행률 표시 줄, 평균 속도, 현재 속도 및 ETA가 표시됩니다.

iflag=fullblock옵션을 사용하면 dd를 통해 전체 입력 블록을 가져옵니다 pv. 그렇지 않으면 블록 크기에 대한 파이프의 책임이 있습니다.

다른 방법으로 가려면 소스가 블록 장치 인 경우 크기를 명시 적으로 지정해야하지만 dd를 사용하여 읽고 pv를 사용하여 씁니다. 4GB 장치의 경우 :

dd if=/dev/whatever bs=4M | pv -ptearb -s 4096m > /path/to/image.bin

다음과 같이 크기를 자동으로 결정할 수도 있습니다.

dd if=/dev/whatever bs=4M | pv -ptearb -s `blockdev --getsize64 /dev/whatever` > /path/to/image.bin

정말 당신이 어떤 순서는 중요하지 않습니다 dd그리고 pv당신이 나에서 읽고있는 장치가 사용하려는 특정 blocksizes 최적의 성능이있는 경우 -에, 그것은 전적으로 성능 관련의 dd대신 pv해당 장치에 액세스 할 수 있습니다. 당신도 붙어 있습니다 dd당신은 상관하지 않는 경우 모두에서 전혀 당신이 원하는 경우 종료 여부 :

pv -ptearb /path/to/image.bin > /dev/whatever
sync

답변

현재 coreutilsv8.24, dd진행률을 표시에 대한 기본 지원합니다. 옵션을 추가하십시오 status=progress.

예:

dd if=arch.iso of=/dev/sdb bs=4M status=progress

출처