이 질문에 대한 답을 찾을 수 없어서 여기에 질문을 드리고 싶습니다.
/etc/fstab
ext4 에서 mount 명령을 사용할 때 discard
SSD에서 TRIM을 활성화하는 옵션을 추가합니다. 마찬가지로 이 discard
옵션은 다음과 같이 btrfs 볼륨에서 TRIM을 활성화합니다.btrfs.wiki.kernel.org. Btrfs는 기본적으로 쓰기 중 복사를 활성화해야 하며, 이 경우 삭제 옵션이 쓰기 중 복사를 효과적으로 비활성화합니까?
TRIM이 이전 버전의 파일이 포함된 모든 블록을 제거한다고 생각합니다. 쓰기 중 복사가 여전히 작동하는 경우 블록이 0으로 채워지지 않으면 장기적으로 SSD 성능이 저하되지 않습니까?
답변1
기록 중 복사는 할당된 블록을 덮어쓰지 않는다는 의미입니다. 대신 파일의 데이터 블록이 변경되면 새 블록에 새 데이터가 할당되고 파일은 원래 블록이 아닌 새 블록을 참조하도록 업데이트됩니다. . 이전 블록은 파일 시스템의 어떤 부분에서도 더 이상 참조되지 않으면 해제됩니다. 기록 중 복사는 블록이 해제되지 않는다는 의미는 아닙니다.
이 discard
옵션은 단순히 Btrfs에게 사용 가능한 블록을 기본 장치에 보고하도록 지시합니다. Btrfs는 이미 어떤 블록이 사용 가능한지 추적하고 있으며 이 정보를 기본 장치에 보고해도 쓰기 시 복사 동작에 영향을 주지 않습니다.
답변2
기록 중 복사는 더 이상 사용되지 않는 블록에 대한 참조를 유지한다는 의미는 아닙니다. 블록 자체는 여유 공간이 되며(다른 스냅샷에서 사용하지 않는 한), 내가 아는 한, 그 시점부터 btrfs는 블록이 현재 이전 콘텐츠를 보관하고 있는 파일에 속해 있다는 사실조차 알지 못합니다.
당신 말이 맞습니다. 폐기하면 더 이상 사용되지 않는 블록(예: 이전 콘텐츠)을 복구할 수 없게 됩니다.
무엇을 기대하시는지 모르겠지만 실제로 새 버전이 손상된 경우 파일을 이전 버전으로 복원할 수 있는 간단한 btrfs 명령이 있다고 확신하며 운이 좋게도 이전 콘텐츠가 여전히 떠다니고 있습니다. 무료 버전의 중간 공간 풀에서는 그대로 유지됩니다. Google에서 검색한 결과 이 주장을 뒷받침할 소스를 찾지 못했기 때문에 btrfs는 이를 결코 제공하지 않는 것 같습니다.
따라서 기록 중 복사는 그 자체로는 데이터 복원 기능이 아니며 이전 콘텐츠 삭제 취소 가능성을 높이는 구현 세부 사항이지만 삭제를 사용하는 경우에는 그렇지 않습니다.