728x90
반응형
hdparm


시스템에 장착된 하드디스크의 설정을 확인하거나 하드디스크의 설정을 하고자 할 때에 사용하는 명령어

IDE 또는 SCSI하드디스크의 ACCESS속도를 측정할 때에 많이 사용

 명령어위치 : /sbin/hdparm





hdparm명령어로 버퍼링되어 있지않은 데이터의 디스크 ACCESS 속도 체크하기



[root@bible root]# hdparm -t /dev/sda
 
/dev/sda:
 Timing buffered disk reads:  64 MB in  0.99 seconds = 64.65 MB/sec
[root@bible root]#
 SCSI하드디스크의 경우 실제로 디스크에 존재하는 데이터를 읽는 속도는 초당 약64MB





IDE디스크의 속도 체크



[root@ bible root]# hdparm -t /dev/hda
 
/dev/hda:
 Timing buffered disk reads:  64 MB in  2.42 seconds = 26.45 MB/sec


IDE디스크의 경우 실제로 디스크에 존재하는 데이터를 읽는 속도는 초당 약26MB임을 알수 있음

 위의 두가지 테스트로 인하여 각각의 하드디스크의 속도를 체크 

 SCSI하드디스크가 IDE하드디스크보다는 데이터의 읽은 속도에 있어서 현저하게 높은 성능을 나타내고 있다는 것도 알 수 있음
(위의 예는 디스크에 존재하는 데이터 가운데 버퍼링이 되어 있지 않은 데이터를 대상으로 점검한 것)





hdparm명령어로 버퍼링되어 있는 데이터와 되어있지않는 데이터의 ACCESS 속도 비교하기


캐쉬에 버퍼링되어 있는 데이터를 읽는다면 실제 속도는 엄청나게 빨라질 것 

캐쉬에 저장된 데이터를 읽는다는 것은 실제로 디스크에서 읽어오는 것이 아니라 캐쉬메모리에서 읽어오기 때문

SCSI디스크의 캐쉬에 버퍼링되어 있는 데이터와 실제 디스크에서 데이터의 읽는 속도를 각각 비교한 예

[root@ bible root]# hdparm -tT /dev/sda
 
/dev/sda:
 Timing buffer-cache reads:   128 MB in  0.58 seconds =220.69 MB/sec
 Timing buffered disk reads:  64 MB in  0.97 seconds = 65.98 MB/sec
[root@ bible root]#
캐쉬에 버퍼링되어 있는 데이터(T옵션)를 읽을 때에는 초당 약 220MB
실제로 디스크에서 데이터(t옵션)를 읽어오는 속도는 초당 약 65MB
이 예에서 캐쉬메모리가 시스템의 속도에 얼마나 막대한 영향력을 행사하는가를 알 수 있음
IDE디스크의 캐쉬에 버퍼링되어 있는 데이터와 실제 디스크의 읽는 속도를 각각 비교한 예 

[root@ bible root]# hdparm -tT /dev/hda
 
/dev/hda:
 Timing buffer-cache reads:   128 MB in  0.59 seconds =216.95 MB/sec
 Timing buffered disk reads:  64 MB in  2.48 seconds = 25.81 MB/sec

[root@ bible root]#

이번 IDE디스크의 경우 캐쉬에 버퍼링되어 있는 데이터(T옵션)를 읽을 때에는 초당 약 216MB를 읽을 수 있으며 실제로 디스크에서 데이터(t옵션)를 읽어오는 속도는 초당 약 25MB임을 알 수 있음 

이번 예에서도 캐쉬메모리가 시스템의 속도에 얼마나 막대한 영향력을 행사하는가를 알 수 있음

그리고 앞의 예와 비교해 보시면 당연히 SCSI하드디스크가 IDE보다는 성능이 뛰어남을 알 수 있음





hdparm명령어로 CD-ROM드라이브의 읽는속도 테스트하기 


 CD-ROM드라이브의 읽는 속도를 다음과 같이 확인

 CD-ROM드라이브의 장치명이 /dev/cdrom이므로 아래와 같이 점검
[root@bible root]# hdparm -t /dev/cdrom
 
/dev/cdrom:
 Timing buffered disk reads:  64 MB in 14.77 seconds =  4.33 MB/sec

[root@bible root]#

리눅스 시스템에 장착되어 있는 CD-ROM드라이브는 초당 약 4MB의 속도로 데이터를 읽을 수 있음

#hdparm으로 테스트한 결과값이 절대값이라고는 생각하시면 안됨#





옵션


-a 
 파일 시스템의 미리 읽기(read-ahead) 섹터 수의 정보를 보여주거나 정할수 있습니다.
 이 옵션으로 큰 화일이 연속되는 경우의 성능이 증대될수 있으며, 그것은 실행중인 작업이 필요하게 되는 예상의 추가적인 블럭을 미 리 가져 옴으로써 성능을 증대시킵니다

-A 
 IDE 장치의 미리 읽기(read-lookahead) 기능을 on/off 할수 있습니다. (대개 기본적으로 기능이 켜져(ON) 있습니다).

-c 
 (E)IDE 장치의 32-bit 입출력(I/O) 기능을 켜거나 알아볼수 있습니다.
 이 옵션에서 숫자로 32-bit 입출력(I/O)을 조정할수 있습니다:
 32-bit 입출력(I/O)를 끄려면 0
 32-bit 입출력(I/O)를 켜려면 1 
 여러 칩셋에서 요구되는 특별한 동기 배열(syncsequence)을 포함한 32-bit 입출력(I/O)를 켜려면 3 
 이 값(3) 은 거의 모든 32-bit IDE 칩셋에서 동작하지만, 좀 더 부담(overhead)를 줄수 있습니다.

-C 
 IDE 장치의 전원 모드 상태를 검사합니다.  이것은 항상 이 중 하나의 상태가 될 것 입니다.
 unknown (장치가 이 명령어를 지원하지 않습니다.)
 active/idle (보통 상태입니다.)
 standby (저 전력 상태입니다. 장치의 모터 회전이 멈춥니다.)
 sleeping (장치가 완전히 정지합니다.).
 -S,-y,-Y,-Z 옵션으로 IDE 장치의 전원 모드를 조정 할 수 있습니다.

-d 
 장치의 직접 메모리 접근(DMA) 옵션을 켜거나 끌수 있습니다.

-E 
 CD-ROM의 속도를 설정합니다.
 이것은 CD-ROM이 자동적으로 속도를 바꾸기 때문에 일반적으로 필요한 옵션은 아닙니다.

-f 
 장치가 나갈때 버퍼 캐쉬(buffer cache)를 동기화 시키고 비웁니다.
 이 동작은 또한 -t 와 -T 옵션이 동작할때 같이 실행됩니다.

-g 
 장치의 구조 (실린더, 헤드, 섹터), 장치의 크기 (섹터), 그리고 장치의 시작 변위(offset) (섹터)를 장치의
 시작부분에서 표시합니다.

-h 
 사용 방법을 간결하게 표시합니다.

-i 
 가능하다면 부트 시간에 얻을수 있는 확인 정보를 표시합니다.
 이것은 지금의 IDE 장치의 특징이고, 오래된 장치에서는 아마 지원하지 않을 것 입니다.


-I 
 장치로 부터 직접 어떠한 변화나 수정이 없는 본래의 확인 정보를 요청합니다.

-k 
 장치의 리셋에도 셋팅을 유지하는 옵션(keep_settings_over_rest)을 설정하거나 보여줍니다.

-K 
 리셋에도 특징을 유지하는 옵션(keep_features_over_reset)을 설정합니다.
 모든 장치가 이것을 지원하는 것은 아닙니다.

-L 
 장치의 도어락을 설정합니다. 
 이 옵션을 으로 설정하므로써 도어락을 풀 수 있습니다. 일반적으로 리눅스는 디스크 사용에 따라 도어락을 자동적으로 유지합니다.

-m 
 장치의 다중 섹터 입출력(I/O)을 위해 섹터 수를 설정하거나 정보를 알아냅니다.
 이 옵션을 끄기 위해서는 0 을 사용합니다.

-P 
 장치의 내부적인 선전달(prefetch) 구조를 위한 최대 섹터 수를 설정합니다.
 모든 장치가 이 기능을 지원하는 것은 아닙니다.

-q 
 이어지는 옵션을 화면에는 출력하지 않습니다.
 이것은 /etc/rc.d/rc.local 에서 실행될 때 화면의 출력을 줄여서 유용합니다.
 이것은 -i 옵션 -v 옵션 -t 옵션 -T 옵션에는 적용되지 않습니다.

-r 
 장치의 읽기 전용(read-only)을 설정하거나 정보를 얻습니다. 설정할때, 이 장치의 쓰기는 허가되지 않습니다.
 
-S 
 드라이브의 standby (spindown) 시간을 설정합니다.
 이 수치는 드라이브에게 전원 절약을 위해 스핀들 모터를 멈출때 까지 얼마나 기다릴 것인가를 결정하게 됩니다.
 이런 상황에서 드라이브는 연속되는 디스크 접근에 반응하기 위해 30초정도 걸릴 것 이지만 대부분의 드라이브는 더 빠릅니다.
 timeout 수치는 좀 특이합니다.

* 1-240까지는 5초 단위로 증가하고 (결국 5초부터 20분까지), 
* 241~251까지는 30분 단위로 증가(30분에서 5.5시간까지에 해당)합니다.
* 252는 21분을 의미하고 
* 253은 특별히 제조사에서 설정한 값으로 8시간에서 12시간사이의 timeout 시간. 
* 254는 다른 설정값을 위해서 남겨져 있고
* 마지막으로 255는 21분 15초


-T 
 비교를 목적으로 벤치마크를 위해 캐쉬를 읽는 시간을 잽니다.
 정확한 결과를 위해 이것을 적어도 수 메가 바이트의 메모리 자원이 남은 상태의 사용하지 않는 시스템에서 2-3번 정도 반복해서 수행합니다.
 이 옵션은 디스크 접근(access)없이 리눅스 버퍼 캐쉬로 부터 직접적으로 읽어오는 속도를 표시해줍니다.
 이 측정법은 본래 테스트 상태의 시스템의 프로세서, 캐쉬, 메모리의 결과물의 표시입니다.
 -t 옵션과 같이 사용한다면, 수정된 요인에 기초한 -T 의 결과에 -t 의 결과를 함께 보고할 것 입니다.

-t 
 비교를 목적으로 벤치마크를 위해 장치를 읽는 시간을 잽니다.
 정확한 결과를 위해 이것을 적어도 수 메가 바이트의 메모리 자원이 남은 상태의 사용하지 않는 시스템에서 2-3번 정도 반복해서 수행합니다.
 이 옵션은 어떠한 사전의 캐쉬가 되지 않은 데이터를 디스크에서 버퍼 캐쉬를 통해 읽는 속도를 표시합니다.
 이 측정법은 리눅스에서 파일시스템의 어떠한 부담을 주지않고 얼마나 빠르게 드라이브가 연속되는 데이터를 지속적으로 읽을수 있는지의 표시입니다.
 정확한 측정법을 확실히 하기 위해서는, BLKFLSBUF ioctl 를 사용하여 -t 가 수행되는 동안 버퍼 캐쉬가 비워져야 합니다.  -T 옵션과 같이 사용한다면, 수정된 요인에 기초한 -T 의 결과에 -t 의 결과를 함께 보고할 것 입니다.

-u 
 장치의 interrupt-unmask 를 설정하거나 정보를 얻습니다.
 이 옵션을 1 로 설정할 경우 장치에게 디스크의 인터럽트가 진행되는 동안 다른 인터럽트를 unmask 하도록 허락합니다.  이것은 리눅스의 반응성을 크게 증가시키고 "serial port overrun" 에러를 제거합니다. 이 기능을 사용할때는 주의하십시오: 어떤 드라이브/콘트롤러 조합은 이 기능이 켜졌을때(enable) 입출력(I/O) 대기시간이 증가하는  것에 관대하지 않을수 있습니다.
 결과적으로 파일시스템을 크게 손상시킵니다. 특별히 CMD-640B 와 RZ1000 (E)IDE 인터페이스는 커널 2.0.13 이전 버젼에서는 이 옵션이 사용될 때 신뢰할수 없습니다.
 이전 버젼의 커널을 사용 할때 이런 문제를 고치기 위해서는 IDE prefetch 기능을 이런 인터페이스 에서 꺼 주시길 바랍니다.

-v 
 -i 옵션을 제외하고 모든 셋팅을 표시합니다.( IDE 에서는 -acdgkmnru , SCSI 에서는 -gr , XT 에서는 -adgr 과 같습니다.)
  또한 이것은 특별히 어떠한 옵션도 주지 않았을때 기본 동작입니다.

-W 
IDE 드라이브의 쓰기-캐쉬(write-caching) 기능을 끄거나 켭니다.( 대개 기본적으로 꺼져(OFF) 있습니다.)

-X 
 새로운 (E)IDE/ATA2 드라이브를 위해 IDE 전송 모드를 설정합니다.

-y 
 강제로 IDE 드라이브를 신속히 저 전력 소모의 standby 모드로 들어가게 합니다.
 대개는 스핀들 모터를 멈추게 합니다. 현재 전원 모드 상태는 -C 옵션에서 체크할 수 있습니다.

-Y 
 강제로 IDE 드라이브를 신속히 가장 적은 전력을 소모하는 sleep 모드로 들어갑니다.
 완전히 shut down을 합니다. 드라이브가 다시 접근(access)할수 있으려면 하드 혹은 소프트 리셋이 필요합니다.
 (리눅스 IDE 드라이버는 필요할 때 자동적으로 리셋을 조절합니다.)

 현재 전원 모드 상태는 -C 옵션에서 체크할 수 있습니다.

-Z 
 불편한 시간에 idle/spin-down 을 막기위해 Seagate 드라이브의 자동 전력-보호 기능을 끕니다.


반응형

'Linux' 카테고리의 다른 글

Linux fsck  (0) 2018.08.08
Linux badblocks  (0) 2018.08.08
Linux smartctl  (0) 2018.08.08
Linux tune2fs  (0) 2018.08.08
Linux LVM 명령어 리스트  (0) 2018.08.08

+ Recent posts