내가 이해하는 바는 "요청 시 제로 채우기"라는 것입니다. 이는 파일 시스템이 파일 할당에 데이터를 쓰지 않고 단지 ZFOD 범위만 제공하며 애플리케이션이 데이터 읽기/쓰기를 시도할 때 데이터를 0으로 채운 다음 읽기/쓰기를 수행한다는 의미입니다.원천].
내 질문은 다음과 같습니다
- 위의 이해가 정확합니까?
- 단지 데이터를 할당하지 않는다면 이것이 취약점이라는 뜻입니까?
답변1
다음 두 가지를 고려해야 합니다.
- 데이터에 공간이 할당되었는지 여부
- 실제 데이터가 기록되었는지 여부.
파일에 데이터가 없고 파일에 할당된 공간이 없으면 파일을 읽으려고 할 때 파일 끝 표시를 받게 됩니다. 쓰기를 수행하는 경우 파일 시스템은 쓰기 시 공간을 할당해야 합니다. 즉, 할당할 여유 디스크 공간이 없으면 ENOSPC 오류로 인해 쓰기 작업이 실패할 수 있습니다.
희소 파일의 구멍에는 할당된 공간이 없으며 파일의 해당 부분을 읽으려고 하면 모두 0인 데이터를 얻게 됩니다. 파일의 해당 부분이 기록되면 파일 시스템은 쓰기 작업 중에 해당 부분에 공간을 다시 할당해야 하므로 디스크가 가득 차면 ENOSPC 오류와 함께 쓰기 작업이 실패할 수 있습니다.
ZFOD 범위는 명목상 파일에 할당되지만 데이터는 아직 기록되지 않았습니다. 읽으면 모두 0이 되고, 쓰면 공간이 이미 할당되어 있으므로 ENOSPC 오류 조건이 발생할 위험이 없습니다.
마지막으로 일반적인 데이터 범위가 있습니다. 읽으면 실제 데이터가 반환되고, 쓰면 기존 데이터가 새 데이터로 대체됩니다.
즉, ZFOD 범위는 애플리케이션이 대용량 파일을 할당하고 모든 파일을 즉시 사용하지 않고 필요할 때 공간을 사용할 수 있는지 확인해야 하는 상황에 최적화되어 있습니다. SSD 스토리지의 경우 블록에서 기존 데이터를 지우는 것이 가장 느린 작업이므로 ZFOD 익스텐트는 시스템이 초기에 ZFOD 익스텐트로 할당하여 대규모 데이터 익스텐트를 빠르게 생성할 수 있게 해줍니다. 그러면 파일 시스템이 실제 삭제를 수행하고 0으로 채울 수 있습니다. 실제로 사용되는 모든 블록.
SSD 스토리지를 사용하여 가상 머신 디스크 이미지 등을 저장하는 경우 ZFOD 확장을 통해 실제 디스크 블록을 삭제해야 하는 횟수를 최소화하여 SSD의 수명을 늘릴 수 있습니다.