hdparm 명령어로 캐시 설정 자동화 부팅 시 적용까지
리눅스 서버나 데스크톱에서 디스크 IO 성능을 조율할 때, 많은 전문가들이 먼저 떠올리는 도구가 바로 hdparm 명령어입니다. 캐시 설정부터 속도 측정까지 폭넓게 활용되지만, 한 가지 불편한 점은 시스템을 재부팅하면 설정이 초기화된다는 점입니다.
이번 글에서는 단순히 hdparm 옵션을 실행하는 수준을 넘어, 실전 환경에서 캐시 설정을 자동화해 부팅 시에도 유지하는 방법을 상세히 소개합니다. 특히 실습 중 발생할 수 있는 에러 메시지도 함께 다루어, 초보자와 중급 사용자 모두가 쉽게 따라할 수 있도록 구성했습니다.
1단계: 현재 성능 확인
먼저 디스크의 성능을 점검해야 합니다. 대표적인 방법으로 -Tt
옵션을 사용합니다:
[root@localhost ~]# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 11810 MB in 1.99 seconds = 5942.33 MB/sec
Timing buffered disk reads: 752 MB in 3.00 seconds = 250.55 MB/sec
-T
옵션은 CPU 캐시 버퍼를 활용한 읽기 속도를, -t
옵션은 실제 디스크에서 데이터를 읽는 속도를 측정합니다. 이 수치는 이후 캐시 설정 변경 전후의 성능 비교 기준으로 사용됩니다.
2단계: 캐시 설정 시도
쓰기 캐시와 읽기 캐시를 동시에 활성화하려면 다음과 같은 명령어를 입력합니다:
[root@localhost ~]# hdparm -W1 -A1 /dev/sda
/dev/sda:
setting drive read-lookahead to 1 (on)
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
setting drive write-caching to 1 (on)
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
look-ahead = not supported
write-caching = not supported
결과를 보면 SG_IO 에러 메시지가 출력되고, 실제로는 look-ahead와 write-caching 모두 지원되지 않는다고 나옵니다. 이는 디스크 종류나 컨트롤러, 혹은 가상화 환경에서 명령어가 제대로 적용되지 않을 때 흔히 발생합니다.
3단계: 왜 적용되지 않을까?
많은 사용자가 여기서 좌절하지만, 이 메시지가 뜬다고 해서 hdparm 자체가 무용지물이라는 뜻은 아닙니다. 실제 환경에서는 SATA 디스크나 일부 SSD, RAID 카드에서는 캐시 설정을 커널이나 컨트롤러에서 이미 관리하고 있어 hdparm으로 변경이 제한됩니다.
특히 가상 머신(VM)에서는 가상 디스크 드라이버가 실제 하드웨어 대신 명령을 처리하기 때문에, hdparm 설정이 무시되거나 반영되지 않을 수 있습니다.
4단계: 자동 적용 방법
캐시 설정이 실제로 가능한 디스크라면, 설정을 부팅 시에도 유지하도록 자동화하는 방법이 중요합니다. 대표적인 방법은 세 가지입니다.
4-1. /etc/hdparm.conf 활용
hdparm 설정을 영구적으로 적용하려면 /etc/hdparm.conf
파일을 수정합니다. 예를 들어:
/dev/sda {
write_cache = on
read_cache = on
}
파일을 저장한 뒤 재부팅하면 설정이 자동 적용됩니다. 이 방식은 구조가 단순하고 유지 관리가 편리합니다.
4-2. rc.local 스크립트 사용
배포판에 따라 /etc/rc.local
에 hdparm 명령어를 직접 추가할 수도 있습니다:
#!/bin/sh -e
hdparm -W1 -A1 /dev/sda
exit 0
실행 권한을 부여(chmod +x /etc/rc.local
)하면, 시스템 시작 시 hdparm 명령어가 실행됩니다.
4-3. systemd 서비스 등록
최근 배포판에서는 systemd를 권장합니다. 예를 들어 다음 내용을 /etc/systemd/system/hdparm-cache.service
로 작성합니다:
[Unit]
Description=Set hdparm cache options
[Service]
Type=oneshot
ExecStart=/sbin/hdparm -W1 -A1 /dev/sda
[Install]
WantedBy=multi-user.target
그리고 아래 명령어로 활성화합니다:
sudo systemctl enable hdparm-cache.service
이제 부팅 시 자동으로 설정이 적용됩니다.
5단계: 적용 후 확인
설정이 적용되었는지 확인하려면 다시 hdparm -I /dev/sda
또는 hdparm -W /dev/sda
를 실행해 현재 상태를 확인할 수 있습니다. SG_IO 오류가 뜨더라도 실제로 일부 장치에서는 설정이 반영될 수도 있으므로, 성능 측정 결과와 함께 확인하는 것이 중요합니다.
hdparm 명령어로 캐시 설정 자동화는 단순한 속도 향상 이상의 의미를 가집니다. 실제 환경에선 지원 여부 확인부터 자동화 설정까지 신중하게 진행해야 하며, 시스템 로그와 성능 측정 도구를 통해 변경 전후 효과를 검증하는 습관이 중요합니다.
설정 실패 사례 또한 경험의 일부입니다. SG_IO 오류가 뜨더라도 왜 발생하는지 이해하고, 환경에 맞는 최적화 방법을 찾는 과정을 통해 한층 깊이 있는 리눅스 관리 지식을 쌓을 수 있습니다.