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 자체에서 파일시스템에
대한 버퍼캐시를 메모리에 유지하고 있기 때문에, 최근에 액세스한
디스크블럭은 처음 읽을 때 보다 훨씬 빨리 읽게됩니다.
그래서 파일 시스템 성능 측정시에는 이 캐시에 대한 효과를 항상
염두에 두어야 합니다.