(최근은 아니지만) 여러 소스는 드라이브 마모를 줄이기 위해 SSD 공간의 ~ 7 %가 할당되지 않은 상태로 두어야한다고 제안합니다. 지금도 유효합니까 아니면 상황이 변경 되었습니까?
(최근은 아니지만) 여러 소스는 드라이브 마모를 줄이기 위해 SSD 공간의 ~ 7 %가 할당되지 않은 상태로 두어야한다고 제안합니다. 지금도 유효합니까 아니면 상황이 변경 되었습니까?
답변:
Windows는 일반적으로 TRIM을 사용합니다. 이는 파일 시스템에 X % 여유 공간이있는 한 드라이브에서 X %가 할당되지 않은 것으로 간주 함을 의미합니다. [*] 오버 프로비저닝이 필요하지 않습니다.
예외 : 역사적으로 Sandforce 컨트롤러 / 펌웨어가있는 SSD는 TRIM 후에 전체 성능을 복원하지 못했습니다.
전체 드라이브의 성능 손실은 다른 드라이브보다 훨씬 클 수 있습니다. 이것은 높은 쓰기 증폭과 관련되어 마모를 증가시킵니다. 출처 : Anandtech 리뷰.
따라서 필요한 경우에만 필요합니다.
Linux에서 TRIM을 사용하는 것은 어렵지 않으며 문제가 거의 없습니다.
다행히도 가장 유명한 브랜드 중 일부는 자체 컨트롤러를 만듭니다. Sandforce 컨트롤러는 예전처럼 인기가 없습니다. Sandforce 문제로 인해 특정 "스마트"컨트롤러 설계에 대해 회의적이었습니다. Sandforce에 사과하지만 영향을받는 정확한 컨트롤러 모델에 대한 참조는 없습니다.
[*] 파일 시스템은 사용 가능한 공간이 충분하여 조각화를 줄입니다. 따라서 두 개의 안전 마진을 함께 추가 할 필요가 없으므로 동일한 여유 공간이 두 가지 모두에 도움이됩니다. 드라이브는 할당되지 않은 공간을 활용하여 성능을 향상시킬뿐 아니라 마모를 방지 할 수 있습니다.
최신 SSD 컨트롤러는 일반적으로 일상적인 사용에 오버 프로비저닝이 필요하지 않을 정도로 똑똑합니다. 그러나 주로 데이터 센터 환경에서 오버 프로비저닝이 권장되는 상황이 여전히 있습니다. 오버 프로비저닝이 유용한 이유를 이해하려면 SSD 작동 방식을 이해해야합니다.
SSD는 NAND 플래시 메모리 라는 메모리 유형을 사용합니다 . 하드 드라이브와 달리 데이터가 포함 된 NAND 셀은 직접 덮어 쓸 수 없습니다. 드라이브는 새 데이터를 쓰기 전에 기존 데이터를 지워야합니다. 의 SSD는 데이터를 쓰는 동안 또한, 페이지 크기가 일반적으로 4킬로바이트 KB 16, 그들은에만 호출 페이지의 큰 그룹에서 데이터를 삭제할 수 있습니다 블록 현대의 SSD의 크기가 여러 매크로 블럭에 일반적으로 수백 KB 크기.
NAND는 또한 제한된 쓰기 내구성을 가지고 있습니다. 블록을 지우고 불필요 하게 많은 수의 쓰기를 수신하는 블록이 없도록 하기 위해 불필요하게 데이터를 다시 쓰지 않도록 드라이브는 쓰기, 특히 작은 임의 쓰기를 다른 블록으로 분산시킵니다. 쓰기가 이전 데이터를 대체하면 이전 페이지가 유효하지 않은 것으로 표시됩니다. 블록의 모든 페이지가 유효하지 않은 것으로 표시되면, 드라이브는 유효한 데이터를 다시 쓰지 않고도 자유롭게 지울 수 있습니다.
드라이브에 사용 가능한 공간이 거의 없거나없는 경우 쓰기를 분산시킬 수 없습니다. 대신, 드라이브에 쓰기가 전송 될 때 드라이브는 즉시 블록을 지우고 해당 블록 내의 유효한 데이터를 다른 블록으로 다시 작성해야합니다. 이로 인해 드라이브로 전송되는 것보다 NAND에 더 많은 데이터가 기록되며, 이는 쓰기 증폭 이라고 알려진 현상 입니다. 쓰기 증폭은 특히 온라인 트랜잭션 처리 (OLTP) 와 같은 임의의 쓰기 집약적 인 워크로드에서 두드러 지며 성능 및 내구성이 저하되므로 최소한으로 유지해야합니다.
쓰기 증폭을 줄이기 위해 대부분의 최신 시스템은 TRIM 이라는 명령을 지원합니다.이 명령은 더 이상 유효한 데이터를 포함하지 않는 블록을 드라이브에 알려 주어 지울 수 있습니다. 그렇지 않으면 드라이브가 운영 체제에 의해 논리적으로 삭제 된 데이터가 여전히 유효하다고 가정해야하므로 드라이브가 충분한 여유 공간을 유지할 수 없게됩니다.
그러나 드라이브가 외부 인클로저 (대부분의 인클로저가 TRIM을 지원하지 않음)에 있거나 드라이브가 이전 운영 체제와 함께 사용되는 경우와 같이 TRIM이 불가능한 경우가 있습니다. 또한 고집 중 랜덤 쓰기 워크로드에서 기본 NAND의 넓은 영역에 쓰기가 분산되므로 드라이브가 거의 가득 차지 않은 경우에도 강제로 데이터를 다시 쓰고 쓰기 보조 증폭이 발생할 수 있습니다.
가장 초기의 SSD는 훨씬 덜 성숙한 펌웨어를 사용하여 필요한 것보다 훨씬 자주 데이터를 다시 쓰는 경향이있었습니다. 초기 Indilinx 및 JMicron 컨트롤러 ( JMF602는 말더듬 및 심연 랜덤 쓰기 성능으로 악명이 높음)는 집중적 인 랜덤 쓰기 워크로드에서 극도로 높은 쓰기 증폭으로 인해 때로는 100 배를 초과했습니다. 1MB 만 쓰려고 할 때 NAND에 100MB가 넘는 데이터를 쓰는 것을 상상해보십시오! 최신 SSD 에서는 처리 능력 향상, 플래시 관리 알고리즘 개선 및 TRIM 지원을 갖춘 최신 컨트롤러가 이러한 상황을 훨씬 더 잘 처리 할 수 있지만, 대량의 랜덤 쓰기 워크로드로 인해 쓰기 증폭이 10 배 이상 증가 할 수 있습니다 .
오버 프로비저닝은 임의 쓰기를 처리하고 데이터를 강제로 다시 쓰지 않도록 드라이브에 더 많은 여유 공간을 제공합니다. 모든 SSD는 최소한 어느 정도 오버 프로비저닝됩니다. 일부 는 GB와 GiB의 차이 만 사용 하여 드라이브와 작업 할 수있는 예비 공간의 약 7 %를 제공하고 다른 일부는 특정 응용 프로그램의 요구에 맞게 성능을 최적화하기 위해 더 많은 프로비저닝을 제공합니다. 예를 들어 쓰기가 많은 OLTP 또는 데이터베이스 워크로드를위한 엔터프라이즈 SSD는 512GiB의 물리적 NAND를 갖지만 비슷한 양의 NAND를 가진 일반 소비자 SSD의 480GB에서 512GB가 아니라 400GB의 광고 용량을 가질 수 있습니다.
워크로드가 특히 까다 롭거나 TRIM이 지원되지 않는 환경에서 드라이브를 사용하는 경우 일부 공간을 사용하지 않도록 드라이브를 분할하여 공간을 수동으로 초과 프로비저닝 할 수 있습니다. 예를 들어, 512GB SSD를 400GB로 분할하고 남은 공간을 할당하지 않으면 드라이브는 할당되지 않은 공간을 예비 공간으로 사용합니다. 그러나이 할당되지 않은 공간은 이전에 기록 된 경우 잘 려야합니다. 그렇지 않으면 드라이브가 차지한 공간을 드라이브가 인식하므로 아무런 이점이 없습니다. (파티션 유틸리티는이 작업을 수행하기에 충분히 똑똑해야하지만 100 % 확신 할 수는 없습니다. "Windows가 파티션되지 않은 (포맷되지 않은) 공간을 SSD에서 다듬습니까?"참조 )
TRIM이 지원되는 일반적인 소비자 환경에서 SSD의 용량이 70-80 % 미만이며 랜덤 쓰기로 인해 지속적으로 다운되지 않고 쓰기 증폭은 일반적으로 문제가되지 않으며 오버 프로비저닝은 일반적으로 필요하지 않습니다.
궁극적으로 대부분의 소비자는 쓰기 증폭이 높더라도 대부분의 SSD의 서비스 수명 내에서 NAND를 마모시키기에 디스크에 거의 충분한 데이터를 쓰지 않기 때문에 수면을 잃을 일이 아닙니다.
추가 공간의 크기는 SSD 드라이브 모델마다 크게 다르지만 일반적으로 여전히 그렇습니다.