하드디스크에서 파일을 지우면, 디스크에서 완전히 파일을 지우지 않고 위치를 알려주는 연결만 끊었습니다. 그리고 다른 새 파일을 저장할 때, 덮어쓰기 했습니다. 완전히 지우고 새로 저장 하기엔 시간이 오래 걸리는 것이 그 이유입니다. 실제로 Windows 나 리눅스에서 파일을 지우거나 디스크를 “빠른 포맷” 으로 포맷하면, 파일이 완전히 지워지지 않고, 연결만 끊김니다. 나중에 덮어씌우면 되니까요.

하드디스크와 달리, SSD 는 덮어쓰기 기능이 없습니다. 그래서 실제로 파일을 완전히 지워주고 새로 저장해 줘야 합니다. 그런대 기존 OS 에서는 하드디스크에서 하던 것처럼 연결만 끊어서 SSD 에 불필요한 파일이 쌓이게 되고, SSD 의 성능 감소로 이어지게 됩니다. 그래서 파일을 지울때 연결만 지우는 것이 아닌 실제 파일까지 모두 지우는 TRIM 기능이 필요합니다.

Windows 의 경우 7 부터 기본적으로 이 기능이 켜져 있고, 리눅스의 경우는 Ubuntu 나 Linux Mint 가 최근 기본적으로 켜져서 나온다고 합니다. 아치 리눅스의 경우는, 아치를 기반으로 하는 배포판의 경우는 켜져 있는 경우도 있지만, 다른 아치리눅스 배포판이나 원래의 아치리눅스의 경우, 그렇치 않은 경우가 많으므로. 이번 포스트에서 SSD TRIM 을 아치리눅스에서 하는 방법을 알아봅시다.

수동으로 TRIM 하기

fstrim을 이용하여 TRIM 합니다.

sudo fstrim <TRIM할 리눅스 파티션> -v

예를들어 / 파티션을 TRIM 하는경우 아래와 같이 실행합니다.

sudo fstrim / -v

마운트 옵션 변경하기

대부분의 리눅스 배포판에서 사용되는 방법입니다. /etc/fstab을 수정합니다. 먼저 TRIM 할 파티션의 UUID 를 알아야 합니다. 아래 명령으로 UUID 를 알아냅니다.

lsblk -f
youngbin@youngbin-ultrabook ~> lsblk -f
NAME   FSTYPE LABEL        UUID                                 MOUNTPOINT
sda                                                             
├─sda1 ntfs   복구         66A8C7F0A8C7BCB5                     
├─sda2 vfat                1AC9-8CF1                            
├─sda3                                                          
├─sda4 ntfs   WINDOWS_MAIN 38B8006AB8002948                     
├─sda5 vfat                59C9-02ED                            /boot/efi
└─sda6 ext4                f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 /
sdb  

텍스트 에디터로 /etc/fstab 을 엽니다.

sudo gedit /etc/fstab

원하는 파티션에, discard 옵션을 추가합니다. discard 옵션은 파일이 지워질 때마다 TRIM 이 실행되도록 해 주는 옵션입니다.

수정 전 예시

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
#
UUID=f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 / ext4 defaults,rw,noatime 0 1
UUID=59C9-02ED /boot/efi vfat defaults,rw,noatime 0 0

수정 후 예시

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
#
UUID=f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 / ext4 defaults,rw,noatime,discard 0 1
UUID=59C9-02ED /boot/efi vfat defaults,rw,noatime 0 0

저장 후 재부팅 합니다.

systemd 서비스 이용.

제일 간단한 방법이 아닐까 싶습니다. 아치리눅스에서 제공하는 fstrim.service 또는, fstrim.timer 를 켜주면 됩니다. 아래 명령어를 이용해 켤 수 있습니다.

부팅할 때 마다 TRIM 하려면, fstrim.service 를 켭니다.

sudo systemctl enable fstrim.service

1주일에 한번씩 TRIM 하려면, fstrim.timer 를 켭니다.

sudo systemctl enable fstrim.timer

지금까지, 아치리눅스에서 TRIM 켜는 법을 알아봤습니다. 리눅스에서 SSD 를 사용 하신다면 TRIM 이 켜져있나 확인 하시고, 꼭 켜시기 바랍니다.

참고자료

Previous

AUR 에 아치리눅스 패키지 올리기

2015.12.13

Read more

Next

Dokku 설치 및 설정하기

2016.03.25

Read more