====== SSD 에서 Trim 기능 사용하기 ====== [[nas_설치|NAS 구성 및 설치]] 중간쯤에서 간단히 Trim 기능 사용하는 걸 적어놨는데, 좀 더 정리해보자... 먼저 자신의 시스템이 Trim 을 지원하는지부터 확인해 보자. 대개는 /etc/fstab 파일에 UUID=00c10849-6c91-4961-a477-f0fb9c88c417 /boot ext4 discard,noatime,nodiration,errors=remount-ro 0 1 UUID=1abc2139-0cac-43d3-a284-b1b3d5e0ddf3 / ext4 discard,noatime,nodiration,errors=remount-ro 0 1 로 입력이 되어 있을 거다. discard ... 이게 자동으로 trim 을 켜주는 옵션이다. hdparm -I /dev/sda | grep trim 이라고 root 권한으로 명령어를 입력했을 때 * Data Set Management TRIM supported (limit 8 blocks) 라는 식으로 **TRIM supported** 라는 문구가 보인다면 Trim 을 지원하는 거다. 물론 SSD 위치에 따라서 /dev/sdb, /dev/sdc 등이 될 수는 있다. 일단 저렇게 메시지가 나왔다면 간단한 테스트를 해보자. 일단 파일을 만들어 보자. # seq 1 1000 > test.txt # sync 섹터단위로 읽어 보자. # hdparm --fibmap test.txt test.txt: filesystem blocksize 4096, begins at LBA 63; assuming 512 byte sectors. byte_offset begin_LBA end_LBA sectors 0 12345678 12347890 8 # hdparm --read-sector 12345678 /dev/sda /dev/sda: reading sector 12345678: succeeded 0a31 0a32 0a33 0a34 0a35 0a36 0a37 0a38 ... 정상적으로 저장됐다. 파일을 지워보자. # rm -f test.txt # sync && sync && sync && sleep 10 Trim 이 제대로 작동하는지 확인하자. # hdparm --read-sector 12345678 /dev/sda /dev/sda: reading sector 12345678: succeeded 0000 0000 0000 0000 0000 0000 ... 이렇게 0000 이 나오면 정상적으로 작동하는 거고, 다른 값이 나오면 제대로 작동안하는 거다. 그 이유는 여러가지가 있는데, 대개는 커널에서 Trim 을 지원안하는 게 그 이유다. 커널 컴파일을 하면 되겠지만, 귀찮고 ... # fstrim -v / /: 1234567890123 bytes were trimmed. # fstrim -v / /: 0 bytes were trimmed. 구글링에서 찾을 수 있는 몇몇 문서에서는 fstrim 을 우분투에서만 지원한다고 얘기하는데, CentOS 에서도 잘 지원한다. fstrim 첫번째 명령에서는 trim 이 안됐었으니 당연히 큰 값이 나오는 거고, 두번째에서는 조금 전에 trim 을 했으니 0이라고 나온다. 이걸 cron 으로 돌리자.. 사용량이 아주 많다면 모를까, 하루에 한번 정도면 될 것 같다. 만일 사용량이 많다면 시간을 좀 더 자주 하게 만들어 주면 된다. 하루에 한번이니 /etc/cron.daily 에다가 trim 이라는 파일 하나 만들자. 그 내용은 .. #!/bin/sh LOG=/var/log/trim.log echo "*** $(date -R) ***" >> $LOG /sbin/fstrim -v / >> $LOG 물론 SSD 파티션이 여러개라면 마지막 줄에 뒤에다가 **fstrim -v /home >> $LOG**, **fstrim -v /var >> $LOG** 등을 덧붙이면 된다. 그리고 chmod +x /etc/cron.daily/trim 이렇게 하면 설정에 따라 다르겠지만 일반적으로는 새벽 4시에 fstrim 이 돌면서 trim 작업을 해준다. ---------------- 2016/01/18 akpil