Hdparm 패키지를 이용한 하드디스크 성능 향상

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기

hdparm 패키지를 설치하여 DMA를 활성화 해서 조금이나마 하드디스크의 읽고 쓰는 응답 속도를 빠르게 해보자.. 물리적 하드 디스크가 하나일 경우 이므로 두개 이상의 하드 디스크라면 사용에 주의를 하자.

자신의 데비안이 설치된 하드 디스크가 위치를 확인한다.

첫번째 하드 디스크일 경우 /dev/hda : 하드디스크A
두번째 하드 디스크일 경우 /dev/hdb : 하드디스크B
  • 스카시 하드디스크에는 사용을 하지 못한다. 왜냐면..IDE용이니깐..
  • root로 실행가능하며.. 다른 계정 사용자가 접속해 있다면.. 주의해야한다.

패키지 설치하기

#apt-get install hdparm

설치후 아래 명령으로 활성화할 수 있다.

#hdparm -c 1 -d 1 /dev/hda

부팅시 자동으로 설정하기

아래 경로에 bootmisc.sh 맨 아랫쪽에 hdparm -c 1 -d 1 /dev/hda 추가해 둔다. /etc/init.d/bootmisc.sh

보기:

#
# Set hard disk parameters
#
if [ -x /sbin/hdparm ]
then
       hdparm -c1 -d1 -m16 /dev/hda
fi

조금 더 빠르게 하기

/etc/fstab 를 조금 수정해 준다. noatime을 추가해 주면 접근시간을 기록하지 않아서 조금 빨라진다.

/dev/hda1    /    ext3    errors=remount-ro,noatime    0 1

자동실행 되는지 확인 using_dma = 1 (on)으로 나오면 정상. 0 (off)로 나오면 다시설정.

#hdparm -d /dev/hda

전송속도 체크

#hdparm -t /dev/hda

참고 사항1

hdparm 메뉴얼을 보면 매우 다양한 옵션들을 발견할 수 있다.

-c : 32bit 입출력 on
-d1 : DMA on, -d0은 off
-X66 : Ultra DMA2 mode (Dangerous)
-X69 : Ultra DMA5 mode
-W :  Write-caching 기능 활성화 (Dangerous)

참고 사항2

저의 경우에는 이렇게 사용하고 있습니다. 실제로 hdparm에서 제공하는 옵션 중에 Dangerous가 붙은 것은 성능 향상에 도움이 되는데 제 딴에는 불안해서리.. -..-; 그래서 일단 안전하게 다음과 같이 사용합니다. 일단

#hdparm -i /dev/hda

하시면 마스터에 붙은 하드디스크의 자세한 물리적 정보가 다음과 같이 표시됩니다.

/dev/hda:

Model=SAMSUNG SV2042H, FwRev=PK100-13, SerialNo=0273J1FNB36153
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
BuffType=DualPortCache, BuffSize=426kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39865392
IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4 
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5 
AdvancedPM=no WriteCache=enabled
Drive Supports : ATA/ATAPI-4 T13 1153D revision 17 : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 ATA-6 

여기서 저는 MaxMultSect=16 을 참고해서

hdparm -c1 -d1 -m16 /dev/hda

라고 사용합니다. jonghaya ;)

위와 같이 설정하여도 하드디스크가 제 성능을 발휘하지 못한다면...genes ;)

hdparm -i /dev/hda 

로 확인된 DMA modes를 확인해야 제 성능을 낼수 있다. 자신의 DMA modes에 *표시를 확인해서... 아래처럼 옵션 설정을 해준다. udma5 모드 ATA-100 으로 적용한 경우 (-X69란 옵션이 udma5모드이다. udma2모드라면 -X66으로 적용해 주어야 한다.)

아래 옵션은 첫번째 하드디스크에 적용한 경우이다. 두번째 하드 디스크일경우 /dev/hda -> /dev/hdb로 바꿔 주어야 한다.

# 
# Set hard disk parameters 
# 
if [ -x /sbin/hdparm ]
then
       hdparm -c1 -m 16 -d 1 -X69 /dev/hda
fi

참고 사항3

sarge의 hdparm 패키지에 보면 /etc/init.d/hdparm /etc/hdparm.conf 등 스크립트가 포함되어 있습니다. 이걸 이용하면 조금 더 깔끔하게 설정할 수 있습니다. 예를 들어 위의 참고사항2의 설정은 /etc/hdparm.conf 에 다음을 추가함으로써 가능합니다.

/dev/hda {
       mult_sect_io = 16                # -m16
       dma = on                        # -d1
       io32_support = 1                 # -c1
       transfer_mode = 69               # -X69
}

물론 자신의 runlevel에 맞추어 /etc/init.d/hdparm 을 /etc/rc?.d 에 등록 해줘야합니다.

참고 사항4

modconf를 실행하고 kernel/drivers/ide/pci에 가면 IDE 칩셋 모듈 목록이 나온다. 이중, 자기 시스템에 맞는 모듈을 올려야 hdparm이 제대로 작동한다. 2.6 커널부터는 웬만하면 자동으로 검색되어 모듈이 올라간다.

SATA 하드를 쓸 때는 libata 모듈과 역시 메인보드에 맞는 하위 모듈이 필요하다. ex) 인텔 칩셋이면 ata_piix. SATA도 최신 커널에선 잘 잡히고 자동으로 인식된다. 그리고 SATA는 hdparm 설정이 필요 없다. 단지 CD 드라이브를 위해 DMA 지원이 필요할 뿐이다.