Create TOC

2012년 7월 9일

Debian/SSD 최적화

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

파일 시스템 설정

Journal 끄기

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

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

no access time

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

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

Trim 지원

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

fstab를 수정하는 방법

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

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

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

/dev/sd?1	/	ext4	discard,defaults

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

/tmp를 tmpfs로 변경

/etc/default/tmpfs 수정한다.

다른 리눅스 시스템에서는 직접 /etc/fstab 수정한다.
tmpfs	/tmp	tmpfs	defaults,noatime,mode=1777	0	0
RAMTMP=yes

I/O Scheduler 변경

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

noop 스케줄러를 사용

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

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

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

GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop"

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

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 설정을 변경한다.

swap 최적화

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

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

기타

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

tmpfs	/media/ramdisk	tmpfs	size=64M,nr_inodes=10k,mode=777	0	0