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를 noop나 deadline으로 변경한다.
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