TRIM을 활성화하는 방법?


189

Linux 커널은 버전 2.6.33부터 TRIM을 지원하므로 우분투에서 TRIM을 지원해야합니다.

기본적으로 TRIM이 활성화되어 있습니까? 아니면 일부 설정을 변경하거나 추가 소프트웨어를 설치해야 작동합니까? 그렇다면 어떻게?


난 그냥 :-) 정말 좋은 옵션을 제공 webupd8에이 지침 다음 webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html 에서 설명한 바와 같이 나는 자동 트림에 대한 옵션을 노력을 "자동 TRIM"이지만 일일 크론 설정이 설정에서 더 잘 작동한다는 것을 알았습니다.
bmbaker

답변:


197

우분투 14.10 이후

Ubuntu 14.10 및 15.04에서는 TRIMming이 지원하는 모든 SSD에서 매주 자동으로 발생합니다 fstrim.

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

15.04부터 Ubuntu는 systemd 및 타이머를 사용합니다 ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

우분투 14.04

Ubuntu 14.04부터 예약 된 TRIM은 Intel, SAMSUNG, OCZ, Patriot 및 Sandisk SSD에 기본적으로 활성화되어 있습니다. 다른 브랜드가있는 경우 다음 명령을 실행하여 공급 업체 확인을 비활성화 할 수 있습니다.

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(또는 파일을 편집 /etc/cron.weekly/fstrim하고 추가하십시오 --no-model-check)

우분투 13.10 및 이전

TRIM, 수동, 예약 및 자동을 수행하는 세 가지 방법이 있습니다.

수동 트림

우분투에서는 다음과 fstrim같이 수행 할 수 있습니다 .

sudo fstrim /

그러나 아래 섹션에 설명 된대로 예약 또는 자동 TRIM이 활성화 된 경우에는 필요하지 않습니다.

참고 : 들어 우분투 11.04 및 이전 시스템, fstrim을 사용할 수 없습니다 그래서 당신은 사용해야 wiper.sh와 함께 제공 hdparm/usr/share/doc/hdparm/contrib/wiper.sh.gz

예정된 TRIM (권장)

이것은 현재 권장되는 방법이며 Ubuntu 14.04의 기본값마다 활성화 될 예정 입니다. 이전 버전의 우분투 (11.10에서 13.10)에서 수동으로 활성화하는 방법은 다음과 같습니다.

주간 CRON 작업 스크립트 파일을 작성하십시오.

gksudo gedit /etc/cron.weekly/fstrim

파일에 다음 코드를 붙여 넣은 다음 파일을 저장하고 닫습니다.

#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

위의 내용은 루트 파일 시스템 만 /SSD에 있다고 가정합니다 . 하나 이상의 SSD에있는 마운트 지점이 더 있으면 SSD_MOUNT_POINTS코드에 설명 된대로 추가하십시오 .

스크립트를 실행 가능하게 만드십시오.

sudo chmod +x /etc/cron.weekly/fstrim

그리고 마지막으로 테스트하십시오.

sudo /etc/cron.weekly/fstrim

오류가 없으면 cron 작업이 제대로 작동하는 것입니다.

자동 TRIM (더 이상 사용되지 않음, 느림)

자동 TRIM은 EXT4 파일 시스템과 함께 Ubuntu 10.10 (커널 2.6.33)부터 지원되었습니다. 그러나 모든 삭제 후 실시간으로 TRIM 명령을 SSD로 보내는 것은 일부 드라이브에서 평소보다 삭제 속도가 훨씬 느리다는 것을 인식했습니다. 따라서 크론 작업 (위 설명)을 통한 주간 스케줄 TRIM이 권장됩니다.

드라이브 또는 파티션에서 자동 TRIM을 활성화하려면의 discard옵션 으로 마운트해야합니다 fstab. 먼저 fstab을 백업 한 다음 편집을 위해 엽니 다.

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

discardSSD 드라이브 또는 각 파티션의 fstab 옵션 항목 (쉼표로 구분)에 추가하십시오 .

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

fstab을 닫고 저장 한 다음 재부팅하면 자동 TRIM이 작동합니다.

자동 TRIM 테스트

TRIM이 작동 중인지 테스트하려면 다음 명령 ( source )을 실행하십시오.

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

출력에서 아래 번호를 복사하고 begin_LBASSD의 장치 이름을 확인하십시오 ( System->Administration->Disk Utility예 : sda, sdb, sdc ...).

다음을 실행하되 [ADDRESS](begin_LBA) 및 sdX(SSD 장치 이름)을 위에서 얻은 세부 사항으로 바꾸십시오 .

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

출력은 해당 섹터에 대한 긴 문자열이어야합니다.

sudo rm tempfile
sync

hdparm위 의 명령을 반복하십시오 .

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

0 만 받으면 자동 TRIM이 작동하는 것입니다. 그러나 파일을 제거한 후에도 섹터가 비어 있지 않으면 잠시 기다렸다가 명령을 다시 실행하십시오.


5
TRIM 테스트는 실제로 다음과 같이 작동하지 않을 수 있습니다. serverfault.com/a/401506/60525
chrishiestand

1
@Uli 누군가 도와주세요. 그것은 나를 위해 작동하지 않는 것 같습니다. 내 SSD 4 개 파티션이 / /boot /usr/opt나는 나의 또 다른 하드 디스크를 사용하고 있습니다 /home. 나는 가서 cd / #sdc지시를 계속하지만 결코 0을 얻지 못합니다. 미리 감사드립니다!
BugShotGG

1
@lightrush : 훌륭한 편집! 답변을 최신 상태로 유지해 주셔서 감사합니다.
Uli

1
적어도 내 시스템에서 임시 파일이 즉시 생성되지 않으므로 hdparm은 아무것도보고하지 않으므로 명령 sync뒤에 a를 추가 할 수 있습니다 dd.
Andreas J.

2
systemd는 이제 이것을 처리합니다. sudo systemctl 상태 fstrim.timer
풍선

28

암호화를 사용하는 경우 여기에 게시 된 솔루션은 도움이되지 않습니다. 암호화 계층에서도 TRIM 지원을 활성화해야하기 때문입니다. 커널 버전 3.1 이상과 cryptsetup 버전 1.4 이상으로이 작업을 수행 할 수 있으며 둘 다 Ubuntu 12.04에 포함되어 있습니다.

LUKS 암호화 파티션에 대한 TRIM 설정에 대한 내 안내서를 찾으 십시오.


우분투 및 데비안의 LUKS 암호화 파티션에서 TRIM을 활성화하는 방법


이 단계별 안내에서는 cryptsetup 1.4 이상 및 커널 3.1 이상에 대한 암호화 된 SSD 파티션에 대한 TRIM 기술을 활용할 수 있습니다. 이는 번거 로움없는 SSD 경험으로 이어집니다.

"TRIM을 통해 SSD는 가비지 수집 오버 헤드를 처리 할 수 ​​있으며, 그렇지 않으면 관련 블록에 대한 향후 쓰기 작업이 미리 느려지 게됩니다."

설정 예

단일 드라이브로 SSD가 장착 된 노트북, Linux는 LUKS 암호화 논리 파티션을 통해 LVM 스왑 파티션이있는 단일 ext4 LVM 루트 파티션에 설치됩니다.

SSD : / dev / sda

sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

어떻게

  1. 모든 데이터를 백업하십시오. 파일 시스템이 엉망이므로 백업하는 것이 좋습니다.
  2. 필요한 커널 및 cryptsetup 버전이 있는지 확인하십시오 (예 : Ubuntu 12.04와 같이 3.1 및 1.4는 12.04 작성시 베타 버전 임).
  3. / etc / fstab 파일에서 암호화 된 LVM 볼륨의 파일 시스템 옵션에 폐기 매개 변수를 추가하십시오. 이렇게하면 LVM 파티션의 파일 시스템이 TRIM을 사용하려는 것으로 인식합니다.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. 마지막 단계로는 충분하지 않습니다. LUKS가 TRIM 사용을 인식하지 않는 한 보안상의 이유로 LVM 파티션의 파일 시스템에서 오는 모든 TRIM 작업을 효과적으로 차단합니다. LUKS가 LVM 파티션의 폐기 동작을 승인하도록 / etc / crypttab의 cryptdevice 옵션에 폐기 매개 변수를 추가하십시오.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. initramfs를 다시 빌드하십시오. crypttab 옵션은 저장되어 부팅시 사용됩니다.

    sudo update-initramfs -c -k all
    
  6. 재부팅하십시오.

  7. TRIM이 활성화되어 있는지 확인하십시오.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. 마지막 명령에 이와 같은 결과가 표시되면 (끝 부분에 1 개의 allow_discards) 설정이 완료된 것입니다.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

결과

TRIM이 활성화되었습니다. 번거 로움없는 SSD를 즐기십시오!


@Marco Ceppi 편집에 대한 구체적인 이유가 무엇입니까?
nem75 2016 년

마크 다운을 정리하고 "서명"줄을 제거하기 만하면 됩니다 (사이트에 대한 의견과 투표를 통해 피드백을받는 것으로 가정합니다)
Marco Ceppi

7
사이트 / 페이지를 사용할 수없는 경우 가이드를 여기에 포함시켜야합니다.
Cas

실제로 이것은 링크 전용 답변이지만 전혀 작동하지 않습니다. 대부분의 사용자는 12.04에서 TRIM을 전파 할 수없는 LUKS와 함께 LVM을 사용합니다. 자세한 내용은 이 답변 을 참조하십시오.
gertvdijk 11

1
이 지침을 따른 후에도 14.04에서 디스크를 트리밍하기 위해 cron 작업을 설정해야합니까?
ajn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.