Create TOC

2012년 7월 9일

Debian/SSD 최적화

SSD 최적화 방법을 기술한다. 최적화의 대부분은 i/o를 줄이는데 있다. 편의상 ssd 장치는 /dev/sd?으로 표시한다. 그리고 파일 시스템은 ext4를 사용하는 것을 가정한다.

1 파일 시스템 설정

1.1 Journal 끄기

아래와 같은 명령으로 journal 기능을 끈다. 주의할 점은 mount 된 장치에는 쓸 수 없기 때문에 usb등으로 부팅한 후 수정해야 한다.

$ tune2fs -O ^has_journal /dev/sd?1

1.2 no access time

access time을 기록하지 않도록 /etc/fstab 수정해서 noattime옵션을 추가한다.

/dev/sd?1	/	ext4	noatime,discard,defaults

1.3 Trim 지원

fstab을 수정해서 trim지원을 적용하는 방법과 하루 한번 정리하는 방법이 있다. 구글 검색을 해보면 하루 한번 정리하는 것을 권장한다.

1.3.1 fstab를 수정하는 방법

아래 명령으로 지원 상황 확인한다.

$ hdparam -I /dev/sd? | grep TRIM
	   *	Data Set Management TRIM supported (limit 8 blocks)

지원되는 것이 확인되면 /etc/fstab 수정해서 discard 옵션을 추가한다.

/dev/sd?1	/	ext4	discard,defaults

1.3.2 crontab을 이용해 하루 한번 정리하는 방법

아래와 같은 내용의 /etc/cron.daily/trim파일을 만든다.

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

파일 생성 후 실행 권한을 준다.

$ sudo chmod +x /etc/cron.daily/trim

2 /tmp를 tmpfs로 변경

/etc/default/tmpfs 수정한다.

주1)
RAMTMP=yes

3 I/O Scheduler 변경

I/O Scheduler를 noopdeadline으로 변경한다.

3.1 noop 스케줄러를 사용

/etc/rc.local에 아래 명령을 추가한다.

echo noop > /sys/block/sd?/queue/scheduler

/etc/default/grub에 아래처럼 기본 옵션을 설정한다.

GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop"

설정 후 update-grub 명령으로 grub 설정을 변경한다.

3.2 deadline 스케줄러를 사용

/etc/rc.local에 아래 명령을 추가한다.

echo deadline > /sys/block/sd?/queue/scheduler
echo 1 > /sys/block/sd?/queue/iosched/fifo_batch

/etc/default/grub에 아래처럼 기본 옵션을 설정한다.

GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline"

설정 후 update-grub 명령으로 grub 설정을 변경한다.

4 swap 최적화

swap partition이 SSD에 있다면 /etc/sysctl.d/swap.conf파일을 만들고 아래와 같은 내용을 적는다.

# swap을 최소로 사용.
vm.swappiness=0

5 기타

home디렉토리가 SSD에 있다면 firefox등의 프로그램에서 사용하는 cache 디렉토리를 /tmp로 지정하거나 /etc/fstab에 아래와 같이 ramdisk를 만들어서 ramdisk로 지정한다.

tmpfs	/media/ramdisk	tmpfs	size=64M,nr_inodes=10k,mode=777	0	0
  • 1) 다른 리눅스 시스템에서는 직접 /etc/fstab 수정한다.
    tmpfs	/tmp	tmpfs	defaults,noatime,mode=1777	0	0