IT2007. 10. 7. 02:23
반응형
[tip] hdparm으로 하드디스크 성능 높이기

오늘날 IDE 장치는 (UltraDMA 기술로) 이미 높은 전송률을 가지고 있지만, 아직도 하드디스크 성능을 높이는 방법들이 있다. 우리는 hdparm으로 어떻게 하드디스크 성능을 높이는지 보여줄 것이다.

 1. 소개

이 문서에서 다룰 hdparm은 하드디스크의 튜닝을 조정할 (HD PARaMeters) 수 있는 강력한 도구다. 종종 당신의 하드디스크가 능력을 최대로 발휘하도록 설정되지 않아서, 성능에 짜증나는 경우가 있다. 당신은 hdparm으로 하드디스크의 모든 기능을 사용하여 최고의 성능을 얻을 수 있다.

 2. 하드디스크 살펴보기

먼저 할 일은 하드디스크와 현재 설정에 대한 모든 정보를 얻는 것이다. 이 정보는 우리가 하드디스크를 설정할때 기본이 된다. 설정이 잘못되면 하드디스크에 부분적으로 (자료) 혹은 완전히 (하드웨어) 피해를 줄 수 있으므로 모든 과정에 매우 주의를 기울여라.

이제, 하드디스크가 /dev/hda라고 가정하자. 다음 명령어를 실행한다.

# hdparm -i /dev/hda

아래과 같이 정보가 출력될 것이다.

   /dev/hda:

  Model=QUANTUM FIREBALLlct20 20, FwRev=APL.0900, SerialNo=552114732078
  Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
  RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4
  BuffType=DualPortCache, BuffSize=418kB, MaxMultSect=8, MultSect=off
  CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=39876480
  IORDY=on/off, 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
  Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3
  ATA-4 ATA-5

그러나 "맙소사 이게 뭔가?"라는 생각이 들 것이다. 흐흐, 곧 당신을 기쁘게할 정보에 겁먹지마라. 여기서 우리는 여러 중요하고 유용한 정보를 얻을 수 있다... 일부를 살펴보자.

  * MaxMultSect: 이 항목은 하드디스크가 한번에 읽을 수 있는 최대 섹터(sector) 개수를 알려준다.
  * MultSect: 이 항목은 현재 한번에 읽는 섹터 개수를 알려준다.
  * PIO과 DMA modes: 이는 하드디스크가 지원하는 모드다. 별표(*)로 표시된 것이 현재 사용하는 모드다.
  * AdvancedPM: 'yes'이면 하드디스크가 APM (Advanced Power Management, 고급 전원관리)을 지원한다는 뜻이다.

다음 명령어는 다른 정보를 알려준다.

# hdparm /dev/hda

출력은 다음과 같다.

   /dev/hda:
  multcount = 0 (on)
  I/O support = 0 (16-bit)
  unmaskirq = 0 (off)
  using_dma = 0 (off)
  keepsettings = 0 (off)
  nowerr = 0 (off)
  readonly = 0 (off)
  readahead = 8 (on)
  geometry = 2482/255/63, sectors = 39876480, start = 0

간단히 설명하자면...

  * multcount는 한번에 읽는 섹터 개수이다.
  * I/O support는 하드디스크의 동작모드(16/32/32sync)를 알려준다.
  * using_dma는 디스크가 DMA 기능을 사용하는지 여부를 알려준다.
  * keepsettings는 소프트 리셋(soft reset)후 설정을 유지한다. (무엇인지 모르면 건드리지마라)
  * readonly는 보통 CD-ROM에만 1로 설정한다. 이 설정은 장치가 읽기전용인지 아닌지를 시스템에 알려준다.
  * readahead는 하드디스크에 접근할때 미리 읽는 섹터 개수를 알려준다.

이들을 이해하지 못한다고 지겨워하지마라. 당신은 바보가 아니며, 우리는 앞으로 이들을 다룰 것이다. 이들 파라미터중 일부는 논리적이 아닌 물리적인 하드디스크 하드웨어와 관련되어 하드웨어를 변경하지 않는한 수정할 수 없다. (만약 변경한다면 아마도 하드디스크를 망가뜨리고 자료를 모두 잃은후 슬퍼할 것이다. =] )

 3. 장치 설정

그러면 이제...쇼! 우리는 하드디스크를 설정하려한다. 기억하라: 설정 과정중 실수는 하드디스크와 자료에 손상을 입힐 수 있다. 이제 'hdparm -i <장치>'의 정보가 지침이 된다. 다음과 같이 하면, 문제가 생기지 않을 것이다.

3.1. I/O Support
좋다. 당신이 (E)ISA IDE 인터페이스 카드를 사용하지 않는다면 나머지 PCI/VLB 모두 32비트 모드를 지원한다. 컴퓨터가 486보다 신형이라면, 아마도 PCI IDE 컨트롤러를 사용할 것이다. 아니라면 검사해봐라...

  * hdparm -c0 // 동작모드를 16비트로 설정
  * hdparm -c1 // 동작모드를 32비트로 설정
  * hdparm -c3 // 동작모드를 동기화된(synchronized) 32비트로 설정

모드 '3'은 몇몇 칩셋에만 필요하다. 사람들은 최고의 성능을 위해 보통 모드 '1'을 사용한다. 우리는 (아마도 동기화된 16비트) 모드 '2'에 대한 정보를 찾지 못했다.

3.2. MultSect 혹은 Multcount
이는 간단하다. 하드디스크의 MaxMultSect 정보에서 사용할 수 있는 값을 찾아봐라. 나는 MultSect를 내 하드디스크가 지원하는 8로 설정했다.

# hdparm -m 8 /dev/hda

/dev/hda를 당신의 장치명으로, '8'을 'hdparm -i <장치>'에서 알아낸 하드디스크가 지원하는 MaxMultSect로 바꾸는 것을 잊지마라.

3.3 DMA 활성화
가장 쉬운 부분이다. 간단히 다음 명령어로 DMA 모드를 ON으로 설정한다.

# hdparm -d 1

카드가 DMA 모드를 지원해야 한다.

3.4 PIO와 DMA 모드
이 둘은 같은 '-X' 옵션으로 설정할 수 있다. 이 옵션을 매우 주의있게 사용하지 않으면 하드디스크를 터져서 (믿어도 좋다!) 달에 도착하게 된다. 하드디스크가 지원하는 모드만을 설정하라.

음, 다음과 같이 사용한다... 보통 DMA 모드(multiword DMA나 mdma)에는 -X32 + (DMA 인식자 번호)를 사용한다. mdma2이라면,
   
# hdparm -X34 /dev/hda // 32 + 2 (from mdma2)

PIO와 UltraDMA 모드에도 과정은 거의 같다. 차이점은 PIO 모드의 기본수는 8이고, UltraDMA 모드의 경우 기본수가 64인 점이다. 이 글을 쓰는데 사용한 하드디스크는 ATA100을 지원한다. 그래서 다음과 같이 udma5 모드에 들어갈 수 있었다:

# hdparm -X69 /dev/hda

가장 높은 DMA 모드는 몇몇 칩셋에서만 지원된다는 점을 명심하라.

ATA64와 ATA100 모드에는 80-way IDE 케이블이 필요하다. 이 케이블없이는 ATA100로 디스크를 사용하지 못한다.

3.5 Readahead
readahead 옵션은 multcount와 다르다. multcount는 하드웨어가 한번에 여러 섹터를 읽을 가능성을 나타내지만, readahead 옵션은 컴퓨터가 미리 읽어야할 섹터 개수를 가리킨다. readahead 기능은 크기가 큰 파일을 읽을때 매우 좋다. 그러나 크기가 작은 파일에서는 성능을 떨어트린다. readahead 값을 multcount와 같이 놔두어 미리 섹터를 더 읽기위해 여러번 접근하지않게 함은 좋은 생각이다.

크기가 큰 파일에 접근할 예정이라면 readahead를 더 큰 값으로 설정할 수 있다. 기본값은 8 섹터/읽기접근 (약 4kb) 이다.

사용법은,
   
# hdparm -a N /dev/hda

N은 readahead 섹터 개수이다.

 4. 마치는 말

hdparm을 사용하여 설정할 수 있는 기능이 이외에도 많다. 대부분은 hdparm manpage에서 설명한다. 우리가 다룬 것은 단지 가장 공통된 것이다.

컴퓨터를 재시작하면 설정이 사라진다. (keepsettings는 소프트 리셋만을 다루므로 이 문제를 해결하지 못한다.) rc.local에 명령어를 넣어둬라. (설정이 많다면 rc.hdparm과 같은 파일을 만드는 것도 좋은 생각이다.)
반응형

'IT' 카테고리의 다른 글

리눅스 최적화  (6) 2007.10.08
apt-get 에러 메세지  (7) 2007.10.07
디지털 가전 제품의 진화.  (7) 2007.10.06
우분투 ubuntu 한영 전환키 항영키로 전환  (6) 2007.10.06
파이어 폭스 파일 업로드 하게 해주세요  (6) 2007.10.06
Posted by Dream Come True