재부팅 후 모든 여유 공간을 잘라내는 fstrim

재부팅 후 모든 여유 공간을 잘라내는 fstrim

방금 SSD로 업그레이드 했습니다. 성능은 훌륭했습니다.

그러나 재부팅할 때마다 파티션에 fstrim을 수행하면 모든 여유 공간이 정리됩니다. 그리고 내가 이해하는 것처럼 트리밍은 사용 가능한 모든 여유 공간에 기록됩니다. 관련성이 있는지 확실하지 않지만 전체 디스크 암호화(/boot 포함)를 사용합니다.

잦은 쓰기로 인해 SSD의 수명이 급격히 줄어들 수 있기 때문에 이번 트리밍이 걱정스럽습니다.

트림할 때마다 기록하는 로그는 다음과 같습니다.

Jul 30 13:46:00 /: 478.6 MiB (501862400 bytes) trimmed
Jul 31 13:22:26 /: 347.8 GiB (373409230848 bytes) trimmed
Jul 31 13:25:32 /: 194.3 MiB (203710464 bytes) trimmed
Jul 31 13:25:40 /: 19.2 MiB (20111360 bytes) trimmed
Aug 02 14:08:06 /: 345.9 GiB (371398463488 bytes) trimmed
Aug 02 22:21:36 /: 56.9 GiB (61047971840 bytes) trimmed
Aug 02 22:31:27 /: 347.7 MiB (364560384 bytes) trimmed
Aug 02 22:31:43 /: 127 MiB (133144576 bytes) trimmed
Aug 02 22:33:01 /: 243 MiB (254767104 bytes) trimmed
Aug 03 06:58:47 /: 1 GiB (1080602624 bytes) trimmed
Aug 03 10:00:02 /: 2.4 GiB (2526216192 bytes) trimmed
Aug 03 11:42:14 /: 341 GiB (366146318336 bytes) trimmed
Aug 03 16:00:01 /: 0 B (0 bytes) trimmed
Aug 03 16:33:53 /: 0 B (0 bytes) trimmed
Aug 03 16:48:43 /: 341 GiB (366074740736 bytes) trimmed
Aug 03 16:50:13 /: 1.2 GiB (1297809408 bytes) trimmed
Aug 03 16:53:31 /: 341 GiB (366074695680 bytes) trimmed
Aug 03 17:07:55 /: 340.9 GiB (366066126848 bytes) trimmed
Aug 05 22:00:13 /: 341 GiB (366073069568 bytes) trimmed
Aug 05 22:07:22 /: 1.2 GiB (1261793280 bytes) trimmed
Aug 06 07:41:50 /: 1.4 GiB (1522991104 bytes) trimmed
Aug 06 10:00:11 /: 341 GiB (366068740096 bytes) trimmed

보시다시피, 컴퓨터를 켠 후의 트리밍은 ~340GiB인 반면, 일반적인 사용 시의 트리밍은 약 1GiB에 불과합니다.

이로 인해 SSD가 마모될까 봐 걱정해야 합니까? 다듬지 말아야 하나?

답변1

오해가 있습니다. 트리밍으로 인해 추가 쓰기가 발생하지 않습니다.감소하다그들을.

SSD 또는 SSD의 NAND에는 두 가지 "블록" 개념이 있으며 그 중 하나를 실제로 "블록"이라고 합니다.차단하다(보통 128k ~ 512k) 파일 시스템 측면에서 "블록"을 말할 때 의미하는 것과 훨씬 더 가까운 다른 하나는 다음과 같습니다.페이지(보통 4만원 정도) 당신은 할 수 있습니다쓰다이전 하드디스크에서와 마찬가지로 한 번에 전체 페이지를 내보내는 데 문제가 없습니다. 상황이 예상대로 작동합니다.

그러나 당신은 할 수 없습니다덮어쓰기페이지는 한 번만 쓸 수 있습니다. 그 이후에만 가능합니다삭제다시 한 번 쓸 수 있게 만듭니다. 이것이 NAND의 수명에 영향을 미치는 요소입니다. 문제는... 실제로는 당신이할 수 없다페이지를 삭제하세요. 지우기만 하면 돼블록(즉, 한 번에 32-64페이지의 클러스터).

이는 페이지(파일 시스템 측면에서 "블록")를 덮어쓸 때 컨트롤러가 다음을 수행해야 함을 의미합니다.

  1. 전체 블록에서 읽기
  2. "처녀" 또는 이미 지워진 블록이 존재하는 경우 해당 블록을 사용하십시오.
  3. 그렇지 않으면분명한같은 블록
  4. 덮어쓴 페이지의 내용을 적절하게 수정하여 전체 블록을 작성합니다.
  5. 지정되지 않은 "마법"을 수행하여 삭제 주기가 모든 블록에 어느 정도 균등하게 분산되어 조기 사망을 방지합니다.

다소 단순화되었지만 원리는 이렇습니다. ㅏ똑똑한컨트롤러는 약간 다른 작업을 수행할 수 있지만(예: 페이지를 논리적으로 다시 매핑하고, 아무것도 남지 않을 때까지 모든 페이지를 채우고, 어떤 페이지가 좋고 어떤 페이지가 오래된 것인지 "기억"하는 등) 원칙적으로 작업 흐름은 위에 설명된 대로입니다.

소규모 쓰기가 일반적인 경우 이는 문제이므로 곧 디스크의 모든 블록이 적어도 한 번 기록됩니다. 이제 컨트롤러는 무엇을 할 수 있나요? 별로. 파일 시스템이 무엇을 하고 있는지, 무엇을 기대하는지 실제로 알지 못하므로 가장 보수적인 가정에 따라 작동해야 합니다. 즉, 한 번 작성된 모든 내용은 보존되어야 합니다.

TRIM은 이 문제를 해결합니다. 이는 컨트롤러에게 그 정도의 넓은 범위를 알려줍니다.사용되고 있지 않습니다, 컨트롤러가 이를 삭제할 수도 있습니다. 아무것도 쓰지 않습니다. 만약 있다면 블록만 삭제됩니다(단, 매번은 아니고 한 번만 삭제됩니다).
해당 데이터를 사용하지 않는다고 컨트롤러에 알렸으므로 해를 끼치지 않고 버릴 위험이 있습니다. 이제 데이터를 복사하고 반복적으로 블록을 지울 필요 없이 갑자기 쓰기 가능한 블록을 다시 사용할 수 있게 되었습니다. 쓰기만 하는 것이 아니라더 빠르게또한 발생해야 하는 삭제 횟수도 줄어듭니다.

답변2

fstrim출시할 것 같다모두의 마지막 호출 이후 해제된 공간뿐만 아니라 파티션의 여유 공간도 포함됩니다 fstrim. 또한보십시오이 게시물.

관련 정보