홈페이지 » 어떻게 » 우분투는 기본적으로 SSD를 트림하지 않습니다. 왜 그렇지 않습니까?

    우분투는 기본적으로 SSD를 트림하지 않습니다. 왜 그렇지 않습니까?

    Ubuntu는 기본적으로 Ubuntu 14.04에서 SSD 용 TRIM을 활성화하려고합니다. 즉, 우분투는 이미 TRIM을 사용하고 있지 않으므로 SSD가 시간이 지남에 따라 속도가 느려지고 있습니다. 하지만 우분투가 TRIM을 사용하지 않는 이유는 무엇입니까??

    이 소식은 Ubuntu와 다른 Linux 배포판이 이미 TRIM을 사용하고 있다고 가정 한 많은 사람들에게 놀라운 소식 일 것입니다. TRIM은 SSD가 시간이 지남에 따라 느려지는 것을 방지하며 SSD 유지 관리의 필수 부분입니다..

    트림이 중요한 이유

    TRIM이 전에 중요한 이유를 다루었습니다. 이전의 자기 하드 드라이브에서 파일을 삭제하면 컴퓨터는 해당 파일을 단순히 삭제 된 파일로 표시합니다. 파일의 데이터가 하드 드라이브에 저장되므로 삭제 된 파일을 복구 할 수 있습니다. 섹터를 새 데이터로 덮어 쓰면 삭제 된 파일을 덮어 씁니다..

    솔리드 스테이트 드라이브 (SSD)는 다르게 작동합니다. SSD에 파일을 쓸 때마다 컴퓨터는 먼저 데이터를 쓰는 섹터의 모든 데이터를 지워야합니다. 한 번의 작업으로 섹터를 "덮어 쓸"수는 없습니다. 먼저 섹터를 지우고 빈 섹터에 써야합니다.

    이것은 SSD가 시간이 지남에 따라 느려질 것이라는 것을 의미합니다. SSD 섹터에 글쓰기는 처음 엔 빠를 것입니다. 일부 파일을 삭제하고 다시 쓰려면 오래 걸립니다. 이것은 Google의 원본 Nexus 7이 시간이 지남에 따라 너무 느려졌 기 때문에 큰 부분을 차지합니다. Google은 Android 4.3에서 TRIM을 구현하여이 문제를 해결했습니다. Android는 Linux 커널도 사용합니다.

    TRIM이 활성화 된 상태에서 운영 체제는 파일을 삭제할 때마다 SSD에 알립니다. 그런 다음 드라이브는 파일의 내용이 포함 된 섹터를 지울 수 있으므로 나중에 섹터에 쓰는 것이 빠르게됩니다.

    즉, TRIM을 사용하지 않으면 SSD가 시간이지나면서 속도가 느려집니다. Windows 7 이상, Mac OS X 10.6.8 이상, Android 4.3 이상을 포함한 최신 운영 체제가 TRIM을 사용하는 이유입니다. TRIM은 2008 년 12 월에 Linux에서 다시 구현되었지만 Ubuntu에서는 기본적으로 사용하지 않습니다..

    기본적으로 TRIM을 우분투하지 않는 이유는 무엇입니까??

    우분투가 기본적으로 SSD를 트림하지 않는 진정한 이유는 리눅스 커널의 TRIM 구현이 느리고 정상적인 사용으로 성능이 저하되기 때문입니다.

    Windows 7 및 8에서 Windows는 파일을 삭제할 때마다 TRIM 명령을 전송하여 드라이브가 파일의 비트를 즉시 삭제하도록 지시합니다. Linux는 파일 시스템이 "discard"옵션으로 마운트 될 때이를 지원합니다. 그러나 Ubuntu 및 기타 배포판은 성능상의 이유로 기본적으로이 작업을 수행하지 않습니다..

    OpenSUSE의 wiki에는 Linux 커널에 익숙한 개발자의 자세한 정보가 있습니다. 약간 날짜가 있지만 성능면에서 여전히 사실 일 수 있습니다.

    "11.2, 11.3 및 11.4의 실시간 트림의 커널 구현은 최적화되지 않았습니다. 사양. 트림 범위의 벡터화 된 목록을 지원하는 트림을 요구하지만 커널 3.0 트림은 단일 폐기 / 트림 범위의 커널에 의해서만 호출되며 2011 년 중반에는 현재 SSD가 성능 향상 대신 성능 저하를 일으키는 것으로 판명되었습니다. 커널 3.1 이전 커널을 사용하여 커널 실시간 파기 지원을 사용하는 데는 몇 가지 이유가 있습니다. 커널이 기능을 폐기 할 때 현 세대의 SSD에서 유리하게 작동하도록 최적화되는 것은 알려지지 않았습니다. "[출처]

    즉, 리눅스 커널은 그러한 실시간 TRIM 명령을 느리고 최적화되지 않은 방식으로 처리합니다. TRIM을 사용하는 것과 비슷한 방식으로 Windows를 사용하는 것과 비슷하게, 즉 "discard"옵션을 사용하면 실제로 TRIM을 사용하지 않은 경우보다 시스템이 실제로 느려집니다. 우분투 및 다른 리눅스 배포판은 기본적으로 파일 시스템에 "삭제"를 사용하지 않으며,.

    다른 길은있다.

    Linux 커널의 TRIM 작업을 실시간으로 "버리기"때문에 잘 수행되지 않기 때문에 대부분의 Linux 배포판 (우분투 포함)은 TRIM을 자동으로 사용하지 않습니다. Android는 Android 4.3까지 TRIM을 사용하지 않았습니다..

    그러나 TRIM을 사용하는 또 다른 방법이 있습니다. 파일이 삭제 될 때마다 단순히 TRIM 명령을 발행하는 대신 FITRIM 기능을 사용할 수 있습니다. 이것은 fstrim 명령을 통해 발생합니다. 기본적으로 fstrim 명령은 파일 시스템을 분석하고 드라이브에 더 이상 필요하지 않은 블록을 알려 드라이브가 해당 블록을 버릴 수 있도록합니다. 그러면 TRIM이 실시간 작업에서 예약 된 작업으로 바뀝니다. 즉, fstrim은 TRIM을 cron 작업으로 수행 할 수 있습니다. 이것을하지 않을 이유가 없습니다. 그것은 아무 것도 느려지지 않을 것입니다. 그것은 시스템이 일정에 따라 수행해야하는 또 다른 집안일 작업입니다..

    실제로 이것은 Android 4.3에서 Google이 취한 접근 방식입니다. 안드로이드는 간단히 fstrim 작업을 실행하여 가끔씩 파일 시스템을 TRIM으로 변경하여 원본 Nexus 7을 모두 느리게하는 문제를 해결했습니다..

    우분투는 시스템이 정기적으로 fstrim을 실행하도록함으로써 TRIM을 자동으로 활성화하는 방법을 찾고 있습니다. 이것은 Ubuntu 14.04의 일부가되기를 희망합니다. 그래서 Ubuntu 사용자는 SSD 성능 저하를 처리하거나 fstrim을 독자적으로 실행할 수 없습니다.

    TRIM을 사용하는 방법

    "discard"작업으로 파일 시스템을 마운트하지 않는 것이 좋습니다. 정상적으로 사용하면 성능이 저하 될 수 있습니다. 그러나 때때로 fstrim 명령을 실행하거나 일정에 따라 fstrim을 실행하는 자신의 cronjob을 만들면 TRIM을 사용할 수 있습니다.

    Ubuntu에서 SSD를 트림하려면 터미널을 열고 다음 명령을 실행하십시오.

    sudo fstrim -v /

    때때로 SSD의 성능 저하를 방지하기 위해 위의 명령을 실행할 수 있습니다. 얼마나 자주 실행해야하는지는 SSD에서 파일이 삭제되는 빈도에 따라 다릅니다. TRIM을 지원하지 않는 드라이브로 명령을 실행하려고하면 오류가 표시됩니다..

    TRIM을 정기적으로 실행하려면 fstrim 명령을 실행하는 cronjob을 만들면됩니다. 이 작업을 자동으로 수행 할 베어 본 크론 작업을 수행하는 방법은 다음과 같습니다..

    먼저 다음 명령을 실행하여 루트 권한을 가진 nano 텍스트 편집기를 엽니 다.

    sudo nano /etc/cron.daily/fstrim

    파일에 다음 코드를 입력하십시오.

    #! / bin / sh

    fstrim /

    Ctrl + O를 눌러 파일을 저장하고 Enter를 눌러 확인하십시오. 파일을 저장 한 후 Ctrl + X를 눌러 nano를 닫습니다..

    마지막으로 다음 명령을 실행하여 스크립트를 실행 가능하게 만듭니다.

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

    우분투는 이제 다른 시스템 유지 보수 작업을 수행하는 것처럼 일정에 따라 fstrim을 실행합니다..


    TRIM은 최신 파일 시스템에서만 지원되므로 ext4가 아닌 ext3이나 ext2가 필요합니다. 사용중인 파일 시스템을 모르면 걱정하지 마십시오. ext4가 기본적으로 선택되어 있습니다..

    이 조언의 대부분은 다른 Linux 배포판에도 적용됩니다. 리눅스는 오래 전에 커널에서 TRIM 지원을 구현했지만, TRIM 지원은 리눅스 배포판의 일반적인 사용자들에게는 기본적으로 활성화 된 적이없는 것처럼 보입니다..

    이미지 크레디트 : Flickr의 Mace Ojala (잘린)