데이터가 솔리드 스테이트 디스크에 기록 될 때 발생 하는 일은 매우 복잡하고 기본 기술에 의존하기 때문에 여러 기사 ( 여기서 좋은 요약 )에 해당합니다. 짧은 이야기는 SSD는 일반적으로 메모리에 0 비트를 쓸 수 없다는 것입니다. 대신 메모리의 전체 섹션을 제로화 (삭제) 한 다음 데이터를 쓰면 그 후에 데이터를 저장할 수 있습니다. 일반적으로 요즘에는 512 바이트의 블록 을 쓰지만 페이지를 지 웁니다. 8 블록 는 4096입니다. 이것은 각 쓰기 / 삭제주기가 메모리의 물리적 마모를 유발하고 메모리가 결국 마모되어 SSD를 매우 다르게 만든다는 사실 자기 HDD를 회전시키는 것보다.
SATA 드라이브 (및 AFAIK SAS 드라이브)는 한 섹터에서 다른 섹터로 데이터를 복사하는 기본 명령을 구현하지 않습니다. (또는 SATA 또는 SAS 사양에서 요구하는 사항이 하나도 없으므로 OS는 사용 가능한 명령을 신뢰할 수 없습니다.) 따라서 파티션을 가로 지르는 파일 복사는 하나의 드라이브 섹터에서 호스트 메모리로 데이터를 읽은 다음 쓰기를 포함합니다. 다른 섹터의 드라이브로 다시 출력됩니다.
OS에 관한 한, 드라이브는 일련의 번호가 지정된 논리 섹터이며 섹터에서 읽고 섹터에 쓰면됩니다. OS가 드라이브에 섹터를 다시 매핑하도록 지시 할 수 없습니다.
또한 파일 시스템 (HFS +, NTFS, ext3 등)은 일련의 논리 블록에 순서를 부과하는 일련의 데이터 구조입니다. 이러한 데이터 구조는 "파일", "파일 이름", "디렉토리", "권한"등을 구현합니다. 따라서 한 디렉토리에서 다른 디렉토리로 파일을 이동할 때 파일이 복사되지 않습니다. 파일이있는 디렉토리를 나타내는 파일 시스템 데이터 만 업데이트됩니다.
파티션 의 개념은 단일 파일 시스템이 요구하는 드라이브의 논리 섹터 세트라는 것입니다. 이에 대한 파일 시스템은 파일 시스템이 파티션 외부의 섹터에 액세스 할 수 없다는 것입니다. 대체로 이것은 안전 기능이지만 파일 시스템의 데이터 구조는 파일 시스템 소유권 하에서 드라이브의 모든 섹터에 대한 계정을 중심으로 구축되어 있으며 섹터를 추가하거나 제거하는 것이 쉽지 않다는 사실에서 나옵니다. 그 구조에. 그렇기 때문에 파티션 크기를 조정하기 위해 특수 루틴을 실행해야하고 파일 시스템이 연속적인 섹터 세트에서 실행해야하는 이유도 있습니다.
따라서 한 파일 시스템에서 다른 파일 시스템으로 섹터를 전송하는 것처럼 파일 사본을 구현하는 것은 비현실적이고 위험합니다. 회전하는 자기 드라이브에서는 드라이브가 불량 섹터를 예외로 만들지 만 일반적으로 연속 번호가 매겨진 읽기 및 쓰기 속도를 최적화하는 방식으로 섹터를 물리적으로 배치하기 때문에 성능 악몽이 될 수 있습니다. 부문.
또한, 2 개의 파일 시스템이 디스크에 파일 데이터를 같은 방식으로 저장하지 않을 수 있습니다. 즉, 스왑 섹터는 실용적이더라도 작동하지 않습니다. NTFS와 같이 파일 시스템 유형이 완전히 동일한 경우에도 암호화 또는 압축을 사용하고 다른 하나는 데이터를 암호화하지 않지만 다른 키를 사용하여 암호화 할 수 있습니다. 파일의 데이터가 디스크에 저장된 것과 정확히 일치 할 필요는 없으며, 저장해야하는 모든 데이터는 가역적 인 데이터 변환이므로 파일 시스템은 다음 작업을 수행하여 파일의 데이터를 가져올 수 있습니다. 디스크의 데이터. 따라서 두 파일 시스템이 정확히 동일한 변환을 사용하지 않는 경우 단순히 섹터를 바꾸는 것만으로는 파일 데이터 전송의 목표를 달성 할 수 없습니다.
이러한 모든 이유 때문에, OS 기록기 및 파일 시스템 기록기가 SSD의 파티션 간 이동을 최적화하는 기능을 구현하기에는 너무 적은 이득을 얻기에는 너무 많은 작업이 필요합니다. 따라서 모든 파티션 간 이동은 읽기 및 쓰기가됩니다.
SSD 내부에서는 약간 다른 이야기입니다. OS가 드라이브에 데이터를 한 곳에서 다른 곳으로 복사하고 있다고 말하지 않았지만 SSD 쓰기는 너무 비싸고 복잡하기 때문에 SSD 컨트롤러는 쓰기를 최소화하기 위해 많은 작업을 수행합니다. 일부 SSD는 스토리지에 기록되는 섹터가 이미 저장된 섹터와 일치하는 시점을 감지하여 물리적 드라이브를 복사하지 않고 2 개의 다른 논리 섹터에 맵핑하는 것으로 표시합니다. 내부 드라이브 레벨에서 OS는 할 수 없었습니다.
그러나 그것에 의존하지 마십시오.
mv
가 추상화 계층을 크게 혼합하여 협력해야합니다.