dd를 이용한 디스크 복제


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


이렇게 블럭 크기를 주시고, (기본이 512바이트라서 이 옵션 없으면 속터져 죽습니다.)


다른 터미널 여셔서


ps -ax | grep dd


하셔서 dd pid를 얻은 다음에


watch -n 1 kill -USR1 dd_pid


하고 다시 원래 터미널을 보시면 진행 상황을 보실 수 있습니다.


(터미널을 여러개 접속하려면 귀찮으니 dd와 watch를 각각 두개의 screen을 띄우고 진행하면 편리함)


bs 옵션에 따른 성능을 먼저 이런 방법으로 검사하고 하시는게 좋을 것 같습니다.



 


 


dd를 이용해 100메가 바이트 임의의 파일 만들기


# dd if=/dev/zero of=/home/tongseob/100M.dd bs=100M count=1
1+0개의 레코드를 입력하였습니다
1+0개의 레코드를 출력하였습니다
# ls -l 100M.dd
-rw-r–r–    1 root     root     104857600  1월 17 18:55 100M.dd




dd를 이용한 파일시스템 성능 측정


dd는 duplication of disk, 즉, 디스크를 복제하는 명령입니다.


이 명령을 사용해 파일 시스템 성능을 측정해보겠습니다.



우선 다음과 같이 1 기가 바이트의 파일을 생성하고, 그 시간을


timex 명령을 이용해 측정해 봅시다.





$ timex dd if=/dev/zero of=1gig bs=32k count=32000 
32000+0 레코드 입력
32000+0 레코드 출력


real       13.28
user        0.04
sys         3.21


32kb 블럭을 32000번 써서 1024000kb(약 1기가) 파일을 만들고, 그 시간을


측정한 결과 13.28초가 소요되었습니다.



그래서 쓰기 성능은 1024000kb/13.28초 = 75.3MB/초 입니다.


 


이번엔 읽기 성능을 측정해봅시다.



첫 번째 시험을 완료하면 1gig란 파일이 생기는데, 이번엔 이 파일을 한 번


읽어봅시다.





$ ll 1gig
-rw-rw-r–   1 koym777    users      1048576000 9월 25일 14:28 1gig



$ timex dd if=1gig of=/dev/zero bs=32k 
32000+0 레코드 입력
32000+0 레코드 출력


real        5.28
user        0.04
sys         2.01


읽기 성능은 1024000kb/5.28초 = 189.4MB/초 입니다.



동일한 시험을 한 번 더 해봅시다.





$ timex dd if=1gig of=/dev/zero bs=32k
32000+0 레코드 입력
32000+0 레코드 출력


real        1.03
user        0.04
sys         0.98


앗, 동일한 시험인데 시간이 급격히 줄어들었네요.


여기서의 읽기성능은 무려 970.8MB/초에 달하는군요.


 


왜 그럴까요? 아시는 분은 다 아시겠지만, OS 자체에서 파일시스템에


대한 버퍼캐시를 메모리에 유지하고 있기 때문에, 최근에 액세스한


디스크블럭은 처음 읽을 때 보다 훨씬 빨리 읽게됩니다.



그래서 파일 시스템 성능 측정시에는 이 캐시에 대한 효과를 항상


염두에 두어야 합니다.

dd 활용하기(디스크 덤프)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다