나는이 답변을 명확하게하는 데 도움이 될 수있는 배경 정보를 결정했지만 약간의 OCD를 보았으므로 끝으로 건너 뛰고 필요할 경우 되돌아 갈 수 있습니다. 나는 조금 알고 있지만 SSD의 전문가는 아니므로 누군가 실수를 발견하면 편집 하십시오. :).
배경 정보:
SSD 란 무엇입니까? :
SSD 또는 솔리드 스테이트 드라이브는 움직이는 부품이없는 저장 장치입니다. SSD라는 용어는 하드 드라이브 대안으로 사용하기위한 낸드 플래시 기반 솔리드 스테이트 드라이브를 의미하기도하지만 실제로는 SSD의 한 형태 일뿐 아니라 가장 인기있는 SSD도 아닙니다. 가장 널리 사용되는 SSD 유형은 USB 스틱 (플래시 드라이브) 및 메모리 카드와 같은 낸드 플래시 기반 이동식 미디어이며 SSD라고는 거의하지 않습니다. SSD는 램 기반 일 수도 있지만 대부분의 램 드라이브는 실제 하드웨어와 달리 소프트웨어로 생성됩니다.
Nand-Flash SSD가 하드 드라이브 대안으로 사용되는 이유는 무엇입니까? :
운영 체제 및 소프트웨어를 실행하려면 빠른 저장 매체가 필요합니다. 이것은 램이 작용하는 곳이지만, 역사적으로 램은 비싸고 CPU는 대량으로 처리 할 수 없었습니다. 운영 체제를 실행하거나 프로그램을 실행하면 저장 장치가 충분히 빠르지 않기 때문에 현재 필요한 데이터 부분이 램에 복사됩니다. 느린 저장 장치에서 램으로 데이터가 복사 될 때까지 기다려야하므로 병목 현상이 발생합니다. 모든 낸드 플래시 SSD가 기존 하드 드라이브보다 우수한 성능을 제공하는 것은 아니지만 액세스 시간, 읽기 속도 및 쓰기 속도를 높여 병목 현상을 줄이는 데 도움이되는 드라이브입니다.
낸드 플래시 란? :
플래시 저장 장치는 자기를 사용하지 않고 전기를 사용하여 데이터를 저장하는 저장 매체입니다. Nand-Flash는 NAND 게이트웨이를 사용하는 플래시 스토리지입니다. 랜덤 액세스 인 A nor-Flash와 달리 Nand-Flash는 순차적으로 액세스됩니다.
Nand-Flash SSD는 데이터를 어떻게 저장합니까? :
Nand-Flash 스토리지는 블록으로 구성되며 해당 블록은 셀로 분할되며 셀에는 페이지가 포함됩니다. 자성을 사용하여 데이터를 저장하는 하드 드라이브와 달리 플래시 매체는이 데이터를 덮어 쓸 수 없으므로 전기를 사용합니다. 공간을 재사용하려면 데이터를 삭제해야합니다. 장치는 개별 페이지를 지울 수 없습니다. 삭제는 블록 수준에서 발생해야합니다. 이미 사용 된 블록에 데이터를 쓸 수 없기 때문에 (모든 페이지가 아니더라도) 전체 블록을 먼저 지워야하며, 이제 빈 블록에 데이터를 페이지에 쓸 수 있습니다. 문제는 삭제하고 싶지 않은 데이터를 포함하여 해당 페이지에 이미있는 데이터가 손실된다는 것입니다. 이 기존 데이터가 유지되지 않도록하려면 블록 삭제를 수행하기 전에 다른 위치에 복사해야합니다.
하드 드라이브에서는 자기 판을 사용하여 데이터를 저장합니다. 비닐 레코드와 마찬가지로 판에는 트랙이 있으며이 트랙은 섹터라고하는 섹션으로 나뉩니다. 섹터는 특정 양의 데이터를 보유 할 수 있습니다 (일반적으로 512 바이트이지만 일부 최신 데이터는 4KB 임). 파일 시스템 섹터를 적용하면 할당 크기 또는 클러스터 크기라고하는 지정된 크기에 따라 클러스터로 그룹화되고 파일이 클러스터에 작성됩니다. 섹터를 분할하여 섹터 크기보다 작은 클러스터를 만들 수도 있습니다. 파일이 여러 클러스터에 쓰여진 후 클러스터에서 사용되지 않은 공간은 사용할 수 없으며 다음 파일은 새 클러스터에서 시작됩니다. 많은 사용 불가능한 공간을 피하기 위해 사람들은 일반적으로 더 작은 클러스터 크기를 사용하지만 큰 파일을 쓸 때 성능이 저하 될 수 있습니다. 낸드 플래시 SSD에는 자기 판이 없습니다. 그들은 메모리 블록을 통과하는 전기를 사용합니다. 블록은 페이지를 포함하는 셀로 구성됩니다. 페이지에는 X 용량 (일반적으로 4KB)이 있으므로 페이지 수에 따라 블록 용량 (일반적으로 512KB)이 결정됩니다. SSD에서 페이지는 하드 드라이브의 섹터와 동일합니다. 두 페이지는 모두 가장 작은 스토리지 부문을 나타 내기 때문입니다.
마모 레벨링이란? :
Nand-Flash 스토리지 블록은 쓰기가 가능하고 제한된 횟수만큼 지워질 수 있습니다 (라이프 사이클이라고 함). 드라이브의 용량 감소 (불량 블록)로 인한 피해를 방지하려면 블록을 최대한 고르게 마모시키는 것이 좋습니다. 제한된 수명주기는 Nand-Flash 기반 SSD를 사용하는 경우 많은 사람들이 운영 체제에 페이지 파일 또는 스왑 파티션을 갖지 말 것을 권장하는 주된 이유입니다 (장치에서 램으로의 빠른 데이터 전송 속도도 중요합니다) 그 제안을 고려하십시오).
오버 프로비저닝이란 무엇입니까? :
Over Provisioning (오버 프로비저닝)은 사용 가능한 공간이 얼마나 많은지와 비교하는 것의 차이를 정의합니다. 낸드 플래시 기반 저장 장치는 쓰레기 처리에 사용할 빈 블록이 있다고 보증하기 위해 장치보다 작다고 주장합니다. 동적 여유 프로비저닝이라고하는 두 번째 종류의 초과 프로비저닝이 있는데, 이는 단순히 표시된 여유 공간 내의 알려진 여유 공간을 나타냅니다. 동적 오버 프로비저닝에는 운영 체제 수준과 드라이브 컨트롤러 수준의 두 가지 유형이 있습니다. 운영 체제 수준에서 Trim을 사용하여 블록을 해제 한 다음 즉시 쓸 수 있습니다. 컨트롤러 수준에서 할당되지 않은 드라이브 공간 (파티션되지 않은 파일 시스템 없음)을 사용할 수 있습니다. 더 많은 여유 블록이 있으면 즉시 쓸 수 있기 때문에 드라이브를 최상의 성능으로 유지하는 데 도움이됩니다.
쓰기 증폭이란 무엇입니까? :
Nand-Flash 매체는 블록을 쓰기 전에 삭제해야하므로 삭제되지 않는 블록 내의 모든 데이터는 가비지 처리를 통해 새 블록으로 복사해야합니다. 이러한 추가 쓰기를 쓰기 증폭이라고합니다.
트림이란? :
운영 체제는 기존 하드 드라이브를 염두에두고 구축되었습니다. 기존 하드 드라이브는 데이터를 직접 덮어 쓸 수 있습니다. 파일을 삭제하면 운영 체제는 파일을 삭제 된 것으로 표시하지만 (덮어 쓰기해도 됨) 쓰기 작업이 수행 될 때까지 데이터는 계속 존재합니다. Nand-Flash 기반 SSD에서는 데이터를 먼저 지워야하므로 문제가됩니다. 삭제는 블록 수준에서 발생하므로 삭제되지 않은 추가 데이터가있을 수 있습니다. 쓰레기 처리는 삭제되지 않은 데이터를 빈 블록에 복사 한 다음 해당 블록을 지울 수 있습니다. 이 작업에는 시간이 걸리고 불필요한 쓰기 (쓰기 증폭)가 발생합니다! 이 문제를 해결하기 위해 Trim이라는 기능이 만들어졌습니다. 트림은 운영 체제에 SSD를 알리는 힘을 제공합니다 쓰기 작업을 요청하지 않은 기간 동안 운영 체제에서 삭제 된 것으로 표시 한 데이터가 포함 된 페이지가있는 블록을 지우려면. 가비지 콜렉션은 그 일을 수행하므로 결과 블록이 해제되므로 먼저 지울 필요가없는 블록에 쓰기가 발생하여 프로세스가 더 빨라지고 쓰기 증폭이 최소화됩니다. 이것은 파일 단위로 수행되지 않습니다. 트림은 논리 블록 주소 지정을 사용합니다. LBA는 지울 섹터 (페이지)를 지정하고 지우는 블록 수준에서 발생합니다. 쓰기 증폭을 최소로 줄입니다. 이것은 파일 단위로 수행되지 않습니다. 트림은 논리 블록 주소 지정을 사용합니다. LBA는 지울 섹터 (페이지)를 지정하고 지우는 블록 수준에서 발생합니다. 쓰기 증폭을 최소로 줄입니다. 이것은 파일 단위로 수행되지 않습니다. 트림은 논리 블록 주소 지정을 사용합니다. LBA는 지울 섹터 (페이지)를 지정하고 지우는 블록 수준에서 발생합니다.
귀하의 질문에 대한 답변 "SSD 파티션의 단점?"
램 기반 SSD :
그들이 무작위로 액세스하기 때문에 절대 단점이 없습니다!
낸드 플래시 기반 SSD :
내 마음에 오는 유일한 단점은 다음과 같습니다.
쓰기 작업이 더 작은 공간에 분산되어 있기 때문에웨어 레벨링에 여유 공간이 충분하지 않기 때문에 "할 수는 있지만"드라이브 전체의 경우보다 드라이브의 해당 부분이 더 빨리 마모되는 것은 아닙니다. 추가 파티션에 대해 동등한 마모를 수행하지 않는 한 단일 파티션이었습니다 (예 : 이중 부팅).
하드 드라이브와 마찬가지로 낸드-플래시 SSD는 순차적 액세스이므로 추가 파티션에서 쓰거나 읽은 데이터는 단일 파티션으로 쓰인 데이터보다 훨씬 멀리 떨어져 있습니다. 일반적으로 파티션에 여유 공간이 남아 있기 때문입니다. . 추가 파티션에 저장된 데이터의 액세스 시간이 늘어납니다.
전체 공간이 적 으면 조각난 파일을 작성하는 데 어려움이 있지만 성능에 미치는 영향은 적지 만 일반적으로 낸드 플래시 SSD의 조각 모음은 드라이브의 수명을 다하기 때문에 나쁜 생각으로 간주됩니다. 물론 어떤 파일 시스템을 사용 하느냐에 따라 조각화가 매우 적습니다. 가능한 빠른 시간 내에 파일을 덤프하지 않고 가능한 한 전체 파일을 쓰도록 설계 되었기 때문입니다.
여러 파티션을 사용하는 것은 좋지만 일부 쓰기 작업에 쓰기 작업이 많고 다른 파티션이 거의없는 경우웨어 레벨링이 문제가 될 수 있습니다. 사용하지 않을 공간을 분할하지 않고 동적 오버 프로비저닝을 위해 공간을 남겨두면 블록을 비우고 순차적 데이터를 작성하는 것이 더 쉬워지기 때문에 성능이 향상 될 수 있습니다. 그러나 프로비저닝 공간을 초과하여 마모 레벨링에 대한 1 위를 차지할 것이라는 보장은 없습니다.
이 스레드의 다른 사람들은 분할이 동적 오버 프로비저닝에 대한 Trim의 기여에 어떤 영향을 미치는지에 대해 논의했습니다. TRIM은 삭제 플래그가 지정된 섹터 (페이지)를 지적하는 데 사용되므로 가비지 처리로 인해 해당 블록을 자유롭게 지울 수 있습니다. 이 여유 공간은 해당 파티션이 파일 시스템에서 사용하는 클러스터의 일부이기 때문에 THAT 파티션 내에서만 동적 오버 프로비저닝 역할을합니다. 다른 파티션에는 자체 파일 시스템이 있습니다. 그러나 파일 시스템이 없거나 드라이브 용량에 표시되는 장소에 데이터가 기록되므로 초과 프로비저닝에 대한 전체 아이디어가 약간 불분명하기 때문에 나는 이것에 대해 완전히 틀릴 수 있습니다. 이것은 파일 시스템 내의 블록에 대한 최종 옵토 마이닝 된 쓰기 작업 전에 오버 프로비저닝 공간이 일시적으로 사용되는지 궁금합니다. 물론 파일 시스템 내에서 동적 오버 프로비저닝에 대한 Trim의 기여는 이미 사용 가능한 공간에 있으므로 직접 쓸 수 있기 때문에 일시적이지 않습니다. 그것은 적어도 내 이론이다. 아마도 파일 시스템에 대한 나의 이해가 잘못 되었습니까? 이것에 대해 자세히 설명하는 리소스를 찾을 수 없습니다.