TRIM이란

  • TRIM은 ATA 인터페이스를 위한 명령어
  • TRIM 명령어는 인터페이스마다, 운영 체제에 따라 이름도 모두 다르지만, 일반적으로 "Trim"이라고 칭함
  • TRIM은 SSD(Solid State Drive)에 어떤 데이터를 삭제할 수 있는지 알려줌
  • TRIM은 능동적 데이터 재배치와 함께 SSD(Solid State Drive)를 말끔하게 정리함
  • TRIM은 매우 유용하지만 필수 기능은 아님
  • 일부 운영 체제의 경우 Trim을 지원하지 않기 때문에 SSD 제조업체들은 Trim을 사용하지 않는다는 가정하에 드라이브를 설계, 생성 및 검증함
  • TRIM 명령을 사용하면 운영 체제에서 더 이상 사용되지 않는 것으로 간주되는 데이터 블록을 SATA SSD에서 삭제 가능
  • TRIM은 지원되는 운영 체제에 대한 Write amplification(쓰기 증폭)를 해결 가능
  • 운영 체제에서 파일이 삭제된 경우 파일은 파일 시스템에서 삭제로 표시되지만 디스크 컨텐츠는 실제로 지워지지 않음 → TRIM의 도입으로 파일이 삭제된 경우 운영 체제에서 유효한 데이터를 포함하지 않는 LBA로 TRIM 명령을 전송


TRIM의 역할

  • TRIM 명령어는 특정 영역에 더 이상 사용하지 않는 데이터가 있음을 SSD에 알려줌
  • 사용자의 관점에서는 해당 데이터는 문서에서 삭제된 것임 → 실제 SSD(Solid State Drive)가 정보를 읽고 쓰는 방식 때문에 해당 데이터는 사용자의 명령에 의해 드라이브에서 삭제된 상태가 아님
  • 사용자의 관점에서 삭제는 SSD에서 해당 데이터를 포함하는 SSD 영역은 더 이상 사용하지 않는 것으로 표시됨
  • TRIM 명령어는 해당 데이터가 삭제될 수 있음을 드라이브에 알려줌 → 컴퓨터가 유휴 상태가 되면, 능동적 데이터 재배치를 통해 해당 데이터는 삭제
  • TRIM 명령어가 존재하지 않았을 경우, SSD(Solid State Drive)는 드라이브의 일부 구간에 유효하지 않은 정보가 포함되어 있다는 것을 알지 못하며 추후 컴퓨터가 해당 위치에 새 정보를 쓰기 위해 이를 드라이브에 알려줄 때 비로소 인식
  • 드라이브는 기존 정보를 삭제한 다음에야 새 정보를 쓸 수 있음 → 단순히 새 정보를 쓰는 시간보다 더 많은 시간이 걸림
  • TRIM과 능동형 GC(Garbage Collect)을 활용한다면 SSD는 쓰기 명령을 더 빨리 실행 가능
  • TRIM을 사용하면 SSD(Solid State Drive)의 수명에도 영향 有
  • 유휴 시간 동안 삭제 가능한 셀을 SSD에 알려주고, 드라이브는 남아 있는 데이터가 채워진 셀과 쓰기 가능한 빈 셀을 정리하므로 불필요한 삭제 및 다시 쓰기를 하지 않아도 됨(SSD 블록의 수명을 균형있게 해줌)


TRIM의 이점

  1. 쓰기 과정에 많은 시간을 사용하여 유효하지 않은 데이터를 삭제하는 대신에 컴퓨터가 유휴 상태일 때 SSD(Solid State Drive)에서 데이터를 삭제하여 시간을 절약 가능
  2. TRIM는 능동형 GC(Garbage Collect)이 함께 작동하여 SSD의 수명을 늘릴 수 있음
  3. 능동형 GC(Garbage Collect)은 데이터 중에 관련 세그먼트를 나란히 위치할 수 있도록 이동시키므로 역동적이고 효과적인 Ware leveling 가능


TRIM 지원 환경

1. TRIM을 지원하는 SSD 환경(TRIM & GC를 지원)

  • Intel RAID controller를 사용하기에 SSD에 TRIM 사용 불가
  • SSD에서 TRIM을 지원하는 지 확인하는 방법
    1. hdparm -I /dev/sda 명령어
    2. lsblk -D 명령어
    3. /sys/block/sda/queue/discard_max_bytes 내용 확인
    4. /sys/block/sda/queue/discard_granularity 내용 확인

2. TRIM을 지원하는 커널 버전 → uname -r으로 확인 가능

  • 일반 SSD TRIM 지원 : Linux kernel 2.6.33 이상
  • NVMe SSD TRIM 지원 : Linux kernel 3.3 이상
  • RHEL6부터 TRIM 지원

3. 파일 시스템 확인 → TRIM 기능을 활성화 하기 위해 ext4 또는 xfs를 사용 → mount | grep -i "/dev/sd"로 확인

  • ext4에 TRIM을 적용하기 위해서는 명령어로 discard를 추가하거나 또는 /etc/fstab에 아래 discard를 추가

    # 명령어로 파일시스템에 TRIM 가능하도록 설정
    $ mount -t ext4 -o discard /dev/sda3 /
    
    # 영구적으로 파일시스템에 TRIM 가능하도록 설정
    $ vi /etc/fstab
    /dev/sda1 / ext4 defaults,discard 0 0



※ TRIM 사용 시 주의 사항

  • TRIM을 사용하는 조건은 까다롭기에 Linux 커널 버전, SSD TRIM 지원, 파일시스템(ext4, xfs)을 충족해야 실행 가능
  • 위 조건을 모두 충족하더라도, 현재 사용하고 있는 RAID contoller가 Intel RAID controller를 사용하는 경우 TRIM 사용 불가
  • Intel RAID controller에서 Window는 지원하는데, 아직 Linux는 지원 X
  • 향후 Inter RAID controller가 Linux도 TRIM을 실행할 수 있는 것을 대비하여 학습 진행
  • Boss card RAID contoller를 사용하는 경우 TRIM 사용 가능

+ Recent posts