우분투에서 SSD의 TRIM 활성화 방법

두 개의 NVMe SSD 카드 사진.

솔리드 스테이트 드라이브(SSD)를 사용하고 있다면, 이와 관련하여 조각 모음이나 비어 있는 공간 통합 소프트웨어를 실행하지 않아야 한다는 것을 아실 겁니다. 그렇다면 SSD를 어떻게 정리하고 빈 공간을 확보할까요? TRIM은 운영 체제에 청소 작업을 하도록 알리는 데 사용하는 명령입니다. 윈도우 11에서는 fsutil 명령어를 통해 TRIM을 수동으로 실행할 수 있습니다. 하지만 우분투에서는 어떻게 할까요? 우분투에서 SSD의 TRIM을 어떻게 활성화할 수 있을까요?

참고: 다음 단계는 파티션을 암호화한 경우 작동하지 않습니다.

목차

  • SSD에 대해 TRIM 크론 작업 생성하기
  • fstab에서 분할 옵션 사용하기
  • 자주 묻는 질문

SSD에 대해 TRIM 크론 작업 생성하기

  1. 컴퓨터의 SSD가 TRIM을 지원하는지 확인하려면 터미널을 열고 다음을 입력하세요:
sudo hdparm -I/dev/sda

hdparm 명령어의 결과를 보여주는 터미널 창입니다.

우분투가 SSD의 첫 번째 파티션에 설치되어 있지 않다면, sda를 우분투가 있는 파티션에 맞게 변경하세요. 이를 위해 lsblk를 실행하면 됩니다.

기계에 연결된 모든 디스크를 보여주는 터미널 창입니다.

  1. 목록을 아래로 스크롤하여 “지원됨” 섹션을 찾습니다. 그 아래로 더 스크롤하면 “ 데이터 세트 관리 TRIM 지원(제한 8 블록)”와 같은 문구가 보인다며, 그러면 SSD에 대해 TRIM이 지원되는 것입니다.

데모 SSD에 대한 TRIM 플래그를 보여주는 터미널 창입니다.

  1. 우분투에서 TRIM 기능이 작동하는지 확인합니다. 터미널에서 다음을 입력하세요:
sudo fstrim -v/

이 명령은 SSD의 루트 파티션을 정리합니다. 성공하면 다음 이미지와 비슷한 내용을 볼 수 있습니다.

SSD에 대한 첫 번째 fstrim 명령을 보여주는 터미널 창입니다.

  1. 운영 체제가 매일 한 번 TRIM 명령을 실행하도록 크론 작업을 설정합니다.
sudonano/etc/cron.daily/trim
  1. 빈 공간에 다음 코드를 붙여넣습니다:
#!/bin/sh  
fstrim -v/
  1. 만약 HOME 디렉토리가 다른 파티션에 위치해 있다면, 위 코드의 끝에 추가 줄을 추가할 수 있습니다:
fstrim -v/home >>$LOG
  1. 출력을 로그 파일에 저장하려면 다음 코드를 사용하세요:
#!/bin/sh  
LOG=/var/log/trim.log  
echo"* $(date -R) *">>$LOG  
fstrim -v/>>$LOG  
fstrim -v/home >>$LOG

fstrim에 대한 완전한 크론 스크립트를 보여주는 터미널 창입니다.

  1. 저장(Ctrl + O)하고 종료(Ctrl + X)합니다.

  2. 크론 작업을 실행 가능하도록 만듭니다:

sudochmod a+x /etc/cron.daily/trim

올바른 권한 비트로 trimb 간 스크립트를 보여주는 터미널 창입니다.

알아두면 좋은 것: 크론은 리눅스에서 작업을 자동화하는 데 도움을 줄 수 있는 훌륭한 유틸리티입니다. 작동 방식과 자신의 프로그램에 어떻게 사용할 수 있는지 알아보세요.

fstab에서 분할 옵션 사용하기

fstrim을 수동으로 호출하는 것 외에도 시스템을 구성하여 디스크에서 사용하지 않는 빈 공간을 지속적으로 “버리도록” 할 수 있습니다. 특히 노트북을 사용하고 있어 컴퓨터를 항상 켜두고 싶지 않은 경우 유용할 수 있습니다.

  1. 루트 파티션의 UUID 값을 확인합니다:
ls-l/dev/disk/by-uuid

UUID와 SSD 파티션 간의 심볼릭 링크를 보여주는 터미널 창입니다.

  1. 좋아하는 텍스트 편집기를 사용하여 “/etc/fstab” 파일을 엽니다. 제 경우에는 GNU Nano를 사용하고 있습니다:
sudonano/etc/fstab
  1. Ctrl + W를 눌러 루트 파티션의 “/etc/fstab” 항목을 찾고, UUID 값을 입력하세요.

데모 시스템의 기본 /etc/fstab 파일을 보여주는 터미널 창입니다.

  1. 루트 파티션 항목으로 가서 “errors=remount-ro” 옵션 앞에 discard,noatime,를 입력합니다. 예를 들어, 제 “/etc/fstab” 파일의 루트 파티션 항목은 다음과 같습니다:
#   
UUID=xxx    /    ext4    discard,noatime,errors=remount-ro    01  
[...]

수정된 /etc/fstab 파일을 보여주는 터미널 창입니다.

  1. Ctrl + O를 눌러 새 “/etc/fstab” 파일을 저장한 다음 Ctrl + X를 누릅니다.

GNU Nano의 저장 프롬프트를 보여주는 터미널 창입니다.

  1. 마지막으로 새로운 설정을 적용하기 위해 기계를 재부팅합니다.

데모 시스템을 위한 재부팅 명령을 보여주는 터미널 창입니다.

참고: TRIM은 SSD의 모든 빈 공간을 삭제하지만, 그 자체로는 데이터 복구 프로그램으로부터 데이터 보호를 해주지 않습니다. 간단한 명령줄 도구만으로 데이터를 안전하게 삭제하는 방법도 배워보세요.

자주 묻는 질문

SSD에서 fstrim과 discard를 동시에 사용할 수 있나요?

네. 그러나 그렇게 해도 눈에 띄는 개선이 이루어지지 않으며 SSD의 수명에도 영향을 미치지 않습니다. fstrim과 discard 모두 사용하지 않는 빈 블록을 삭제할 때 유사한 TRIM 루틴을 사용하기 때문입니다.

이 점을 감안할 때, fstrim과 discard는 한 가지 주요한 점에서 다릅니다: 빈도수입니다. fstrim은 모든 사용하지 않는 블록을 쌓은 후 “해제”하는 반면, discard는 블록이 사용되지 않게 되면 즉시 “해제”합니다. 이는 discard가 항상 fstrim보다 더 많은 시스템 리소스와 디스크 I/O를 차지하게 만듭니다.

/etc/fstab 파일에 루트 파티션의 UUID가 없습니다.

이는 대부분 하드웨어 RAID 카드 또는 논리 볼륨 관리(LVM) 유틸리티를 사용하는 시스템 때문입니다. 기본적으로 TRIM은 전통적인 디스크 파티션 및 ext4와 같은 파일 시스템을 사용하는 시스템에서만 작동합니다.

그럼에도 불구하고 일부 LVM 프로그램은 TRIM을 수행하는 유용한 옵션을 제공합니다. 우분투에서는 “/etc/lvm/lvm.conf” 파일에 issue_discards = 1을 추가하여 사용하지 않는 빈 블록을 자동으로 TRIM할 수 있습니다.

fstrim 명령의 빈도를 변경할 수 있나요?

네. 기본적으로 리눅스는 fstrim을 사용할 때 세밀하게 조정할 수 있는 여러 타이머 파일을 제공합니다. 예를 들어, sudo mv /etc/cron.daily/trim /etc/cron.weekly/trim을 실행하여 TRIM 빈도를 매일에서 매주로 변경할 수 있습니다.

이미지 출처: Unsplash. 모든 수정 및 스크린샷은 Ramces Red에 의해 제작되었습니다.